1、国家二级( C语言)机试模拟试卷 168及答案与解析 一、程序填空题( 30分) 1 二、程序修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:找出 100至 n(不大于 1000)之间三位数字相等的所有整数,把这些整数放在 s所指数组中,个数作为函数值返回。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #include #define N 100 int fun(int*s, int n) int i, j, k, a, b, c; j=0; for(i=100; i1000); n
2、um=fun(a, n); prntf(“ n nThe result: n“); for(iz0; i #include #define N 81 fun (char *s) NONO() /* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ int i ; char aN ; FILE *rf, *wf ; rf = fopen(“in.dat“,“r“); wf = fopen(“out.dat“,“w“); for(i = 0 ; i =0;_2_)”循环变量 j从 N-1开始,到 0结束,共循环 N次,故 j每次减一,第三空处是 “j-”。 第三空
3、最后一个循环将临时数组中的元素成为最后一列,即 tjN-1=rj,故第三空处应为 “j”。 二、程序 修改题( 30分) 2 【正确答案】 (1)k=i; (2)c=k 10; 【试题解析】 (1)第一个标识下的 “k=n“, n是一个固定值,循环计算结果每次都会一样,这里应该是从 100开始往 n计算,逐个求个位、十位和百位,故第一标识下应改为 “k=i; “。 (2)C语言语句以分号 “; “结尾,而第二标识下 “c=k 10“没有用分号结尾,显然不正确,应改为 “c=k 10; “。 三、程序设计题( 40分) 3 【正确答案】 char bN; int i=0, j; memset(b, 0, N); for(j=strlen(s)-1; j=0; j-)bi+=sj; strcpy(s, b); 【试题解析】 进入 fun函数,根据前面的分析: 首先求得字符串的长度,然后通过循环进行字符交换。要注意的是,如果字符串长度是奇数,则最中间的元素在逆置前后的位置是没有改变的。