1、国家二级( C语言)机试模拟试卷 216及答案与解析 一、程序填空题( 30分) 1 给定程序的功能是调用 fun函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为 myfile5 dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include #include #define N 5 typedef struct int num; char name10; char
2、 tel10; STYPE; void check(); /*found*/ int fun(【 1】 *std) /*found*/ 【 2】 *fp; int i; if(fp=fopen(“myfile5.dat“,“wb“)=NULL) return(0); printf(“nOutput data to file !n“); for(i=0; i void fun(int a, int b, long*c) main() int a, b, long c; void NONO(); printf(“Input a, b: “); Scanf(“ d d“, ”。 三、程序设计题( 40分) 3 【正确答案】 *c=(a 10)*1000+(b 10)*100+(a 1 O)*10+(b 10); 【试题解析】 (1)分解两位数的正整数 n的个位和十位数,可用 n 10和 n 10实现。 (2)设 x0、 x1、 x2、 x3为一位数,则 x0、 x110、 x2100、 x31000,可以分别使 x0、 x1、 x2、 x3构成个、十、百、千带权数,而 x0+x110+x2100+x31000构成四位数。本题最多只考虑四位数。