1、国家二级 C语言机试(操作题)模拟试卷 162及答案与解析 一、程序填空题 1 程序通过定义学生结构体变量,存储了学生的学号、姓名和 3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数 fun的功能是重写形参 filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include #define N 5 typedef struct student long sno;
2、 char name10; float score3; STU ; void fun(char *filename, STU n) FILE *fp; *found* fp=fopen(_1_, “rb+“); *found* fseek(_2_, 一 (long)sizeof(STU), SEEK END); *found* fwrite( n, sizeof(STU), 1, _3_); fclose(fp); main() STU tN=f10001, “MaChao“, 91, 92, 77), 10002, “CaoKai“, 75, 60, 88, 10003, “LiSi“, 8
3、5, 70, 78, 10004, “FangFang“, 90, 82, 87, 10005, “ZhangSan“, 95, 80, 88; STU n=10006, “ZhaoSi“, 55, 70, 68, ssN; int i, j; FILE *fp; fp=fopen(“student dat“, “wb“); fwrite(t, sizeof(STU), N, fp); fclose(fp); fp=fopen(“student dat“, “rb“); fread(ss, sizeof(STU), N, fp); fclose(fp); printf(“ nThe origi
4、nal data: n n“); for(j=0; j long fun(int a, int n) int j; *found* long s=0, t=1; for(j=0; j #define N 80 int fun(int a, int n) main() int aN=2, 2, 2, 3, 4, 4, 5, 6, 6, 6, 6, 7, 7, 8, 9, 9, 10, 10, 10, 10), i, n=2 0 ; void NONO(); printf(“The original data: n“); for(2=0 ; i=n) aj=t; return j ; 【试题解析】 (1)首先,设置一个临时变量,初值设置为一维数 组的第一个元素。 (2)然后,依次将数组的元素与临时变量比较,如果相同,则继续取数组下一个元素与临时变量比较;如果不同,则将临时变量的值赋值到数组的第一个元素,同时将此与临时变量不同的数组元素赋值给临时变量。 (3)循环执行,直到所有的数据处理完毕。