国家二级C语言机试(操作题)模拟试卷553
程序填空题
1.函数fun的功能是:输出a所指数组中的前n个数据,要求每行输出5个数。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<stcllib.h>
void fun(int *a,int n)
{int i;
for(i=0;i<n;i++)
{
/*********found*********/
if(【1】==0)
/*********found*********/
printf(\\
(1)i%5
(2)\n
(3)a[i]
解析:填空1:每行输出5个数,即当下标值能整除5时换行。
填空2:输出换行符’\n’。
填空3:输出数组元素。
程序修改题
2.给定程序MODI1.C中,fun函数的功能是:在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。处理后原数列中首尾2个数不变。处理后数列在主函数中输出。
例如,有10个正整数如下:
初始数列为:6 5 7 23 18 5 8 21 45 38
第1组数为:6 5 7 中值为:6
替换后的数列为:6 6 7 23 18 5 8 21 45 38
第2组数为:5 7 23 中值为:7
替换后的数列为:6 6 7 23 18 5 8 2l 45 38
第3组数为:7 23 18 中值为:18
替换后的数列为:6 6 7 18 18 5 8 2l 45 38
第4组数为:23 18 5中值为:18
替换后的数列为:6 6 7 18 18 5 8 21 45 38
第5组数为:18 5 8 中值为:8
替换后的数列为:6 6 7 18 18 8 8 21 45 38
第6组数为:5 8 21 中值为:8
替换后的数列为:6 6 7 18 18 8 8 21 45 38
第7组数为:8 21 45 中值为:21
替换后的数列为:6 6 7 18 18 8 8 21 45 38
第8组数为:21 45 38 中值为:38
替换后的数列为:6 6 7 18 18 8 8 21 38 38
最终结果为:6 6 7 18 18 8 8 21 38 38
请改正程序中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<Stdio.h>
#define N 10
int findmid(int a,int b,int c)
{int t;
t=(a>b)? (b>c?b:(a>c?c:
a)):((a>c)?a:((b>c)?c:b));
/*********found*********/
return b;
}
void fun(int x[])
{int i,a,b,c,t[N];
/*********found*********/
for(i=0;i<N;i++)t[i]=x[i]
for(i=0;i<N一2;i++)
{a=t[i];b=t[i+1];c=t[i+2];
/*********found*********/
t[i+1]=findm~d(a,b,c);
}
}
main()
{int i,x[N]={6,5,7,23,18,5,8,21,45,38);
for(i=0;i<N;i++)
printf(\\
(1)retum t;
(2)for(i.0;i<N;i++)t[i]=x[i];
(3)x[i+1]=findmid(a,b,c);
解析:(1)函数findmid的功能是找到a、b、c三个数中的中间数,并存放在变量t中,因此应返回t。
(2)语法错误,句末缺少分号。
(3)本程序是对数组x进行操作,数组t只是用来暂时存放数组x中的元素,因此此处应为x[i+1] =findmid(a,b,c)。
程序设计题
3.请编写函数fun,函数的功能是查找x在s所指数组中下标的位置,并作为函数值返回,若x不存在,则返回一1。
注意:部分源程序在文件PROG1.C文件中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#include<stdlib.h>
#define N 15
void NONO();
int fun(int *s,int x)
{
}
main()
{int a[N]={29,13,5,22,10,9,
3,18,22,25,1 4,1 5,2,7,27},i,x,
index;
printf(\\
int fun(int*s,int x)
{int i;
for(i=0;i<N;i++)
if(x==s[i])return i;
return一1;
}
解析:要找出数组中指定数据的下标,首先定义变量i用于存放数组下标,然后使用循环语句对数组进行遍历,依次取出一个数组元素与指定的数进行比较,若相等,则返回该元素的下标,否则继续判断下一个元素,直到数组结束。若数组结束时仍没有找到与指定数相等的元素,则返回一1。
本文档预览:3600字符,共3154字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载