下列给定函数中,函数fun()的功能是:统计字符串中各元音字母(即A,E,I,O,U)的个数。注意:字母不分大小写。例如,输入THIs is a boot,则应输出是1 0 2 2 0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改

admin2013-06-12  30

问题 下列给定函数中,函数fun()的功能是:统计字符串中各元音字母(即A,E,I,O,U)的个数。注意:字母不分大小写。例如,输入THIs is a boot,则应输出是1 0 2 2 0。
   请改正程序中的错误,使它能得出正确的结果。
   注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
   试题程序:
   #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 =0;
     for{;*s;s++)
       { i=-l;
   /*************found**************/
         switch(s)
            { case ’a’: case ’A’:{i=0;break;}
              case ’e’: case ’E’:{i=1;break;}
              case ’i’: case ’I’:{i=2;break;}
              case ’o’: case ’O’:{i=3;break;}
              case ’u’: case ’U’:{i=4;break;}
           }
        if(i>=0)
        num++;
        }
   }
   main ( )
   { char s1[81]; int num1[5], i;
    clrscr ();
    printf("\nPlease enter a string: ");
           gets (s1);
    fun{s1, num1);
    for(i=0;i<5;i++) printf("%d",num1);
        printf ("\n");
}

选项

答案(1)错误: fun(char *s, int num[5]) 正确: void fun(char *s, int hum[5]) (2) 错误: num[i]=0; 正确: num[k]=0; (3) 错误: switch(s) 正确: switch(*s)

解析 switch语句说明:
   (1)switch后的表达式,可以是整型或字符型,也可以是枚举类型的。在新的ANSIC标准中允许表达式的类型为任何类型。
   (2)每个case后的常量表达式只能是常量组成的表达式,当switch后的表达式的值与某一个常量表达式的值一致时,程序就转到此case后的语句开始执行。如果没有一个常量表达式的值与swish后的值一致,就执行default后的语句。
   (3)各个case后的常量表达式的值必须互不相同,不然的话程序就不知该跳到何处开始执行。
   (4)各个case的次序不影响执行结果,一般情况下,尽量使用出现机率大的case放在前面(为什么,等学到《数据结构》就知道了)。
   (5)在执行完一个case后面的语句后,程序流程转到下一个case后的语句开始执行。千万不要理解成行完一个case后程序就转到switch后的语句去执行了。  
   在本例中,其他错误都比较简单,而且我们在前面已经介绍过了。
转载请注明原文地址:https://jikaoti.com/ti/r2n0FFFM
0

最新回复(0)