1、计算机三级数据库技术(上机操作)机试模拟试卷 44及答案与解析 一、程序设计题 1 对 10个候选人进行选举,现有一个 100条记录的选票数据文件 in dat,其数据存放的格式是每条记录的长度均为 10位,第一位表示第一个候选人的选中情况。第二位表示第二个候选人的选中情况,以此类推 ;每一位内容均为字符 “0”或 “1”,“1”表示此人被选中, “O”表示此人未被选中,全选或全不选 (空选票 )均为无效的选票,不作统计。给定函数 ReadDat()的功能是把选票数据读人到字符串数组 XX中。请编写函数 CountRs()来统计 每个候选人的选票数并把得票数依次存入 yyFo-到 yyE9中,
2、即第一个候选人的得票数存入 yy-Ol巾,以此类推。最后调用函数WriteDat()把结果 yy输出到文件 out dat中。 【试题程序】 #include #include char xx1001 1; int YY10; int ReadDat(void); void WriteDat(void); void CountRs(void) *每一条记录的选票情况已作为字符串存入 xxB为起始地址的存储单元内 * *例如:第 10条记录的第一个候选人的 选中情况的条件是 if(xx9O=1)* *该提示仅供解题参考,考生也可用其他 方法解题 * void main() int i; for(
3、i=0;i10; i+)yyi=0; if(ReadDat(); printf(“选票数据文件 IN DAT不能打开 ! 007 n”); return; CountRs(); WriteDat(); int ReadDat(void) FILE*fp; int i; char tt13; if(fp=fopen(“in dat”。 ”r”)=NULL) return 1; for(i=0; i100; i+) if(fgets(tt, 13, fp)=NULL) return 1; memcpy(xxi, tt, 10); xxi10=0; fclose(fp); return 0; voi
4、d WriteDat(void) FILE*fp; int i; fp=fopen(“out dat”, “w”); for(i=0i10li+) fprintf(fp, “ d n”, yyi); printf(”第 d个人的选票数 = d n”, i+1, yyi); fclose(fp); 计算机三级数据库技术(上机操作)机试模拟试卷 44答案与解析 一、程序设计题 1 【正确答案】 void CountRs(void) (int i j, cnt *定义变量 * for(i=0;i100;i+) *逐张处理选票 * cnt=0; for(j=0; j10; j+) *统计选中人数 * if(xxij=1) cnt+; if(ent=10 cnt=一 0) *判断条件 * continue; for(j=0;j10; j+) *统计得票 * if(xxij=1) YYJ+: