问题 问答题

阅读以下说明和C代码,填补C代码中的空缺(1)~(5),将解答写在答题纸的对应栏内。

【说明】某市在进行市长选举,该市共分为M个选区(1现已将选票数据存入文本文件data.txt,该文件内容格式如下:共有M行,每行N+1个整数,第一个整数为选区编号,随后为N个竞选者在该选区所得票数。下面的程序先从文件中读入选票数据存入二维数组data,然后完成下列功能:a.计算并显示每个竞选者获得的选票数及占总选票数的百分比;b.如果任一竞选者获得的选票数超过总选票数的50%,则显示该竞选者获胜;c.如果没有竞选者获得总选票数的50%以上,则显示两位得票最高的竞选者需再进行决选。在下面的程序代码中,竞选者A的编号为1,竞选者B的编号为2,以此类推。【C代码】

答案

参考答案:

(1)j++,或++j,或其等价表示

(2)0

(3) MAXP2= MAXP1

(4) totalP+=data[M][j],或totalP+_totalP+ data[M][j],或其等价表示

 (5) (double)MAXPl/totalP,或(float)MAXPl/totalP,或其等价表示 其中,将(double)或(float)写在totalP之前亦可

解析:

本题考查C程序设计基本能力。  题目中涉及的知识点主要有数组、文件、循环和类型转换,分析程序时首先要明确各个变量(或数组元素)所起的作用,并以语 句组分析各段代码的功能,从而完成空缺处的代码填充。  根据题目描述,首先将文件中的数据读入数组data。显然,i和j分别起行号、列号的作用。行号 i应在一行的数据都读入后增加1,而列号j则每读入一个数据就要增加1,因此空(1)处应填写"j++"或其等价形式的语句。将数据读入数组data后, 以题中的数据为例,data数组的内容可表示如下:     由于data[M][i]存放i号竞选者的得票总数,data[][0]存放的是选区编号,因此data[M][0]不用。  以上表为例,需要将 data[0][1]、data[1][1]、...、data[M-1][1]加起来存入data[M][1],因此,空(2)处应填入0,以设置 data[M][1]、data[M][2]、…data[M][N]的初始值。  空(3)所在的语句组用于找出得票数最多的竞选者,此时,因此之前的 最多票数(MAXP1)将成为次多数(MAXP2),即空(3)处填入"MAXP2= MAXP1"。  空(4)处为计算总票数的语句,根据说明,应填入"totalP+=data[M][j]"或其等价形式。  空(5)处为计算票数最 多者得票率的表达式,根据说明是将MAXP1除以totalP,需要注意的是:MAXP1和totalP都是整数且MAXP1小于totalP,因此应至 少对其中的一个数值进行整数到实数的类型转换,否则其结果为0,因此,空(5)处应填入"(double)MAXPl/totalP"或其等价形式。

单项选择题 B型题
单项选择题