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