请补充函数fun(),该函数的功能是:从‘a’到‘z’统计一个字符串中所有字母字符各自出现的次数,结果保存在数组alf中。注意:不区分大小写,不能使用字符串库函数。 例如,输入:“A=abc+5*c”,结果为:a=2, b=l,c=2。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数run的横线上填入所编写的若干表达式或语句。 试题程序: #include<conio.h> #include<stdio.h> #define N 100 void fun(char *tt,int alf[]) { int i char *p=tt; for(i=0;i<26;i++) 【1】 ; while(*p) { if(*p>=’A’&&*p<=’z’) 【2】 ; if(*p>=’a’&&*p<=’Z’) alf[*p-’a’]++; 【3】 ; } } main() { char str[N]; char a=’a’; int alf[26],k; clrscr(); printf("\nPlease enter a char string:"); scanf("%s",str); printf("\n**The original string**\n"); puts(str); fun(str,alf); printf("\n**The number of letter**\n"); for(k=0;k<26;k++) { if(k%5==0) printf("\n"); printf("%c=%d",a+k,alf[k]); } printf("\n"); }
参考答案:[1] alf[i]=0 [2] *p+=32 [3] p++
解析: 填空1:数组alf[26]用来存放字母字符出现的次数,在使用之前需要清零。填空2:题目要求不区分大小写,所以可以先将所有的大写字母都转换为对应的小写字母,然后一并记录出现的次数。将大写字母转换为对应的小写字母,只需将ASCII码加上32就可以了。填空3:指针p指向字符串tt,通过p自加1来移动指针,访问字符串中的所有字符。