1、国家二级 C语言机试(操作题)模拟试卷 664及答案与解析 一、程序填空题 1 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。在此程序中,函数 fun的作用是:统计整型变量m中各数字出现的次数,并存放到数组 a中,其中: a0存放 0出现的次数, a1存放 1出现的次数, a9 存放 9出现的次数。 例如,若 m为 14579233,则输出结果应为: 0, 1, 1, 2, 1, 1, 0, 1, 0, 1, 请在程序的下划线处填入正确的内容并把下划线删除,使程 序得出正确的结果。 注意:源程序存放在考生文件夹下的 BL
2、ANK1 C中。不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h void fun(int m, int a10) int i; for(i=0; i 10; i+) *found* 【 1】 =0; while(m 0) *found* i=【 2】 ; ai+; *found* m=【 3】 ; main() int m, a10, i; printf(“请输入一个整数: “); scanf(“ d“, &m); fun(m, a); for(i=0; i 10; i+) printf(“ d, “, ai); printf(“ n); 二、程序修改题
3、 2 使用 VC+2010打开考生文件夹下 modi1中的解决方案。此解决方案的项目中包含一个源程序文件 modi1 c。在此程序中,函数 fun的功能是:将 tt所指字符串中的小写字母全部改为对的大写字母,其他 字符不变。 例如,若输入 “Ab, cD”,则输出 “AB, CD”。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include conio h #include stdio h #include string h char*fun(char tt) int i; for(i=0; tti; i+
4、) *found* if(tti =a)|(tti =z) *found* tti+=32; return(tt); main() char tt81; printf(“ nPlease enter a string: “); gets(tt); printf(“ nThe result string is: n s“, fun(tt); 三、程序设计题 3 使用 VC+2010打开考生文件夹下 prog1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 c。此程序定义了 NN的二维数组,并在主函数中自动赋值。请编写函数 fun(int aN, int n),该函数的功能是:使数
5、组左下半三角元素中的值乘以 n。例如,若 n的值为 3, a数组中的值为: 则返回主程序后 a数组中的值应为: 注意:部分源程序给出如下。请勿改动函数 mmn和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序: #include stdio h #include conio h #include stdlib h#define N5void 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() 1
6、0;printf(“ 4d“, aij); printf(“ n“); n=rand() 4; printf(“n= 4d n“, n);fun(a, n); printf(“*THE RESULT* n“); for(i=0ji N; i+)for(j=0; jN; j+)printf(“ 4d“, aij); printf(“ n“); 国家二级 C语言机试(操作题)模拟试卷 664答案与解析 一、程序填空题 1 【正确答案】 (1)ai (2)m 10 (3)m 10 【试题解析】 数组 a各元素初始化为 0,用求余和整除相结合的方法得到数字的每一位数字,并用它做为数组 a的下标,相应元
7、素加 1。 填空 1:数组 a的 10个元素赋值为 O。 填空 2: m 10可得到数 m的最后一位数字。 填空 3: m 10可使数字截短,即去掉最后一位。 二、程序修改题 2 【正确答案】 (1)if(tti =a)&(tti =z) (2)tti-=32; 【试题解析】 (1)分析本题可知,要判断字符是否为小写字母,即判断其是否在a z之间,所以这里需要进行连续的比较,用 &。 (2)从 ASCII码表中可以看出,小写字母的 ASCII码值比对应大写字母的 ASCII值大 32。将字符串中的小写字母改为大写字母的方法是:从字 符串第一个字符开始,根据 ASCII码值判断该字母是不是小写字母,若是,则 ASCH码值减 32。 三、程序设计题 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; 【试题解析】 首先从数组中找出要被乘以 n的那部分元素,这一过程其实就是找出将被挑出的元素在原数组中的分布规律的过程。通过观察得出,要被处理的元素下标值的 范围是每行中从第一个元素开始,直到列数等于该行行数时为止。找到这个规律后,依次从数组中取得符合要求的元素,然后乘以 n。