1、国家三级(网络技术)机试模拟试卷 270及答案与解析 一、程序设计题 1 文件 IN DAT中存放有 100条 10个候选人进行选举的记录,每条记录的长度均为 10位,第一位表示第一个人选中的情况,第二位表示第二个人的选中情况,依次类推。每一位内容均为字符 0或 1, 1表示此人被选中, 0表示此人未被选中,全选或全不选 (空选票 )均为无效选票。函数 readData()负责将 IN DAT中的内容读入到数组 inBuf中。请编制函数 calculate()来统计每个人的选票数并把得票数依次存人 outBuf0 outBuf9中,最后调用函数 writeData()把结构 outBuf输入到
2、文件OUT DAT中。 注意;部分源程序已给出。 请勿改动主函数 main()、读函数 readData()和写函数 writeData的内容。 试题程序; #include #include #define LINE 100 #define COL 10 char inBufLINECOL; int outBufCOL; int readData(void); void writeData(void); void calculate(void) void main() int i; for(i=0; i0&sumCOL) 如果该选票全选或不选,则视为无效选票 usefulk=i; 将有效的选
3、票的标号放到数组 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的行下标,从而实现了对无效选票的排除。