1、国家二级 C语言机试(操作题)模拟试卷 493及答案与解析 一、程序填空题 1 给定程序的功能是:调用函数 fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为 1,失败时返回值为 0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量 sfname中,目标文件名放在变量 tfname中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include #include int fun(char *source, char *targ
2、et) FILE *fs,*ft; char ch; /*found* */ if (fs=fopen(source,【 1】 ) =NULL) return 0; if (ft=fopen(target,“w“)=NULL ) return 0; printf (“nThe data in file :n“); ch=fgetc(fs); /*found*/ while (! feof (【 2】 ) ) putchar(ch); /* found* */ fputc (ch,【 3】 ) ; ch=fgetc(fs); fclose(fs); fclose(ft); printf(“nn“
3、); return 1; main () char sfname20 =“myfilel“, tfname20=“myfile2“; FILE *myf; int i; char c; myf=fopen(sfname,“w“); printf(“nThe original data :n“); for(i=l; i void fun (long s, long *t) int d; long sl=l; *t = 0; while (s 0) d = s%10; /* found*/ if (d%2=0) *t=d* sl+ *t; s1 *= 10; /* found* */ s = 10
4、; main () long s, t; printf(“nPlease enter s:“); scanf (“%ld“, fun (s, printf(“The result is:%ldn“,t); 三、程序设计题 3 函数 fun的功能是:将 s所指字符串中除了下标为偶数、同时 ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在 t所指的数组中。 例如,若 s所指字符串中的内容为: “ABCDEFG123456“,其中字符 A的 ASCII码值为奇数,因此应当删除;其中字符 B的 ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符 2的 A
5、SCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后 t所指的数组中的内容应是: ”246”。 注意:部分源程序存在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #include void fun(char *s, char t) main() char s100, t100; void NONO (); printf(“nPlease enter string S:“); scanf(“%s“, s); fun(s, t); printf(“nThe result is
6、:%sn“,t); NONO(); void NONO () * 函数用于打开文件,输入数据,调 用函数,输出数据,关闭文件。 * char s100, t100 ; FILE *rf, *wf ; int i ; rf = fopen(“in.dat“,“r“); wf = fopen(“out.dat“,“w“) ; for(i = 0 ; i 10 ; i+) fscanf(rf, “%s“, s); fun(s, t); fprintf(wf, “%sn“, t); fclose(rf); fclose(wf) ; 国家二级 C语言机试(操作题)模拟试卷 493答案与解析 一、程序填空
7、题 1 【正确答案】 (1)“r“ (2)fs (3)ft 【试题解析】 第一空:将指定源文件中的内容复制到指定的目标文件中,源文件只需读,因此,以只读方式打开即可,故第一空处应该是“if(fs=fopen(source,“r“)=NULL)”。 第二空: “while(!feof(【 2】 )”循环的目的是不断 读取源文件直至到达源文件的末尾,循环结束标志是己达到文件的末尾。用 feof()函数来检查是否已经到了文件末尾,文件状态检测函数 feof()的调用形式是: feof(fs),如果已经到达文件尾函数返回非零值,否则返回 0,故第二空处应该是 “while(!feof(fs)”。 第三
8、空:考察 fputc函数的使用方法, fputc函数的调用形式是: fputc(ch, ft),ch是要输出的字符,由 “ch=fgetc(fs)”从源文件读到字符 ch,然后将 ch写到目标文件中,故第三空处应该是 “fputc(ch,ft); ”。 二、程序修改题 2 【正确答案】 (1)if(d 2=0) (2)s =10; 【试题解析】 (1)第一个标识是判断 d是否是偶数,即比较 “d 2”是否等于 0,在C语言中, “=”表示的是 “等于 ”,而 “=”是赋值,因此,第一个标识下 “if(d2=0)”应改为 “if(d 2=0)”。 (2)第二个标识下的 “s =10; ”是对 a
9、的截取,这里的 “ ”本意应该是除号,但这个在 C语言中是不可识别的,所以第二个标识下 “s =10; ”应该改为 “s=10; ”。 三、程序设计题 3 【 正确答案】 int i, j=0; for(i=0; istrlen(s); i+=2) if(si 2=0)tj+=si; tj= 0; 【试题解析】 (1)判断一个字符串中的某一字符下标 i是否为偶数,可用 “i 2=0”来判断;也可以从下标 0开始,每次增 2。判断字符中的 ASCII码值是否为偶数,则可用 “si 2=0”来判定。 (2)对串 s中下标为偶数的字符进行考查,满足 ASCII码值是偶数条件的字符就顺序放在新串 s中,否则就不存放。 (3)所有字符处理完后 ,记得在新串 s的末尾加上结束符 “ 0”。