c语言统计每个英文字母出现的次数,“输入一段英文字符串,统计每个英文字母出现的次数,要求英文字符串在程序中动态输入,统计不分英文字母的...

【题目描述】

试题三(共15分)

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

【说明】

某市在进行市长选举,该市共分为M个选区(1

B7BD665459744115BF44B84F10757A60.gif

现已将选票数据存入文本文件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;

}

【我提交的答案】:(1) j++;(2) data[M][j]=0;(3)(4)totoalIP+=data[M][j];(5)MAXPI/totalIP

【参考答案分析】:(1)j++,或++j,或其等价表示

(2)0

(3) MAXP2= MAXP1

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

(5) (double)MAXPl/totaIP,或(float)MAXPl/totalP,或其等价表示

其中,将(double)或(float)写在totalP之前亦可

【我的疑问】(如下,请求专家帮助解答)

请问第三个答案是什么意思啊?MAXP2=MAXP1:cd1=cd2;单冒号有这种用法吗?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值