问答题
文件IN.DAT中存放有100条对10个候选人进行选举的记录,数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依次类推。每一位内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票选中人数小于等于5个人时则被认为是无效的选票。函数ReadData()负责将IN.DAT中的内容读人数组inBuf[]中。请编制函数calculate()来统计每个人的选票数并把得票数依次存入outBuf[0]outBuf[9]中,最后写函数WriteData()把结果outBuf[]输出到文件OUT.DAT中。
注意:部分源程序已给出。
请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。
试题程序:
#include<stdio.h>
#include<memory.h>
#define LINE 100
#define COL 10
#define THR 5
char inBuf[LINE][COL];
int outBuf[COL];
int readData(void);
void writeData(void);
void calculate(void)
void main()
int i:
for(i=0;i<10;i++)outBuf[i]=0;
if(readData())
printf("IN.DAT can’t be opened");
return;
calculate();
writeData();
int readData(void)
FILE*fp;
int i;
char tt[COL+1];
if((fp=fopen("IN.DAT","r"))==NULL)
return 1;
for(i=0;i<LINE;i++)
if(fgets(tt,COL+2,fp)==NULL)
return 1;
memcpy(inBuf[i],tt,COL);
fclose(fp);
return 0;
void writeData(void)
FILE*fp;
int i;
fp=fopen("OUT.DAT","w");
for(i=0;i<10;i++)
fprintf(fp,"%d",outBuf[i]);
printf("the amounts of number%d’s votes%d",i+1,outBuf[i]);
fclose(fp);)
【参考答案】
void calculate(void)
{
int i,j,k,sum,use_i;
i......
(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)