sse 哈工大 C 语言编程练习 373 月 9 日收获数字的ASCII 码的大小与数字的大小一致。1. 计算整数的位数Q466题目描述程序计算整数中数字的位数。输入格式要求%d提示信息Enter a nonnegative integer:输出格式要求The number has %d digit(s).\n程序运行示例Enter a nonnegative integer: 60 The number has 2 digit(s).#includestdio.hintmain(){intn,c1;// n:输入的整数c:位数计数器printf(Enter a nonnegative integer:);scanf(%d,n);// 循环除以 10统计位数while(1){if(n/10!0){// 如果还能继续除c;// 位数加 1n/10;// 去掉最后一位}else{break;}}printf(The number has %d digit(s).\n,c);return0;}2. 删除字符串中的指定字符Q1687题目描述用字符指针作函数参数编程实现如下功能在字符串中删除与某字符相同的字符。提示信息Input a string:Input a character:输入格式要求%s输出格式要求Results:%s\n程序运行示例 1Input a string:hello,world! Input a character:o Results:hell,wrld!#includestdio.hintmain(){charstr[1000],*p,c,*now;printf(Input a string:);gets(str);// 输入字符串printf(Input a character:);scanf(%c,c);// 输入要删除的字符pstr,nowstr;// p 指向原位置now 指向新位置while(*now!\0){if(*pc){// 如果要删除的字符p;// 跳过该字符}*now*p;// 将后面的字符前移p;now;}*now\0;// 添加字符串结束符printf(Results:%s,str);return0;}3. 统计出现次数最多的字符Q1392题目描述程序改错。以下程序的功能是统计字符数。判断一个由’0’ ~ 9’这 10 个字符组成的字符串中哪个字符出现的次数最多。输入数据第一行是测试数据的组数 m每组测试数据占 1 行每行数据不超过 1000 个字符且非空。输出要求m 行每行对应一组输入包括出现次数最多的字符和该字符出现的次数。如果有多个字符出现的次数相同且最多那么输出 ASCII 码最小的那一个。改正后的代码#includestdio.h#includestring.hintmain(){intcases,sum[10],i,max;charstr[1000];scanf(%d,cases);// 修正添加取地址while(cases0){scanf(%s,str);// 修正使用%s 读取字符串// 初始化计数器for(i0;i10;i)sum[i]0;// 统计每个数字字符出现的次数for(i0;istrlen(str);i)sum[str[i]-0];// 修正减去字符0// 找出出现次数最多的字符max0;for(i1;i10;i)if(sum[i]sum[max])maxi;// 修正使用而不是// 输出结果printf(%c %d\n,max0,sum[max]);// 修正输出 sum[max]cases--;}return0;}主要错误修正scanf(%d, case)→scanf(%d, cases)缺少取地址符scanf(%c, str)→scanf(%s, str)应该用%s 读取字符串for(i 0; ...)→for(i 0; ...)初始化错误sum[str[i] - 0]→sum[str[i] - 0]应该减去字符’0’sum[i] sum[max]→sum[i] sum[max]保证输出 ASCII 码最小的printf(%c %d\n, max 0, sum[0])→printf(%c %d\n, max 0, sum[max])应该输出 sum[max]4. 创建并输出一维数组Q1332题目描述创建并输出一个一维数组含 20 个元素数组元素的值分别是下标的 3 倍多 2。输出格式要求%3d程序的运行示例2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59#includestdio.hintmain(){// 循环 20 次输出下标*32 的值for(inti0;i20;i){printf(%3d,i*32);}return0;}5. 判断回文字符串Q2237题目描述编程判断输入的一个字符串是否是回文。所谓回文字符串就是左读和右读都一样的字符串。例如abcba就是一个回文字符串。输入提示信息Input a string:\n输入格式gets()判断是回文的输出提示信息This string is a plalindrome.判断不是回文的输出提示信息This string is not a plalindrome.程序运行示例 1Input a string: abcba↙ This string is a plalindrome.程序运行示例 2Input a string: friend↙ This string is not a plalindrome.#includestdio.h#includestring.hintmain(){charstr[1000];printf(Input a string:\n);gets(str);// 输入字符串inti0,jstrlen(str)-1,flag1;// 双指针从两端向中间移动比较对应字符while(ij){if(str[i]!str[j]){// 如果对应位置的字符不相等printf(This string is not a plalindrome.);return0;}i;// 左指针向右j--;// 右指针向左}// 如果所有对应位置都相等则是回文printf(This string is a plalindrome.);return0;}