问答题
对10个候选人进行选举,现有一个100条记录的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个候选人的选中情况,第二位表示第二个候选人的选中情况,依次类推。每一位内容均为字符“0”或“1”,“1”表示此人被选中,“0”表示此人未被选中,若一张选票选中人数大于5时被认为无效的选票则不作统计。给定函数ReadDat()的功能是把选票数据读入字符串数组XX。请编制函数CountRs()来统计每个候选人的选票数并把得票数依次存入yy[0]到yy[9]中,即第一个候选人的得票数存入yy[0]中,依次类推。最后调用函数WriteDat()把结果yy输出到文件OUT.DAT中。
注意:部分源程序存放在PROG1.C中。请勿改动主函数main()、读函数ReadDat()和输出函数WriteDat()的内容。
[试题程序]
#include
#include
char XX[100][11];
int yy[10];
int ReadDat(void);
void WriteDat(void);
void CountRs(void)
/*每一条记录的选票情况已作为字符串存入XX[i]为起始地址的存储单元内*/
/*例如,第10条记录的第一个候选人的选中情况的条件是if(xx[9][0]=’1’)*/
/*该提示仅供解题参考,考生也可用其他方法解题*/
void main()
int i;
for(i=0;i<10;i++)yy[i]=0;
if(ReadDat())
printf("选票数据文件IN.DAT不能打开!\007\n");
return;
CountRs();
WriteDat();
int ReadDat(void)
FILE *fp;
int i;
char tt[13];
if((fp=fopen("in dac","r"))==NULL)
return 1;
for(i=0;i<100;i++)
if(fgets(tt,13,fp)==NULL)return 1;
memcpy(xx[i],tt,10);
XX[i][10]=0;
fclose(fp);
return 0;
void WriteDat(void)
FILE *fp;
int i;
fp=fopen("out.dat","w");
fori=0;i<10;i++)
fprintf(fp,"%d\n",yy[i]);
printf("第%d个人的选票数=%d\n",i+1,yy[1]);
fclose(fp);
【参考答案】
void CountRs(void)
{int i,j,cnt; /*定义变量*/
for{i=0......
(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
点击查看答案&解析
<上一题
目录
下一题>
热门
试题
单项选择题
假设使用DIMENSION y(5)定义了一个一维数组y,下列赋值语句中正确的是( )。
A.y=8
B.y[6]=8
C.STORE 10 y[2],y[3],y[4]
D.y[3],y[4],y[5]=8
点击查看答案
单项选择题
运算结果是字符串“home”的表达式是( )。
A.LEFT("myhome",4)
B.RIGHT("hometown",4)
C.SUBSTR ("myhometown",4,4)
D.SUBSTR("myhometown",3,4)
点击查看答案
相关试题
对于市政管线工程的布置的常规做法是:在建...
某分部工程流水施工n=4,m=4,t=2,...
基础的埋深中,基础顶面应低于设计地面( ...
设计有围护结构的深基础架空层层高在( )...
某双代号网络计划如下图所示: 则C工作的...