当前位置: 首页 > article >正文

C语言复习题

请完成以下题目。注意,请勿直接调用ANSI C 函数库中的函数实现。
a)请编写一个 C 函数,该函数给出一个字节中被置 1 的位的个数,并请给出该题的至少一个不同解法。(第二、三种解法范围(0-127)
unsigned int TestOne1(char s)
{
    unsigned int num = 0,val;
    for(int i = 0; i < 8; i++)
    {
        val = s >> i;
        val &= 0x01;
        if(val)
        {
            num++;
        }
    }
    return num;
}
unsigned int TestOne2(char s1)
{
    unsigned int num = 0,val;
    int chu = 99,yu;
    int s = s1;
    while(chu)
    {
        chu = s/2;
        yu = s % 2;
        if(yu != 0)
        {
            num++;
        }
        s = chu;
    }
    return num;
}
​

unsigned int TestOne3(char s)
{
    unsigned int num = 0,val;
    while(s)
    {
        if((s & 0x01) != 0)
        {
            num++;
        }
        s = s >> 1;
    }
    return num;
}
b)请编写一个 C 函数,该函数将给定的一个字符串转换成整数。
int str_int(char *str)
{
    int num = 0;
    while(*str != '\0')
    {
        int n = *str - 48;
        num = num*10 + n;
        str = str + 1;
    }
    return num;
}
c)请编写一个 C 函数,该函数将给定的一个整数转换成字符串。
void int_str(int num,char* pval)
{
    char str[100];
    int i,j;
    int val0 = 0;
    int val1 = 0;
    
    val0 =  num;
    for(i = 0;i < 100;i++)
    {
        val1 = val0 % 10; // 取余
        val0 = val0 / 10; // 取整
        str[i] = val1 + 48; // 数字转字符
        if(val0 < 10)
        {
            i++;
            str[i] = val0 + 48;
            break;
        }  
    }
    for(j = 0;j <= i;j++)
    {
        pval[j] = str[i-j];
    }
    pval[j] = '\0';
}
d)请编写一个 C 函数,该函数将一个字符串逆序。
char *Reverse1(char *str)
{
    char *ptr1;
    char *ptr = ptr1;
    int i=0;
    int len = strlen(str);
    while(len--)
    {
        *ptr1 = str[len];
        ptr1 = ptr1 + 1;
    }
    return ptr;
    
}
char *Reverse2(char *str)
{
    char *ptr1;
    char *ptr = ptr1;
    int i=0;
    while(str[i]!='\0')
    {
        i++;
    }
    while(i--)
    {
        *ptr1 = str[i];
        ptr1 = ptr1 + 1;
    }
    return ptr;
}
e)请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
int Search(char *Startptr,int n,char ch)
{
    for(int i=0;i<n;i++)
    {
        if(*(Startptr + i) == ch)
        {
            return i;
        }
    }
    return -1;
}
f)请编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,该字符串是由同一字符组成的。
int maxlen(char *str)
{
    int max = 0;
    int i = 1;
    char ch1,ch2;
    ch1 = str[0];
    while(*str != '\0')
    {
        if(*str != ch1)
        {
            i = 1;
        }
        if(max < i)
        {
            max = i;
            ch2 = *str;
        }
        ch1 = *str;
        i++;
        str += 1;
    }
    return max;
}


http://www.kler.cn/news/340028.html

相关文章:

  • Unity中实现预制体自动巡逻与攻击敌人的完整实现指南
  • 基于贝叶斯决策的 CAD 程序设计方案
  • [ComfyUI]超级简单的 Flux 扩图方案,简单但好用!
  • nginx做负载均衡的策略有哪些和模块
  • 新一轮 Web3 游戏季,Final Glory成捕获全新市场红利的入口
  • 基于卷积神经网络的书法字体识别系统,resnet50,mobilenet模型【pytorch框架+python】
  • 第 21 章 一条记录的多幅面孔——事务的隔离级别与 MVCC
  • C++ static静态
  • 怎么避免在pod产生-派生炸弹(Fork Bomb)? k8s(kubernetes)
  • 使用java操作浏览器的工具selenium-java和webdriver下载地址
  • CMake 教程跟做与翻译 2
  • Sealos Devbox 发布,珍爱生命,远离 CI/CD
  • React生命周期以及Hook
  • 修改Docker的默认存储路径
  • 01_23 种设计模式之《简单工厂模式》
  • (实习日报)广告技术平台实习工作日报 9月29号-10月7号(国庆快乐)
  • vue3+vant4+微信公众号实现图片上传和扫一扫功能
  • 『网络游戏』动态界面制作创建角色UI【02】
  • Dubbo常见的几个八股题
  • 前端基础面试题·第四篇——Vue(其二)