1、国家二级 C语言机试(操作题)模拟试卷 21及答案与解析 一、程序填空题 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=(10001, “NaChao”, 91, 92, 77), 10002, “CaoKai”, 75, 60, 88),10003, “LiS
3、i”, 85, 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
4、 original data: n n”); for(j=0; j #include /*found*/ fun(int n) double sum f s 0, s1, s 2, s; int k; sum=1 0; if(n #include void fun(char*ss) main() char tt81; void NONO(); printf(“ nPlease enter an string within 80 characters: n”); gets(tt); printf(“ n nAfter changing, the string n ” S “”, tt); fun(tt); printf(“ nbecomes n ” s “ n”, tt); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函 数,输出数据,关闭文件。 * FILE *fp, *wf; char tt81; int i ; fp=fopen(“in dat”, “r”); wf=fopen(“out dat”, “W”); for(i=0; i=a& ssi=z)ssi一 =32; 【试题解析】 (1)首先取得字符串中下标为奇数的字符。 (2)判断奇数位置的字符是否为小写字母。 (3)若 (2)中的判断结果是小写字母,则对其进行转换。