题库 题库

【简答题】

试题二(共 15 分)
  阅读以下说明和 C 函数,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
  某单位准备进行一次选举,对指定的 n 名(n<80)候选人进行投票。为了简化选举工 作,事先印制了写有这 n 名候选人姓名的选票,投票者只需将选中者名下的圆圈涂黑即可。规定每张选票上被涂黑的圆圈数不得超过 3 个,也不得少于 1 个,否则视为无效选票。投票结束后,所有选票经计算机扫描处理,形成了描述选票状态的文本文件。例如,n=8 时所形成的文件如下:
  01011000
  10010100
  10011000
  11111111
  00000000
  00111000
    …
  其中,每行表示一张选票的数据,每列代表一位候选者的得票情况。第 i 行第 j 列 为 1,表示第 i 张选票上投了第 j 名候选人 1 票。
  函数 statistic( )的功能是读入选票数据,并统计每位候选者的得票数,函数返回 有效选票数。
[C 函数]
  int statistic(FILE *fp,int candidate[],int n)
  { /* 从文件中读入选票数据,n 为候选人数量(n<80),从有效选票中统计每位候选者的得票数并存入 candidate[],函数返回有效选票数*/
   char str[80];   /* str 保存读入的一张选票数据 */
   int i,tag = 0;  /* tag 用于判断每张选票是否有效 */
   int q = 0; /* q 用于计算有效选票数 */
   for(i = 0; i < n; i++)
   candidate[i] = 0;
   while ( (1) ) {
    fgets(str,80,fp); /* 读入一张选票数据 */
    for(tag = 0,i = 0; (2) ; i++)
     if (str[i] == '1') tag++;
     if ( (3) ){  /* 若是有效选票,则进行统计 */
       (4) ;
      for (i = 0; i < n; i++)
       if (str[i] == '1')  (5) ;
     }
   }
   return q;
  }  /* statistic */

参考答案

(1) !feof(fp)
(2) i < n && str[i]!='\0'
(3) tag > = 1 && tag <= 3
(4) q++
(5) candidate[i]++

相关试题