1、国家二级 C语言机试(操作题)模拟试卷 294及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是:将 a所指 43矩阵中第 k行的元素与第 0行元素交换。 例如,有下列矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 若 k为 2,程序执行结果为: 7 8 9 4 5 6 1 2 3 10 11 12 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件BLANK1C 中。不得增行或删行,也不得更改程序的结构! 试题程序: #includeStdioh #def
2、ine N 3 #define M 4 *found* void fun(int(*a)N,int 【1】 ) int i,temp; *found* for(i=0;i 【2】 ;i+) temp=a0i; *found* a0i= 【3】 ; aki=temp; main() int xMN=1,2,3,4,5,6,7,8,9,10,11,12,i,j; printf(“The array before moving:nn“); for(i=0;iM;i+) for(j=0;jN;j+) printf(“3d“,xij); printf(“nn“); fun(x,2); printf(“T
3、he array after moving:nn“); for(i=0;iM;i+) for(j=0;jN;j+) printf(“3 d“,xij); printf(“nn“); (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:将 s所指字符串中位于奇数位置的字符或 ASCII码值为偶数的字符依次放入 t所指数组中。例如,字符串中的数据为“AABBCCDDEFFF”,则输出应当是“ABBCDDEFF”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构!试题程序:#includ
4、econioh#includestdioh#includestringh#define N 80void fun(char*s,char t) int i,j=0; for(i=0;i(int)strlen(s);i+)*found* if(i2si2=0) tj+=si;*found* ti=0;main() char sN,tN; printf(“nplease enther string s:“); gets(s); fun(s,t); printf(“nThe result is:sn“,t);(分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.程序定义了 NN的二维数
5、组,并在主函数中自动赋值。请编写函数 fun(int aN,intn),该函数的功能是:使数组左下半三角元素中的值乘以 n。例如,若 n的值为 3,a 数组中的值为: 则返回主程序后 a数组中的值应为: (分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 294答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是:将 a所指 43矩阵中第 k行的元素与第 0行元素交换。 例如,有下列矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 若 k为 2,程序执行结果为: 7 8 9 4 5 6 1 2 3
6、10 11 12 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件BLANK1C 中。不得增行或删行,也不得更改程序的结构! 试题程序: #includeStdioh #define N 3 #define M 4 *found* void fun(int(*a)N,int 【1】 ) int i,temp; *found* for(i=0;i 【2】 ;i+) temp=a0i; *found* a0i= 【3】 ; aki=temp; main() int xMN=1,2,3,4,5,6,7,8,9,10,11,12,i,j; printf(“
7、The array before moving:nn“); for(i=0;iM;i+) for(j=0;jN;j+) printf(“3d“,xij); printf(“nn“); fun(x,2); printf(“The array after moving:nn“); for(i=0;iM;i+) for(j=0;jN;j+) printf(“3 d“,xij); printf(“nn“); (分数:2.00)_正确答案:(正确答案:(1)k (2)N (3)aki)解析:解析:填空 1:变量 k在函数体 fun中已经使用,但在函数体中没有定义,肯定是在函数的形参中定义的,所以应填 k
8、。 填空 2:数组共 N列,所以应填 N。 填空 3:这部分语句实现的功能是变量值的交换,所以应填 aki。二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:将 s所指字符串中位于奇数位置的字符或 ASCII码值为偶数的字符依次放入 t所指数组中。例如,字符串中的数据为“AABBCCDDEFFF”,则输出应当是“ABBCDDEFF”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构!试题程序:#includeconioh#includestdioh#includestringh#define N 8
9、0void fun(char*s,char t) int i,j=0; for(i=0;i(int)strlen(s);i+)*found* if(i2si2=0) tj+=si;*found* ti=0;main() char sN,tN; printf(“nplease enther string s:“); gets(s); fun(s,t); printf(“nThe result is:sn“,t);(分数:2.00)_正确答案:(正确答案:(1)if(i2si2=0)或 if(i2!=0si2=0) (2)tj=0;或 tj=0;)解析:解析:(1)根据题意,将字符串 s中位于奇数
10、位置的字符或 ASCII码值为偶数的字符,依次放入字符串 t中,所以 if条件中要使用“或”运算。 (2)变量 j控制字符串 t的下标,所以是 tj。三、程序设计题(总题数:1,分数:2.00)3.程序定义了 NN的二维数组,并在主函数中自动赋值。请编写函数 fun(int aN,intn),该函数的功能是:使数组左下半三角元素中的值乘以 n。例如,若 n的值为 3,a 数组中的值为: 则返回主程序后 a数组中的值应为: (分数:2.00)_正确答案:(正确答案:void fun(int aN,int n) int i,j; for(i=0;iN; i+) for(j=0;j=i;j+) *矩形的下三角时,积相乘* aij=aij*n; )解析:解析:本题的 fun的功能是使数组的左下半三角元素中的值乘以 n,因此本题需要使用双重 for循环,for 循环需要注意的是: (1)循环初值,根据题意要求控制循环变量的取值范围; (2)循环条件,确定循环结束的条件,即当不满足条件时,结束循环。 首先从数组中找出要被乘以 n的那部分元素,这一过程其实就是找出将被挑出的元素在原数组中的分布规律的过程。通过观察得出,要被处理的元素下标值的范围是每行中从第一个元素开始,直到列数等于该行行数时为止。找到这个规律后,依次从数组中取得符合要求的元素,然后乘以 n。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1