1、二级 C 语言分类模拟题 254 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:将形参指针所指结构体数组中的三个元素按 num 成员进行升序排列。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在 下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! #includestdio.h typedef struct int num; char name10; PERSON; /*found*/ void fun(PERSON_) /*found*/
2、 _temp; if(std0.numstd1.num) temp=std0; std0=std1; std1=temp; if(std0.numstd2.num) temp=std0; std0=std2; std2=temp; if(std1.numstd2.num) temp=std1; std1=std2; std2=temp; main() PERSON std=5, “Zhanghu“, 2, “WangLi“, 6, “LinMin“); int i; /*found*/ fun(_); printf(“/nThe result is:/n“); for(i=0; i3; i+)
3、 printf(“%d, %s/n“, stdi.num, stdi.name); (分数:30.00)_二、程序修改题(总题数:1,分数:30.00)2.给定程序 MODI1.C 中函数 fun 的功能是:将 m(1m10)个字符串连接起来,组成一个新串,放入 pt 所指存储区中。 例如:把 3 个串:“abc“,“CD“,“EF“连接起来,结果是“abcCDEF”。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #includestdio.h #includestring.h void fun(char str10, i
4、nt m, char *pt) /*found*/ Int k, q, i; for (k=0; km; k+) q=strlen(strk); for(i=0; iq; i+) /*found*/ pti=strk, i; pt+=q; pt0=0; main() int m, h; char s1010, p120; printf(“/nPlease enter m:“); scanf(“%d“, gets(s0); printf(“/nPlease enter %d string:/n“, m); for(h=0; hm; h+)gets(sh); fun(s, m, p); print
5、f(“/nThe result is:%s/n“, p); (分数:30.00)_三、程序设计题(总题数:1,分数:40.00)3.程序定义了 NN 的二维数组,并在主函数中自动赋值。请编写函数 fun(int aN),函数的功能是:使数组左下三角元素中的值全部置成 0。 例如:a 数组中的值为 则返回主程序后 a 数组中的值应为 (分数:40.00)_二级 C 语言分类模拟题 254 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:将形参指针所指结构体数组中的三个元素按 num 成员进行升序排列。 请在
6、程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在 下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! #includestdio.h typedef struct int num; char name10; PERSON; /*found*/ void fun(PERSON_) /*found*/ _temp; if(std0.numstd1.num) temp=std0; std0=std1; std1=temp; if(std0.numstd2.num) temp=std0; std0=std2; std2=temp; if(std1
7、.numstd2.num) temp=std1; std1=std2; std2=temp; main() PERSON std=5, “Zhanghu“, 2, “WangLi“, 6, “LinMin“); int i; /*found*/ fun(_); printf(“/nThe result is:/n“); for(i=0; i3; i+) printf(“%d, %s/n“, stdi.num, stdi.name); (分数:30.00)_正确答案:()解析:(1)*std (2)PERSON (3)std 答案考生文件夹 解析 fun 函数的功能是将形参指针所指结构体数组中的
8、三个元素进行排序。 第一空:fun 函数的参数是指针,由“if(std0.numstd1.num)”可知形参名为 std,故第一空处应为“void fun(PERSON*std)”。 第二空:temp 变量用来进行交换时临时保存变量值,由“temp=std0; ”可知 temp 是 PERSON 结构体变量,故第二空处的 temp 结构体定义应为“PERSON temp; ”。 第三空:这里是调用 fun 函数,fun 函数的参数是结构体变量指针,std 是结构体数组,数组名相当于数组的首地址,故第三空处应为“fun(std); ”。 考点 结构体数组、循环的嵌套。二、程序修改题(总题数:1,
9、分数:30.00)2.给定程序 MODI1.C 中函数 fun 的功能是:将 m(1m10)个字符串连接起来,组成一个新串,放入 pt 所指存储区中。 例如:把 3 个串:“abc“,“CD“,“EF“连接起来,结果是“abcCDEF”。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #includestdio.h #includestring.h void fun(char str10, int m, char *pt) /*found*/ Int k, q, i; for (k=0; km; k+) q=strlen(s
10、trk); for(i=0; iq; i+) /*found*/ pti=strk, i; pt+=q; pt0=0; main() int m, h; char s1010, p120; printf(“/nPlease enter m:“); scanf(“%d“, gets(s0); printf(“/nPlease enter %d string:/n“, m); for(h=0; hm; h+)gets(sh); fun(s, m, p); printf(“/nThe result is:%s/n“, p); (分数:30.00)_正确答案:()解析:(1)int k, q, i;
11、(2)pti=strki; 答案考生文件夹 解析 函数的功能是将 m(1m10)个字符串连接起来。 (1)第一标识下是整型变量 k、q 和 i 的定义,根据 C 语言中整型变量的定义方式,第一标识下应为“int k, q, i; ”。 (2)第二个标识下的“pti=strk, i; ”语句应该将 str 中的字符依次拷贝到 pt 中,根据 C 语言中对二维数组每一位的取值,应该是 strki,所以“pti=strk, i; ”改为“pti=strki; ”。 考点 数据类型和常量、变量、字符数组和字符串。三、程序设计题(总题数:1,分数:40.00)3.程序定义了 NN 的二维数组,并在主函数
12、中自动赋值。请编写函数 fun(int aN),函数的功能是:使数组左下三角元素中的值全部置成 0。 例如:a 数组中的值为 则返回主程序后 a 数组中的值应为 (分数:40.00)_正确答案:()解析:int i, j; for(i=0; iN; i+) for(j=0; j=i; j+) aij=0; 答案考生文件夹 解析 程序功能是使数组左下半三角元素的值全部置成 0。 (1)对二维数组常用双重循环结构来处理:外层循环控制二维数组的行处理,内层循环控制二维数组的列处理。 (2)左下半三角元素的下标特点是列下标小于或等于行下标,即 j=i。 (3)依次访问二维数组,把符合以上条件的元素的值赋 0。 该题是对矩阵操作的考查。 考点 二维数组、for 循环结构。