欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > C语言复习题

C语言复习题

2024/10/24 20:20:17 来源:https://blog.csdn.net/m0_65146517/article/details/142769414  浏览:    关键词: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;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com