1、国家二级 C语言机试(操作题)模拟试卷 470及答案与解析 一、程序填空题 1 给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和 3门课的成绩。函数 fun的功能是将该学生的各科成绩都乘以一个系数 a。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h typedef struct int num; char name9; float score3; STU; void show(STU tt) int i; print f(“ d
2、 s: “, tt num, tt name); for(i=0; i 3; i+) print: f(“ 5 1f“ ,tt scorei); print: f(“n“); /*found*/ void modify(【 1】 *ss, float a) int i; for(i=0; i 3; i+) /*found*/ ss一 【 2】 *=a; main() STU std=1, “Zhanghua“, 76 5, 78 0, 82 0; float: a; print: f(“nThe original num bet and name and scores: n“); show(s
3、td); print: f(“knlnput a number: “); scanf(“ f“, &a); /*found*/ modify(【 3】 , a); printf (“nA result of modif ying: n“); show(std); 二、程序修改题 2 下列给定程序中,函数 fun的功能是: 求 k!(k 13),所求阶乘的值作为函数值返回。例如,若 k=10,则应输出3628800。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include eonio h #include
4、stdio h long fun(int k) /*found*/ if k 1 return(k* fun(k一 1); return 1; main() int k=10; printf(“ d!= ldn“, k, fun(k); 三、程序设计题 3 程序定义了 NN的二维数组,并在主函数中自动赋值。请编写函数 fun(int aN, int n),该函数的功能是:使数组左下半三角元素中的值乘以 n。例如,若n的值为 3, a数组中的值为: 则返回主程序后 a数组中的值应为: 注意:部分源程序给出如下。 请勿改动函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的
5、若干语句。 试题程序:#inclucle stdio h #inclucle conio h #inclucie stdlib h #define N 5 void fun(int aN, int n)main() int aNN, n, i, j; printf (“*The array *n“); for(i=0 ; i N; i+) for(j=0 ; j N; j+) aij=rand() 10; printf(“ 4d“, aij); printf(“n“); n=rand() 4; printf(“n= 4dn“, n); fun(a, n); printf(“*TGE RESUL
6、T*n“); for(i=0; i N; i+) for(j=0; j N; j+) printf(“ 4d“, aij); printf(“n“); 国家二级 C语言机试(操作题) 模拟试卷 470答案与解析 一、程序填空题 1 【正确答案】 (1)STU (2)scorei (3)&std 【试题解析】 本题考查:数组变量赋值;函数实参定义。 本题是利用结构体存储学生记录,对记录进行修改并由实参 ss返回。 填空 1:实参 ss是一个结构型指针变量,所以应填 STU。 填空 2:该学生的各科成绩都乘以一个系数 a,所以应填 scorei。 填空 3:函数的调用,由于函数定义时使用的指针结构
7、型变量,所以应填 &std。 二、程序修改题 2 【正确答案】 if(k 1) 【试 题解析】 本题考查: if语句,考生需要根据题意来确定 if语句是否是正确的, if条件语句经常考,考生需掌握。 语法错误, if条件表达式应写在小括号内。 三、程序设计题 3 【正确答案】 void fun (int aN,int n) int i, j; for(i=0; i N; 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