1、二级 C 语言-352 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和 3 门课的成绩。函数 modify 的功能是将该学生的各科成绩都乘以一个系数 a。 请在程序的下划线处填入正确的内容,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestdio.h typedef struct int num; char name9; float score3; STU; void show(STU tt
2、) int i; printf(“%d %s:“,tt.num.tt.name); for(i=0;i3;i+) printf(“%5.1“,tt.scorei); printf(“/n“); /*found*/ void modify( 1*ss,float a) int i; for(i=0;i3;i+) /*found*/ ss- 2;*=a; main() STU std=1,“Zhanghua“,76.5,78.0,82.0; float a; printf(“/nThe original number and nameand scores:/n“); show(std); prin
3、tf(“/nInput a number:“); scanf(“%f“, /*found*/ modify( 3,a); printf(“/nA result of modifying:/n“); show(std); (分数:30.00)二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun 的功能是:求 k!(k13),所求阶乘的值作为函数值返回。例如,若 k=10,则应输出 3628800。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includeconio.h #includ
4、estdio.h long fun(int k) /*found*/ if k1 return(k*fun(k-1); return 1; main() int k=10; printf(“%d!=%ld/n“,k,fun(k); (分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.程序定义了 NN 的二维数组,并在主函数中自动赋值。请编写函数 fun(int aN, int n),该函数的功能是:使数组左下半三角元素中的值乘以 n。例如,若 n 的值为 3,a 数组中的值为: 则返回主程序后 a 数组中的值应为: (分数:40.00)_二级 C 语言-352 答案解析(总分
5、:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和 3 门课的成绩。函数 modify 的功能是将该学生的各科成绩都乘以一个系数 a。 请在程序的下划线处填入正确的内容,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestdio.h typedef struct int num; char name9; float score3; STU; void show(STU tt) int i; printf(“%d
6、%s:“,tt.num.tt.name); for(i=0;i3;i+) printf(“%5.1“,tt.scorei); printf(“/n“); /*found*/ void modify( 1*ss,float a) int i; for(i=0;i3;i+) /*found*/ ss- 2;*=a; main() STU std=1,“Zhanghua“,76.5,78.0,82.0; float a; printf(“/nThe original number and nameand scores:/n“); show(std); printf(“/nInput a number
7、:“); scanf(“%f“, /*found*/ modify( 3,a); printf(“/nA result of modifying:/n“); show(std); (分数:30.00)解析:(1)STU (2)scorei (3) printf(“%d!=%ld/n“,k,fun(k); (分数:30.00)解析:if(k1)解析 语法错误,if 条件表达式应写在小括号内。三、程序设计题(总题数:1,分数:40.00)3.程序定义了 NN 的二维数组,并在主函数中自动赋值。请编写函数 fun(int aN, int n),该函数的功能是:使数组左下半三角元素中的值乘以 n。例如,若 n 的值为 3,a 数组中的值为: 则返回主程序后 a 数组中的值应为: (分数:40.00)_正确答案:()解析:void fun(int aN, int n) int i,j; for(i=0;iN;i+) for(j=0;j=i;j+) aij=aij*n; 解析 首先从数组中找出要被乘以 n 的那部分元素,这一过程其实就是找出将被挑出的元素在原数组中的分布规律的过程。通过观察得出,要被处理的元素下标值的范围是每行中从第一个元素开始,直到列数等于该行行数时为止。找到这个规律后,依次从数组中取得符合要求的元素,然后乘以 n。