问答题 给定程序MODI1. C中函数fun的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。
例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio. h>
void fun (char *s, int num[5])
{ int k, i=5;
for (k=0; k<i; k++)
/**********found**********/
mum[i]=0;
for (; *s; s++)
{i=-1;
/**********found**********/
switch(s)
{case "a": case "A": {i=0; break;)
case "e": case "E": {i=1; break;}
case "i": case "T": {i=2; break;}
case "o": case "O": {i=3; break;}
case "u": case "U": {i=4; break;}
}
if(i>=0)
num[i]++;
}
}
main( )
{char s1[81]; int num1[5], i;
printf("/nplease enter a string:"); gets(s1);
fun(s1, num1);
for(i=0; i<5; i++) print; f("%d", num1[i]); printf("/n");
}
【正确答案】
【答案解析】num[k]=0 switch(*s) [解析] 本题中函数的功能是统计字符串中各元音字母(即A、E、I、O、U)的个数。其中,本题在while循环中采用switch-case条件判断字符串中的每一个字符并进行统计。
(1)第一个标识下的for循环过程是将num数组中的变量初始值设置为0,用来统计每一个元音字母出现的个数,for循环中的循环条件表达式中的变量是k,所以第二个标识下“num[i]=0;”改为“num[k]=0;”。
(2)第二个标识下的switch-case条件选择的功能应该是对s指针指向的字符串中的每一个字符进行判断,不应该是s的数组名,所以第三个标识下“switch(s)”改为“switch(*s)”。
[考点] switch分支语句、字符数组和字符串