国家二级C语言机试(操作题)模拟试卷325
程序填空题
1.下列给定程序中,函数fun的功能是:把形参a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小值放在a[1]中,再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]中,依此类推。
例如,若a所指数组中的数据最初排列为:1、4、2、3、9、6、5、8、7,按规则移动后,数据排列为:9、1、8、2、7、3、6、4、5。形参n中存放a所指数组中数据的个数。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.n>
#define N 9
/*********found*********/
void fun(int 【1】,int n)
{ int i,j,max,min,px,pn,t;
/*********found*********/
for(i=0;i<n一1;i+=【2】)
{ max=min=a[i];
px=pn=i;
/*********found*********/
for(j=【3】;j<n;j++)
{if(max<a[j])
{max=a[j]; px=j;}
if(min>a[j])
{min=a[j];pn=j;)
}
if(px!=i)
{t=a[i];a[i]=max;
a[px]=t;
if(pn==i)pn=px;
}
if(pn!=i+1)
{t=a[i+1];a[i+1]=min;
a[pn]=t;)
}
}
main()
{int b[N]={1,4,2,3,9,6,5,8,7),i;
printf(\\
(1)a[]
(2)2
(3)i+1
解析:填空1:由main中的函数调用语句确定函数定义的形式参数。
填空2:for循环语句中,循环变量增值为2。
填空3:确定for语句循环变量的初值。
程序修改题
2.下列给定函数中,函数fun的功能是:统计字符串中各元音字母(即A、E、I、O、U)的个数。注意:字母不分大小写。
例如,输入”THIs is a boot”,则应输出是1 0 2 2 0。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
1 #include<stdlib.h>
2 #include<conio.h>
3 #include<stdio.h>
4 /*********found*********/
5 fun(char*s,int num[5])
6 { int k,i=5;
7 for(k=0;k<i;k++)
8 /*********found*********/
9 num[i]=0;
10 for(;*s;s++)
11 { i=-1;
12 /*********found*********/
13 switch(s)
14 { case’a’:case’A’:
15 { i=0;break;}
16 case’e’:case’E’:
17 {i=1;break;}
18 case’i’:case’I’:
19 {i=2;break;}
20 case’o’:case’O’:
21 {i=3;break;}
22 case’u’:case’U’:
23 {i=4;break;)
24 }
25 if(i>=0)
26 num[i]++;
27 }
28 }
29 void main()
30 { char sl[81];~nt numl[5],i;
31 system(”CLS”);
31 printf(\\
(1)void fun(char*s,int num[5])
(2)num[k]=0;
(3)switch(*s)
解析:switch语句说明如下:
(1)switch后的表达式,可以是整型或字符型,也可以是枚举类型。在新的ANSIC标准中允许表达式的类型为任何类型。
(2)每个case后的常量表达式只能是由常量组成的表达式,当switch后表达式的值与某一个常量表达式的值一致时,程序就转到此case后的语句开始执行。如果没有一个常量表达式的值与switch后的值一致,就执行default后的语句。
(3)各个case后的常量表达式的值必须互不相同。
(4)各个case的次序不影响执行结果,一般情况下,尽量将出现概率大的case放在前面。
(5)在执行完一个case后面的语句后,程序会转到下一个case后的语句开始执行,因而必须使用break语句才能跳出。
程序设计题
3.编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。
例如,若n为1000时,程序输出应为:s=153.909064。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<math.h>
#include<stdio.h>
double fun(int n)
{
}
main()/*主函数*/
{ void NONO()j
printf(\\
double fun(int n)
{
double sum=0.0;
int i;
for(i=21;i<=n;i++)
if((i%3==0)&&(i%7==0))
sum+=i ;
return sqrt(sum);
}
解析:本题考查算术运算的算法,首先利用一个for循环判断小于n且能同时被3和7整除的整数,并将满足条件的整数累加到sum,之后调用sqrt函数计算sum的平方根,并作为函数的返回值。
本文档预览:3600字符,共3588字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载