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

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

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

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

程序填空题

1. 给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。

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

移动后的输出为:30 6 17 15 26 46 32 40 45 48

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

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include

#include

#define N 10

double fun(double *x)

{ int i,j;double av,y[N];

av=0;

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

for(i=0; i<N; i++) av +=【1】;

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

if(x[i]<av){

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

y[j]=x[i];

x[i]=一1; 【2】;}

i=0;

while(i<N)

{ if(x[i]!=一1)y[j++]=x[i];

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

【3】;

}

for(i=0;i<N;i++)x[i]=y[i];

return av;

}

main()

{ int i;double x[N];

for(i=0;i<N;i++){x[i]=rand()%50;

printf(\\

(1)x[i]/N

(2)j++或j=j+1

(3)i++或i=i+1

解析:第一空:“for(i=0;i<N;i++)av+=【1】;”在该循环的下一个循环内是逐个比较元素x[i]是否小于av,即该循环的功能是求出平均值。由“av=(x[0]+x[1]+…x[N一1])/N=x[0]/N+x[1]/N+…+x[N一1]/N”可知,第一空处应为“x[i]/N”。

第二空:“if(x[i]<av){y[j]=x[i];x[i]=-1;【2】;”如果x[i]小于平均值则将x[i]存储在y数组中,变量i是循环变量,变量j记录数组y的下标变化,下一次执行if内部语句时,y数组的下标应为下一个位置,故第二空处应为j加1,即第二空出为“j++”或“j=j+1”。

第三空:i为while循环的循环变量,第一次进入while的时候i为0,判断第一个元素x[0]是否是-1,第二次进入的时候判断第二个元素x[1]是否是-1,依此类推直到i=N退出循环,故第三处是变量i自增,即第三空处为“i++”或“i=i+1”。

程序修改题

2. 给定程序MODI1.C中函数fun的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。

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

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

#include

void fun(char *s,int num[5])

{ int k,i=5;

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

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

num[i]=0;

for(;*s;s++)

{ i=一1;

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

switch(s)

{ case’a’:case ’A’:{i=0;break;}

case’e’:case’E’:{i=1;break;}

case’i’:case’I’:{i=2;break;}

case’o’:case’O’:{i=3;break;}

case’u’:case’U’:{i=4;break;}

}

if(i>=0)

num[i]++;

}

}

main()

{char s1[81];int num1[5],i;

printf(\\

(1)num[k]=0;

(2)switch(*s)

解析:(1)第一个标识下的for循环过程是将num数组中的变量初始值设置为0,用来统计每一个元音字母出现的个数,for循环中的循环条件表达式中的变量是k,所以第二个标识下“hum[i]=0;”改为“num[k]=0;”。

(2)第二个标识下的switch-case条件选择的功能应该是对s指针指向的字符串中的每一个字符进行判断,不应该是s的数组名,所以第三个标识下“switch(s)”改为“switch(幸s)”。

程序设计题

3. 请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。

例如:二维数组中的值为:

1 3 5 7 9

2 9 9 9 4

6 9 9 9 8

1 3 5 7 0

则函数值为61。

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

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

#include

#define M 4

#define N 5

int fun(int a[M][N])

{

}

main()

{

Int aa[M][N]={{1,3,5,7,9},

{2,9,9,9,4),{6,9,9,9,8},{1,3,

5,7,0}};

int i,j,y;void NONO();

printf(\\

int tot=0, i, j;

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

tot+=a[0][i];

tot+=a[M-l][i];

}

for(i=l; KM

-1; i++){

tot+=a[i][0];

tot+=a[i][N-1];

}

return tot;

解析:进入fun函数,根据前面的分析:求周边元素的和,可以采用两个循环分别把行元素和列元素相加。但要避免把周边元素重复相加。

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

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

推荐资源

客服

扫码添加客服微信

热线

官方客服

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

电话客服:

客服微信:pujinet

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

公众号

扫码关注微信公众号