2013年计算机二级C语言上机题库及解析十七

牛课网 考试宝典 更新时间:2024-05-18 16:47:33

计算机二级c语言 历年计算机二级c语言题库及答案 计算机二级历年真题c语言

填空题
给定程序中,函数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;
for(i=0; ifor(i=j=0; iif( x[i]{
y[j]=x[i]; x[i]=-1; __2__;}
i=0;
while(i{ if( x[i]!= -1 ) y[j++]=x[i];
__3__;
}  
for(i=0; ireturn av;
}
main()
{ int i; double x[N];
for(i=0; iprintf("");
printf("The average is: %f",fun(x));
printf("The result :",fun(x));
for(i=0; iprintf("");
}
解题思路:
第一处:求出N个数的平均值,所以应填:N。
第二处:利用for循环语句,把数组x中小于平均值的数,依次存放到数组y中,其中位置由变量j来控制,所以应填:j++。
第三处:i是while循环体的控制变量,每做一次循环均要加1。
改错题
给定程序MODI1.C中函数 fun 的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。
例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
fun ( char *s, int num[5] )
{ int k, i=5;
for ( k = 0; knum[i]=0;
for (; *s; s++)
{ i = -1;
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( "Please enter a string: " ); gets( s1 );
fun ( s1, num1 );
for ( i=0; i < 5; i++ ) printf ("%d ",num1[i]); printf ("");
}
解题思路:
第一处:num初始化错误,应为:num[k]=0;。
第二处:由于s是指针型变量,所以应改为:switch(*s)。

编程题
请编写函数 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;
clrscr();
printf ( "The original data is : " );
for ( i=0; i{ for ( j =0; jprintf ("");
}
y = fun ( aa );
printf( "The sum: %d" , y );
printf("");
NONO( );
}
解题思路:
本题是统计二维数组周边元素值之和,但要注意的是不要重复计算四个角上的元素值,结果作为函数值返回。
参考答案:
int fun ( int a[M][N] )
{
int tot = 0, i, j ;
for(i = 0 ; i < N ; i++) {
tot += a[0][i] ;
tot += a[M-1][i] ;
}
for(i = 1 ; i < M - 1 ; i++) {
tot += a[i][0] ;
tot += a[i][N-1] ;
}
return tot ;
}

考试宝典安装说明

宝典适用于手机、电脑、平板,您可安装客户端或在浏览器使用。

电脑版

手机版

网页版

考试宝典咨询
服务热线

TEL:029-88699698