1、国家二级( C语言)机试模拟试卷 229及答案与解析 一、程序填空题( 30分) 1 给定程序中。函数 fun的功能是:找出 100至 x(x999)之间各位上的数字之和为15的所有整数,然后输出;符合 条件的整数个数作为函数值返回。 例如,当 n值为 500时,各位数字之和为 15的整数有: 159、 168、 177、 186、 195、 249、 258、 267、 276、 285、 294、 339、 348, 357, 366, 375, 384, 393, 429、 438, 447、 456、 465、 474、 483、 492。共有 26个。 请在程序的下划线处填入正确的内
2、容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行。也不得更改程序的结构 ! #include int fun(int x) int n, s1, s2, s3, t; /*found*/ n= 【 1】; t=100; /*found*/ while(t999| x #include #include=A&*str=Z|*str=a & * str=z) if( * str=Z) * str=A; else if(* str=z) *str=a; else * str+=1; /*found* (*str)+; void main
3、() char str80; printf(“n Enter a string with length80 :nn gets(str); printf(“ n The string: n n“); puts(str); fun(str); printf(“ n n The Cords: n n“); puts(str); 三、程序设计题( 40分) 3 程序定义了 NN的二维数组,并在主函数中自动赋值。请编写函数 fun,函数的功能是:使数组右上三角元素中的值乘以 m。 例如;若 m的值为 2, a数组中的值为: 则返回主程序后 a数组中的值应为: 注意:部分源程序存在文件 PROGl C文件
4、中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #iticlude#include#define N 5void fun(int aN, int m)main() int aNIN, m, i, j; void NONO(); printf(“*The array* n“), for(i=0; i=3); printf(”m= 4d n”, m); fun(a, m); printf(”THE RESULT n”); for(i=0; i 国家二级( C语言)机试模拟试卷 229答案与解析 一、程序填空题( 30分) 1 【正确答案】 (
5、1)0 (2)x (3)t+或 t=t+1 【试题解析】 第一空:由 “return n; “可知, n是返回值, n计数了满足题干条件的 x的个数,故第一空处 n的初始化为 0,因此第一空应为 “0“。 第二空:根据主函数中 fun函数的调用 “fun(x)“,可知 fun函数的参数 x是循环的终止条件,即循环变量 t从 100开始到 x结束,故第二空处应为 “x“。 第三空:在 while循环体内没有 t变化的语句,因此第三空处是 t自增,因此第三空处应为 “t+“或 “t=t+1“。 二、程序修改题( 30分) 2 【正确答案】 (1)错误: (*str+); 正确: str+ (2)错
6、误: while1*str!= 正确: while(*str)或 while(*str!=0)或 while(*str!=0) 【试题解析】 首先判断字母是否为小写字母,如果是小写字母则进行转换。 第一个标识下 “while(*str!=)”语句原意是 str不指向字符串尾就进入下面的循环,所以对于指针判断不为结束符的语句应该是循环里为真,所以应为“while(*str)”或 “while(*str!=0)”或 “while(*str!=0)”。 第二个标识下 “(*str)+; ”是对字符内容加 1,而原题是对字符位置加 1,所以将其改为 “str+; ”。 三、程序设计题( 40分) 3 【正确答案】 int i, j ; for(i=0; iN; i+) for(J=i; jN; J+) aij*=m; 【试题解析】 (1)右上半角的元素是行下标小于等于列下标,即 “i=j“包括对角线。 (2)依次访问二维数组,把符合条件的元素的值乘以 m。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1