首页 > 全部 > 二级C语言 > 国家二级C语言机试(操作题)模拟试卷266

国家二级C语言机试(操作题)模拟试卷266

本单篇文档共3541字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C语言 章节练习 1237人下载
价格: 1.00 原价:¥9.00
收藏

国家二级C语言机试(操作题)模拟试卷266

程序填空题

1.给定程序中,函数fun的功能是:计算X所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回给主函数,将小于平均值且最接近平均值的数作为函数值返回,并在主函数中输出。

例如,有10个正数:46、30、32、40、6、17、45、15、48、26,平均值为30.500000。

主函数中输出m=30。

请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!

试题程序:

1 #include<Stdlib.h>

2 #include<Stdio.h>

3 #define N 10

4 double fun(double X[],double*av)

5 {int i,j;double d,S ;

6 s=0;

7 for(i=0,i<N,i++)s=s+x[i];

8 /*********found*********/

9 【1】=S/N;

10 d=32767;

11 for(i=0;i<N;i++)

12 if(x[i]<*av&&*av-x[i]<=d){

13 /*********found*********/

14 d=*av-x[i];

15 j=【2】

16 }

17 /*********found*********/

18 return【3】

19 }

20 main()

21 {int i;double x[N],av,m;

22 for(i=0;i<N;i++)

23 { x[i]=rand()%50;

24 printf(\\

(1)*av

(2)i

(3)x[j]

解析:填空1:从原程序中可以看出*av代表的是平均值,而s/N表示的就是平均值,因此本空应该填*aV。

填空2:if语句来判断找最接近平均值的数,因而此空应该填i。

填空3:题目要求将小于平均值且最接近平均值的数作为函数返回,而j表达的是最接近平均值的数在数组中的下标,因而本空应该填写x[j]。

程序修改题

2.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1,1,2,3,5,8,13,21。…

例如,若给n输入7,则该项的斐波拉契数值为13。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stctio.h>

long fun(int g)

{

/*********found*********/

switch(g);

{

case 0:return 0;

/*********found*********/

case 1;case 2:return 1;

}

return(fun(g-1)+fun(g-2));

}

void main()

{

long fib;int n;

printf(\\

(1)去掉分号

(2)case 1:case 2:retum 1;

解析:本题考查:switch语句。其一般形式如下:

switch(表达式){

case常量表达式1:语句l;

case常量表达式2:语句2;

case常量表达式n:语句n;

default:语句n+1;

}

其中switch(表达式)后不应该带有“;”,同时case语句常量后应该是“:”。

C语言中,switch语句之后不能有分号,并且case语句常量后应用的是冒号。

程序设计题

3.请编写函数fun,该函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放入主函数的age数组中。要求函数把0~9岁年龄段的人数放在d[0]中,把10~19岁年龄段的人数放在d[1]中,把20~29岁年龄段的人数放在d[2]中,依此类推,把100岁(含100岁)以上年龄的人数都放在d[10]中。结果在主函数中输出。

注意:部分源程序在文件PROG1.C中。

请勿改动mmn函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

试题程序:

#include<stdio.h>

#define N 50

#define M 11

void fun(int*a,int;*b)

{

}

double rnd()

{

static t=29,c=217,m=1024,r=0;

r=(r*t+c)%m;

return((doubZe)r/m);

}

void main()

{

FILE*wf;

int age[N],i,d[M];

int b[N]={32,45,15,12,86,49,97,3,44,52,17,95,63};

for(i=0;i<N;i++)

age[i]=(int)(115*rnd());

/*产生一个随机的年龄数组*/

printf(\\

Void fun(int*a,int*b)

{

int i,j;

for(j=0;j<M;j++)

b[j]=0;/*数组b初始化为0*/

for(i=0;i<N;i++)

if(a[i]>=100)

b[10]++;/*如果年龄大于等于100,b[10]自增1*/

else

b[a[i]/10]++;/*如果年龄小于100,则将其分别统计到b[a[i]/10]中*/

}

解析:本题是一个分段函数的问题,用两个循环来完成。第1个循环的作用是使b中的所有元素值都为0。这个循环不能省略,因为若未对b中的元素赋初值,则它们的值是不可预测的。第2个循环的作用是分别统计a中各年龄段的人数。当a[i]≥100时,按题意要将其统计到b[10]中。else的作用是如果年龄小于100,则将其分别统计到b[a[i]/10]中。由运算优先级可知先进行a[i]/10的运算,所得结果作为b的下标。若a[i]为0~9时,a[i]/10的值为0,且0~9岁的人数正好要存入b[0]中。若a[i]为10~19时,a[i]/10的值为1,且10~19岁的人数正好要存入b[1]中,依此类推。

本文档预览:3600字符,共3541字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C语言机试(操作题)模拟试卷266

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号