1、国家三级(网络技术)机试模拟试卷 244及答案与解析 一、程序设计题 1 现有一个 10个人的 100行选票数据文件 IN DAT,其数据存放的格式是每条记录的长度均为 10位,第一位表示第一个人选中的情况,第二位表示第 2个选中的情况,以此类推;内容均为字符 0或 1, 0表示此人未被选中, 1表示此人被选中。若一张选票人数大于 5个人时被认为无效。给定函数 Rdata()的功能是把选票数据读人到字符串组 string中。请编写 CountRs()函数。其功能是实现;统计每个人的选票数并把票数依次存人 result0到 result9,把结果 result输出到OUT DAT中。 注意;部分
2、源程序已经给出。 请勿改动主函数 main()和输出函数 Wdata()的内容。 试题程序; #include char string10011; int result10; int Rdata(void); void Wdata(void); void CountRS(void) void main() int i; for(i=0; i10; i+) resulti=0; if(Rdata() printf(“选票数据文件 IN dat不能打开 ! n 007“); return; CountRs(); Wdata(); int Rdata(void) FILE*fp; int i; if
3、(fp=fopen(“IN dat“, “r“)=NULL) return 1; for(i=0; i100; i+) if(fgets(stringi, 11, fp)=NULL) return 1; stringi10=0; fclose(fp); return 0; void Wdata(void) FILE*fp; int i; fp=fopen(“OUT dat“, “w“); for(i=0; i10; i+) fprintf(fp, “ d n“, resulti); printf(“第 d个人的选票数 = d n“, i+1, resulti); fclose(fp); 国家三
4、级(网络技术)机试模拟试卷 244答案与解析 一、程序设计题 1 【正确答案】 void CountRS() int i, count, j; char*pf; for(i=0; ilO; i+) resulti=0; for(i=0; i100; i+) pf=stringi; count=0; while(*pf) if(*pf=1) count+; pf+; if(count=5) for(j=0; j10; j+) resultj+=stringij-0; 【试题解析】 CountRs()要实现的功能是;统计每个人的选票数并把得票数依次存入 result0 result9中。因此解答本题的关键在于如何判断一个人是否得票。在 for循环语句中自变量 i从 0到 100,对数组 stringi中字符 1的个数进行统计并赋给变量 count,如果变量 count的值大于 5, 说明这是一张无效选票,否则在for(j=0; j10; j+)resultj+=stringij-0;语句中把 stringij的值相加赋给resultj,就得到了每个人的选票数,本题考察了二维数组的使用。