以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数, num[1]中统计字母B的个数,其他依次类推。用#号结束输入,请填空。 #include <stdio.h> #include <ctype.h> mai

admin2009-06-20  40

问题 以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数, num[1]中统计字母B的个数,其他依次类推。用#号结束输入,请填空。
   #include  <stdio.h>
   #include  <ctype.h>
   main()
   {  int  num[26]={0},i;    char  c;
      while((【  】)!=’#’)
      if(isupper(c))  hum [c-’A’ ]+=【  】;
      for(i=0; i<26; i++)
      printf("%c: %d\n ",i+’A’, num);

选项

答案(16) c=getchar()  (17)1

解析 本题考查的知识点是:字符的输入和统计算法。根据题意,程序需要不断接收从终端输入的字符,如果碰到’#’字符则结束。前一空后面正好是判断是否为’#’字符,而后面的汀语句却判断c是否为大写字母,故不难得知该处应填的表达式必须将一个字符从终端输入到变量c中,且整个表达式的值为刚输入的字符。所以应填c=getchar()。接下来的if语句首先通过库函数isupper()判断c是否为大写字母,是的话将num[c-’A’]加上一个值。根据题意,我们需要将字母A的个数统计到num[0]中、字母B的个数统计到num[1]中、……假设c中现在是字母A的话,那c-’A‘正好等于0,也就是说,只要在后一空处填入1,那就实现了当c为A时 nam[0]增1的题目要求了。而且,这样的话其他字符也同样能被统计到num数组的相应元素中去。故后一空应填1。
转载请注明原文地址:https://jikaoti.com/ti/k5I0FFFM
0

最新回复(0)