1、国家二级 C语言机试(操作题)模拟试卷 646及答案与解析 一、程序填空题 1 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。此程序的描述是围绕山顶一圈有 N个山洞,编号为 0、 1、 2、 3、 、 N-1,有一只狐狸和一只兔子在洞中居住。狐狸总想找到兔子并吃掉它,它的寻找方法是先到第一个洞 (即编号为 0的洞 )中找;再隔 1个洞,即到编号为 2的个洞中找;再隔 2个洞,即到编号为 5的洞中找;下次再隔 3个洞;即到编号为 9的洞中找; 。若狐狸找一圈,请为 兔子指出所有不安全的洞号。程序中用 a数组元素模拟一个洞,
2、数组元素的下标即为洞号,数组元素中的值为 0时,表示该洞安全,为 1时表示该洞不安全。若形参 n的值为 30时,不安全的洞号是 0、 2、 59、 14、 20、 27。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #define N100 void fun(int*a, int n) int i, t; for(i=0; i n; i+) *found* ai=【 1】 ; i=0; *found* 【 2】 =1; whi
3、le(i n) ai=1; t+; *found* i=【 3】 ; main() int aN, i, n=30; fun(a, n); for(i=0; i n; i+) if(ai=1) printf(“不安全的洞号是: d n“, i); 二、程序修改题 2 使用 VC+2010打开考生文件夹下 modi1中的解决方案。此解决方案的项目中包含一个源程序文件 modi1 c。在此程序中,函数 fun的功能是:根据整形参 m的值,计算如下公式的值。 例如,若 m中的值为 5,则应输出 0 536389。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MODI1 C中,不要
4、改动 main函数,不得增行或删行,也不得更改程序的结构 !试题程序: #include stdio h double fun(intm)double y=1 0; int i;*found* for(i=2; i m; i+) *found* y-=1 (i*i); return(y); main()int n=5; printf(“ nThe result is lf n“, fun(n); 三、程序设计题 3 使用 VC+2010打开考生文件夹下 prog1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 c。在此程序中,编写函数 fun,其功能是:计算 n门课程的平均分,
5、结果作为函数值返回。 例如,若有 5门课程的成绩是: 90 5, 72, 80, 61 5, 55,则函数的值为71 80。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h float fun(float*a, int n) void main() float score30=90 5, 72, 80, 61 5, 55, aver; aver=fun(score, 5); printf(“ nAverage score is: 5 2f n“, aver); 国家二级
6、C语言机试(操作题)模拟试卷 646答案与解析 一、程序填空题 1 【正确答案】 (1)0 (2)t (3)i+t 【试题解析】 首先为数组所有元素赋初值 0,利用循环为符合条件的数组赋值为1,并计算下一个数据的下标。设置一个变量存放间隔数, 每次循环间隔数加 1。本次下标加间隔数加 1为下一个下标。 填空 1:利用循环为数组所有元素赋值为。 填空 2:变量 t为间隔数,在循环过程中每次加 1,设定初始值为 1。 填空 3:下一个数组下标为本次的下标加间隔数加 1的值。 二、程序修改题 2 【正确答案】 (1)for(i=2; i =m; i+) (2)y-=1 0 (i*i); 【试题解析】
7、 (1)使用 for循环计算公式,必须计算到 m,所以应改为 for(i=2; i =m; i+)。 (2)在除法运算中,如果除数和被除数都是整数,那么所除结果也是整数,因 此应改为 y-=1 0 (i*i)。 三、程序设计题 3 【正确答案】 float fun(float*a, int n) float av=0 0; int i; for(i=0; i n; i+) *求分数的总和 * av=av+ai; return (av n); *返回平均值 * 【试题解析】 本题较简单,只需用一个循环语句就可完成数组元素的求和,再将和除以课程数即可。需要注意的是本题对指针的操作,当指针变量指向一个数组时,用该指针变量引用数组元素,引用方式与数组的引用方式相同。例 如,本题中 a指向了 score,所以通过 a引用 score中的元素时可以用下标法,也可以用指针运算法, ai和 *(a+i)具有相同的作用。下标运算实际上是从当前地址开始往后取出地址中的第几个元素,当前地址下标为 0。例如,若有 int cc10,*p=cc+5;,即 p指向了 cc的第 5个元素,则 p0的作用与 cc5相
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1