C语言字符串问题
发布网友
发布时间:2022-04-29 22:59
我来回答
共2个回答
热心网友
时间:2022-06-25 05:56
#include "stdio.h"
int main(int argc,char *argv[]){
char str[102],l[26],i;
printf("Please enter a string...\n");
fgets(str,101,stdin);
for(i=0;i<26;l[i++]=0);
for(i=0;str[i];i++)
if(str[i]>='a' && str[i]<='z' || str[i]>='A' && str[i]<='Z')
l[(str[i]|32)-97]++;
printf("The results are as follows:\n");
for(i=0;i<26;i++)
if(l[i])
printf("%c: %d\n",i+'A',l[i]);
return 0;
}
运行样例:
热心网友
时间:2022-06-25 05:56
以下是(从VB来的)我对该程序段的理解:
cnt[ i ] 对ASCII码的 i 进行计数,str[ i ] 储存第 i 个字符的ASCII码;
11~14行大写转小写,15~18行计数,20~24输出。
问题:1.每行字符串长度不大于100,cnt[ ] 的数组下标为什么要输入200;
2.字母的ASCII码范围是65~90,97~122,那么str[ ] 的下标也不对;
3.既然小写字母的ASCII码从97开始,第20~24行输出部分 i 为什么要从90~200。
由于代码的实现远不止一种可能,所以检查代码正确性只会挑其中一部分参数进行检查,在程序运行结果相同的情况下,还是应该写得严谨一点。