1、国家二级 C语言机试(操作题)模拟试卷 181及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:有 NN矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组 r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。 例如,若 N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 计算结果为 7 4 1 8 5 2 9 6 3 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #incl
2、ude #define N 4 void fun(int(*t)N) int j, rN; for(j=0 ; j=0; _2_) tN一 1N一 1一 j=tjN一 1; for(j=N一 1; j=0; j-) *found* tjN一 1=r_3_; main() int tN=21, 12, 13, 24, 25, 16, 47, 38, 29, 11, 32, 54, 42, 21, 33, 10, i, j; printf(“ nThe original array: n“); for(i=0; i #include void fun (char str10, int m, cha
3、r*pt) *found* Int k, q, i ; for (k=0; kshanghai(为回车键 ),函数将返回 shanghai。 注意:部分源程序存在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include char *fun(char *s, char *t) main() char a20, b20; void NONO(); printf(“Input 1th string: “); gets(a); printf(“Input 2th string: “); gets(b); printf(
4、“ s n“, fun(a, b); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE *fp, *wf; int i; char a20, b20; fp=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i=0; i=0; _2_)”循环变量 j从 N-1开始,到 0结束,共循环 N次,故 j每次减一,第三空处是 “i-”。 第三空:最后一个循环将临时数组中的元素成为最后一列,即 tjN-1=rj,故第三空处应为 “j”。 二、程序修改题 2 【正确答案】 (1)int
5、 k, q, i; (2)pti=strki; 【试题解析】 (1)第一标 识下是整型变量 k、 q和 i的定义,根据 C语言中整型变量的定义方式,第一标识下应为 “intk, q, i; ”。 (2)第二个标识下的 “pti=strk, i; ”语句应该将 str中的字符依次拷贝到 pt中,根据 C语言中对二维数组每一位的取值,应该是 strki,所以 “pti=strk, i; ”改为 “pti=strki; ”。 三、程序设计题 3 【正确答案】 int i; char *p=s, *q=t; int n=0, m=0; while(*p) 计算串 s的长度 n,其中 p为临时指针 n+; p+; while(*q) 计算串 t的长度 m,其中 q为临时指针 m+; q+; if(n=m) 比较 m和 n的值,设置 p指向较大的指针 p=s; else p=t; return p; 【试题解析】 进入 fun函数,根据前面的分析: (1)首先求得字符串的长度,设变量 n和 m分别用来求字符串的长度,初值设为0,把字符串中的字符逐个访问,每访 问一个字符, n和 m分别加 1,直到字符串结束。 (2)使用两个临时指针变量 p、 q分别作为访问字符串的变量。 (3)根据 m和 n的值返回串,设置指针 p,指向返回串的开始地址。