1、国家二级 C语言机试(操作题)模拟试卷 681及答案与解析 一、程序填空题 1 下列给定程序的功能是:调用函数 fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回 1,失败时返回 0。在复制的过程中,把复制的内容输出到屏幕。主函数中源文件名放在变量 sfname中,目标文件名放在变量 tfname中。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include stdlib h int fun(char*source char*target) FILE*fs,
2、 *ft; char ch; *found* if(fs=fopen(source, _1_)=NULL) return0; if(ft=fopen(target, “w“)=NULL) return0; printf(“ nThe data in file: n“); ch=fgetc(fs); *found* while(!feof(_2_) putchar(ch); *found* fpute(ch, _3_); ch=fgetc(fs); fclose(fs); felose(ft); printf(“ n“); return1; main() char sfname20=“myfil
3、e1“, tfname20=“myfile2“; FILE*myf; int i; char c; myf=fopen(sfname, “w“); printf(“ nThe original data: n“); for(i=1; i 30; i+) c=A+rand() 25; fprintf(myf, “ c“, c); printf(“ c“, c); ; felose(nyf); printf(“ n n“); if(fun(sfnarne, tfname) printf(“Succeed!“); else pfinff(“Fail!“); 二、程序修改题 2 下列给定程序中,函数
4、fun的功能是:在有 n名学生、 2门课成绩的结构体数组std中,计算出第 1门课程的平均分,作为函数值返回。例如,主函数中给出了 4名学 生的数据,则程序运行的结果为:第 1门课程的平均分是 76 125000 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h typedef struet char num8; double score2; STU; double fun(STU std, int n) int i; *found* double sum; *fou
5、nd* for(i=0; i 2; i+) *found* Bum+=stdi score1; return sum n; main() STU std=“N1001“, 76 5, 82 0, “N1002“, 66 5, 73 0, “N1005“, 80 5, 66 0, “N1006“, 81 0, 56 0; printf(“第 1门课程的平均分是: lf n“, fun(std, 4); 三、程序设计题 3 请编写函数 fun,其功能是:判断形参 n中的正 整数是几位数 (输入数据的位数不超过 4位 ),并将结果通过函数值返回。例如,若输入的数据为 123,则输出结果为:输入的数字
6、是 3位。 注意:请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序: #include stdio h void NONO(); int fun(int n) main() int n, place; do printf(“请输入 个 4位以内的正整数: “); scanf(“ d“, &n); while(n 0|n 9999); place=fun(n); printf(“输入的数字是 d位 n“, place); NONO(); void NONO() *本函数用于打开文件,输入数据, 调用函数,输出数据,关闭文件。 * FILE
7、*fp, *wf; int i, n, plaee; fo=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i-0; i 10; i+) fseanf(fp, “ d“, &n); place: fun(n); fprintf(wf, “ d n“, place); fclose(fp); fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 681答案与解析 一、程序填空题 1 【正确答案】 (1)“r“ (2)fs (3)ft 【试题解析】 本题考查:打开文件操作, fopen函数用来打开一个文件,其一般形式为 “文件指针名
8、 =fopen(文件名,使用文件方式 ); ”;文件结束检测函数 feof函数;写字符函数 fputc,功能是把一个字符写入指定的文件中,函数调用的形式为“fputc(字符量,文件指针 ); ”。其中,待写入的字符量可以是字符常量或变量,被写入的文件可以用写、读写、追加方式打开。文件一旦使用完毕,需使用关闭文件函数 fclOSe将文件关闭,以避免文件的数据丢失等错误。 填空 1:本题考查对文件操作的掌握。打开一个文件的调用方式是: fs=fopen(文件名,使用文件方式 ),以只读的方式打开文件,所以文件打开方式为 “r“。 填空 2: while循环语句中,循环条件通过 feof()函数来检
9、测是否到文件结尾。 填空 3: fputc()函数用于将一个字符写到磁盘文件上,调用形式为: fputc(要输出的字符, 文件指针 )。 二、程序修改题 2 【正确答案】 (1)double sum改为 double sum=0 0; (2)for(i=0; i 2; i+)改为 for(i=0; i n; i+); (3)sum+=stdi score1改为 sum+=stdi score0; 【试题解析】 本题考查:临时变量初始化, C语言里临时变量不初始化,它的默认值是不确定的一个值。再者,考查 C语言约定数组的下标是从 0开始的。 (1)double sum改为 double sum=
10、0 0;累加求和需要初始化 累加结果的临时变量。 (2)for(i=0; i 2; i+)改为 for(i=0; i n; i+);共有 n个学生的成绩,需要累加所有学生第一门课的成绩。 (3)sum+=stdi score1改为 sum+=stdi score0;第 1门课程的平均分, C语言的下标是从 0开始的。 三、程序设计题 3 【正确答案】 int bits=1;临时变量统计位数 while(n 10) *判断是否为 0,若不为 0, bits加 1,再将 n除以 10,继续判断 * bits+; n=n 10; return bits; 【试题解析】 本题考查:对循环跳出的条件的理解,以及理解取数字位数的方法。 通过对指定的多位数每次除以 10,去掉最后一位,直到为 0结束,使用临时变量来统计一个多位数的位数。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1