试题三(共15分)
阅读以下说明和C代码,填补C代码中的空缺(1)~(5),将解答写在答题纸的对应栏内。
【说明】
某市在进行市长选举,该市共分为M个选区(1 现已将选票数据存入文本文件data.txt,该文件内容格式如下:共有M行,每行N+l个整数,第一个整数为选区编号,随后为N个候选者在该选区所得票数。 下面的程序先从文件中读入选票数据存入二维数组data,然后完成下列功能: a.计算并显示每个竞选者获得的选票数及占总选票数的百分比; b.如果任一竞选者获得的选票数超过总选票数的50%,则显示该竞选者获胜; c.如果没有竞选者获得总选票数的50%以上,则显示两位得票最高的竞选者需再进行决选。 在下面的程序代码中,竞选者A的编号为l,竞选者B的编号为2,以此类推。 【C代码】 #include #include #defineM 5 /*选区数*/ #define N 4 /*竞选者人数*/ int main(int argc,char argv[]) { FILE *fin; int data[M+l][N+1]; /*data[] [0]存放选区编号,data[M][j]存放j号竞选者得票总数*/ int MAXP1,cdl; /*MAXP1、cdl存放得票最多者的票数和竞选者编号*/ int MAXP2,cd2; /*MAXP2、cd2存放得票次多者的票数和竞选者编号*/ int i,j,totalP; /*totalP存放总票数*/ fin= fopen(“data.txt”,“r”); if(!fin) return-1; 1=0; j=0; while (!feof(fin)){ /*从文件读入数据*/ fscanf(fin,"%d",&data[i] [j]); (1) ; if(j>N) {j=0;i++;) } fclose(fin); totalP=0;MAXPl=0;MAXP2=0;cdl=0;cd2=0; for(j=l;j data[M][j]= (2) ; /*设置j号竞选者得票总数初始值*/ for(i=0;i data[M][j]+=data[i][j]; if(data[M][j]>MAXPl){ (3) : cd2= cdl; MAXPl=data[M][j]; cdl =j; } else if(data[M][j]>MAXP2) {MAXP2= data[M][j]; cd2 =j;) (4); /*计算总票数*/ } for(j=1;j printf("Candidate-%c: %d ",j+'A'-1,data[M][j]); printf("%.21f\n" ,(double)data[M] [j]/totalP); } printf("\n"), if( (5) >0.5) /*判断得票数最多者的得票率*/ printf("Winner: Candidate-%c\n",cdl+'A'-l); else printf("Result:Candidate-%c PK Candidate-%c\n",cdl+'A'-l,cd2+'A'-l); system("pause"); return0; }
订单号:
遇到问题请联系在线客服
订单号:
遇到问题请联系在线客服