試題三(共15分) 
閱讀以下說明和C代碼,填補C代碼中的空缺(1)~(5),將解答寫在答題紙的對應(yīng)欄內(nèi)。 
【說明】 
某市在進行市長選舉,該市共分為M個選區(qū)(1
 
現(xiàn)已將選票數(shù)據(jù)存入文本文件data.txt,該文件內(nèi)容格式如下:共有M行,每行N+1個整數(shù),第一個整數(shù)為選區(qū)編號,隨后為N個候選者在該選區(qū)所得票數(shù)。 
下面的程序先從文件中讀入選票數(shù)據(jù)存入二維數(shù)組data,然后完成下列功能: 
a.計算并顯示每個競選者獲得的選票數(shù)及占總選票數(shù)的百分比; 
b.如果任一競選者獲得的選票數(shù)超過總票數(shù)的50%,則顯示競選者獲勝; 
c.如果沒有競選者獲得總選票數(shù)的50%以上,則顯示兩位得票最高的競選者需再進行決選。 
在下面的程序代碼中,競選者A的編號為1,競選者B的編號為2,以此類推。 
【C代碼】 
#include
#include
#define M 5      /*選區(qū)數(shù)*/ 
#define N 4      /*競選者人數(shù) */ 
int main(int argc, char argv[ ] ) 
{
FILE *fin;
int data[M+1] [N+1];
/*data[ ][0]存放選區(qū)編號,data[M][J]存放j號競選者得票總數(shù)*/
int MAXP1,cdl;      /*MAXP1、cd1存放得票最多者的票數(shù)和競選者編號*/
int MAXP2,cd2;      /*MAXP2、cd2存放得票次多者的票數(shù)和競選者編號*/
int i,j, totalP;        /*tatalp存放總票數(shù)*/
fin=fopen("data.txt","r");
if(!fin)return -1;
i=0;  j=0; 
while(!feof(fin)){                       /* 從文件讀入數(shù)據(jù) */ 
fscanf(fin,”%d”,&data[i][j]);
(1); 
if(j>N)  {j=0;i++;} 
} 
fclose(fin); 
totalP =0;MAXP1=0;MAXP2=0;cd1=0;cd2=0; 
for(j=1;j
for(i=0;i
if(data[M][j]>MAXP1)    {
(3); cd2=cd1;
MAXP1=data[M][j]; cd1=j; 
}
else
if(data[M][j]> MAXP2){ MAXP2=data[M][j];cd2=j;}
(4);                                       /* 計算總票數(shù) */ 
}
for(j=1;j
printf("%.2lf\n",(double)data[M][j]/totalP); 
} 
printf("\n"); 
if((5)>0.5)              /* 判斷得票數(shù)最多者的得票率 */
printf("Winner:Candidate-%c\n",cd1+'A'-1); 
else 
printf("Result : Candidate-%c PK Candidate-%c\n",cd1+'A'-1,cd2+'A'-1); 
system("pause"); 
return 0; 
}