1、国家二级( C语言)机试模拟试卷 322及答案与解析 一、程序填空题( 30分) 1 给定程序的功能是:调用函数 fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为 1,失败时返回值为 0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量 sfname中,目标文件名放在变量 tfname中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结 构 ! #include #inclucle int fun(char*soLlrce, char*
2、target) 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(”kn n”); ret
3、urn 1; main() char sfname20=”myfilel”, tfname20=”myfile2”; FILE*myf; int i; char c; myf=fopen(sfname, ”w”); printf(” nThe original data: n”); for(i=1; i *found* void fun(int x, int y) int t; *found* t=x; x=y; y=t; main() int a, b; a=8; b=3; fun(&a, &b); printf(“ d, d n“, a, b); 三、程序设计题( 40分) 3 编写程序,
4、实现矩阵 (3行 3列 )的转置 (即行列互换 )例如,输入下面的矩阵: 程序输出: 注意:部分源程序在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #includevoid fun(int array33)main() int i, 3; void NONO(); int array33=100, 200, 300, 400, 500, 600, 700, 800, 900; for(i=0; i 国家二 级( C语言)机试模拟试卷 322答案与解析 一、程序填空题( 30分) 1 【正确答案】 (1)“r“ (2
5、)fs (3)ft 【试题解析】 第一空:将指定源文件中的内容复制到指定的目标文件中,源文件只需读,因此以只读方式打开即可,故第一空处应该是 “ifi(fs=-fopen(source,“r“)=NULL)“。 第二空: “while(!leof( 【 2】 )“循环的目的是不断读取源文件直至到达源文件的末尾,循环结束标志是已达到文件的末尾。用 leof()函数来检查是否已经 到了文件末尾,文件状态检测函数 leof()的调用形式是: leof(fs),如果已经到达文件尾函数返回非零值,否则返回 0,故第二空处应该是 “while(!feof(fs)“。 第三空:考察 fputc函数的使用方法
6、, fputc函数的调用形式是: fputc(ch, ft),ch是要输出的字符,由 “ch=fgetc(fs)“从源文件读到字符 ch,然后将 ch写到目标文件中,故第三空处应该是 “fputc(ch,ft); “。 二、程序修改题( 30分) 2 【正确答案】 (1)void fun(int *x, int*y) (2)t=*x; *x=*y; *y=t; 【试题解析】 (1)主函数中 “fun(&a, &b); “引用的是变量 a和 b的地址,所以第一个标识下的 fun函数定义中的参数应该是指针型,即 “void fun(int x,int y)“改为“void fun(int*x,int*y)“。 (2)同理,第二个标识符下的 “t=x; x=y; y=t; “改为 “t=*x; *x=*y; *y=t; “。 三、程序设计题( 40分) 3 【正确答案】 int i, j, arr33; memcpy(arr, array, 9*sizeof(int); for(i=0; i3; i+) for(j=0; j3; j+) arrayij=arrji; 【试题解析】 进入: fun函数,根据前面的分析: 通过两层循环对矩阵中的元素进行交换。其中,外重循环以行为控制条件,对矩阵的行进行循环。内重循环在列循环中对元素进行交换。