1、国家三级(网络技术)机试模拟试卷 206及答案与解析 一、程序设计题 1 文件 IN DAT中存放有 100条对 10个候选人进行选举的记录,数存放的格式是每条记录的长度均为 10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位内容均为字符 0或 1, 1表示此人被选中, 0表示此人未被选中,若一张选票选中人数小于等于 5个人时则被认为是无效的选票。函数 ReadData()负责将 IN DAT中的内容读人数组 inBuf中。请编制函数calculate()来统计每个人的选票数并把得票数依次 存人 outBuf0outBuf9中,最后写函数 WriteData(
2、)把结果 outBuf输出到文件 0UT DAT中。 注意;部分源程序已给出。 请勿改动主函数 main()、读函数 ReadData()和写函数 WriteData()的内容。 试题程序; #include #include #define LINE 100 #define COL 10 #define THR 5 char inBufLINECOL; int outBufCOL; int ReadData(void); void WriteData(void); void calculate(void) void main() int i; for(i=0; iTHR) 如果该选票选的人数
3、小于等于 5人,则视为无效选票 usefulk=i; 将有效的选票的标号放到数组 useful中 k+; 将有效选票的计数器加 1 use_i=k; 记录有效选票的个数 for(j=0; jcoL; j+) for(k=0; kuse_i; k+)outBufj+=(inBufusefulkj-0); 统计有效选票数 【试题解析】 本题主要考查如何将读入的字符型的数字转换成对应的整型数字。由于数字 0 9的 ASCII码是连续增加的,故可用 0 9的 ASCII码值减去 0的ASCII码值而得到数字 0 9。本题的另一个难点是如何在除去无效选票之后再进行统计。在程序中选用的是用一个数组 useful来记录有效选票的号码,将该数组中的值作为选票数组 inBuf的行下标,从而实现了对无效选票的排除。