1、国家二级( C语言)机试模拟试卷 185及答案与解析 一、程序填空题( 30分) 1 程序通过定义学生结构体变量,存储了学生的学号、姓名和 3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数 fun的功能是重写形参 filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include #define N 5 typedef struct student long s
2、no; 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( fclose(fp); main() STU tN= 10001,“MaChao“, 91, 92, 77, 10002, “CaoKai“, 75, 60, 88,10003,“LiSi“, 85, 70, 78, 10004
3、, “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 original data :nn“); f
4、or (j=0; j void fun(char *a, int n) main() char s81; int n; void NONO(); printf(“Enter a string: n“); gets(s); printf(“Enter n: “); scanf(“ d“, &n); fun(s, n); printf(“The string after deleted: n“); puts(s); NONO(); void NONO() *本函数用于打开文件,输入数据,调用 函数,输出数据,关闭文件。 * FILE*in, *out; int i, n; char s81; in=fopen(“in dat“, “r“); out=fopen(“out dat“, “w“); for(i=0, in) t=a+k n ; while(*t) ai=*t; i+; t+; ai=0; 【试题解析】 (1)首先由字符串头开始判断字符是否为 “*“号字符,如果字符是符号 “*“,则对 “*“号进行统计。 (2)根据统计 的 “*“号数目结合题目中对 “*“号个数的要求,判断是执行对 “*“号的截取操作,还是什么都不用做。 (3)然后将其他的所有字符拷贝到字符串,最后记得在新串 s的末尾加上结束符“n“。