问答题
下列给定函数中,函数fun的功能是:统计字符串中各元音字母(即A、E、I、O、U)的个数。注意:字母不分大小写。 例如,输入”THls is a boot”,则应输出是1 0 2 2 0。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include < stdlib.h >#include < conio.h >#include < stdio.h >/*********found*********/fun (char * s, int num[ 5 ] ){ int k, i=5;for(k=0,k < i;k++)/*********found*********/ num[i] =0;/*********found*********/ switch (s) { case'a': case'A': {i = 0 ;break; } case 'e': case 'E' : {1 =1;break; } case 'i': case 'I': {1 =2;break; } case 'o': case 'O': {1 =3;breakf } case 'u': case 'U': {1 =4;break; } {i=4 ; break;} } if(i >=0) num[i]++; }}void main(){char s1[81];int numl[5],i; system("CLS"), printf("/nPlease enter astring:"); gets(s1); fun(s1,num1); for(i=0;i < 5;i++) printf("%d",numl[i]); printf("/n");}
【正确答案】正确答案:(1)void fun(char *s, int num[5]) (2)num[k] =0; (3)switch(*s)
【答案解析】解析:switch语句说明如下: (1)switch后的表达式,可以是整型或字符型,也可以是枚举类型。在新的ANSIC标准中允许表达式的类型为任何类型。 (2)每个case后的常量表达式只能是由常量组成的表达式,当switch后表达式的值与某一个常量表达式的值一致时,程序就转到此case后的语句开始执行。如果没有一个常量表达式的值与switch后的值一致,就执行default后的语句。 (3)各个case后的常量表达式的值必须互不相同。 (4)各个case的次序不影响执行结果,一般情况下,尽量将出现概率大的case放在前面。 (5)在执行完一个case后面的语句后,程序会转到下一个case后的语句开始执行,因而必须使用break语句才能跳出。