填空题 给定程序中,函数fun的功能是:找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。
例如,形参s所指的字符串为:abcAbsmaxless,程序执行后的输出结果为:
letter "a" : 3 times
letter "s" : 3 times
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void fun(char *s)
{int k[26]={0},n,i,max=0;char ch;
while(*s)
{if(isalpha(*s)){
/**********found**********/
ch=tolower( 1);
n=ch-"a";
/**********found**********/
k[n]+= 2;
}
s++;
/**********found**********/
if(max<k[n])max= 3;
}
printf("/nAfter count:/n");
for(i=0;i<26;i++)
if(k[i]==max)printf("/nletter "%c":%dtimes/n",i+"a",k[i]);
}
main()
{char s[81];
printf("/nEnter a string:/n/n");gets(s);
fun(s);
}
【正确答案】
【答案解析】(1)*s (2)1 (3)k[n] [解析] 本题统计字符串中各字母的个数,建立了一个包括26个整型变量的数组,用来存储每个字母的个数。
填空1:isalpha函数的作用是判断当前字符是否为字母,tolower函数的作用是将当前字母转换为小写字母,所以应填*s。
填空2:把该字母出现的个数累加到指定的数组中,所以应填1。
填空3:max用来记录出现次数最高的字母的出现次数,如果当前该字母出现次数大于最大次数max,那么把该次数赋值给max,所以应填k[n]。