全国计算机等级考试二级C语言上机考试试题详解 下载本文

第四部分 全国计算机等级考试二级C语言上机考试试题详解

第7章全国计算机等级考试二级C语言上机考试试题 第1套

填空题:请补充main函数,该函数的功能是:把一个字符串中的所有小写字母字符全部转换成大写字母字符,其他字符不变,结果保存原来的字符串中。 例如:当str[N]=“123 abcdef ABCDEF!”时,结果输出:“123ABCDEFABCDEF!”。 注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序:

#include #include #include #define N 80 main()

{ int i;

char str[N]=\; char *pf=str;

printf(\; puts(str); 【1】 ; while(*(pf+j))

{ if(*(pf+j)>='a'&&*(pf+j)<='z') { *(pf+j)= 【2】 ;j++;} else

【3】 ; }

printf(\; puts(str);

system(\;

}

改错题:下列给定程序中,函数fun()的功能是逐个比较a,b两个字符串对应位置中的字符,把ASCⅡ值小或相等的字符依次存放到c数组中,形成一个新的字符串。 例如:a中的字符串为fshADfg,b中的字符串为sdAEdi, 则c中的字符串应为fdAADf。 请改正程序中的错误,使它能得到正确结果。

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

#include #include

void fun(char *p,char *q,char *c) { int k=0;

while(*p||*q)

/*************found**************/ { if (*p<=*q) c[k]=*q; else c[k]=*p; if(*p) p++; if(*q) q++;

/*************found**************/ K++ } } main()

{ char a[10]=\,b[10]=\,c[80]={‘\\0’}; fun(a,b,c);

printf(\:\;puts(a); printf(\:\;puts(b); printf(\:\;puts(C);

}

编程题:请编写函数fun(),其功能是将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和十位上,b数的十位和个位数依次放出c数的百位和千位上。

例如,当a=16,b=35, 调用该函数后,c=5361。 注意:部分源程序给出如下。

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

#include

void fun(int a,int b,long *c)

{

} main()

{ int a,b;long c;

printf(\,b;\; scanf(\%d%d\,&a,&b); fun(a,b,&c);

printf(\:%ldln\,c);

}

第2套

填空题:请补充main函数,该函数的功能是求方程ax+bx+c=0的两个实数根。方程的

2

系数a、b、c从键盘输入,如果判别式 (disc=b-4ac)小于0,则要求重新输入a、b、c的值。

例如,当a=1,b=2,c=1时,方程的两个根分别是x1=-1.00,x2=-1.00。 注意:部分源程序给出如下。

2

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

#include\#include main()

{ float a,b,c,disc,xl,x2; do

{ printf(\,b,c:\;

scanf(\%f,%f,%f\,&a,&b,&c); disc=b*b-4*a*c; if(disc<0)

printf(\%f\\n lnput again!\\n\,disc); }while( 【1】 );

printf(\; x1=【2】; x2=【3】;

printf(\%6.2f\\nx2=%6.2f\\n\,x1,x2); }

改错题 :下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。

(m+1)

y=l-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)/(m×m) 例如:m中的值为5,则应输出0.838611。 请改正程序中的错误,使它能得到正确结果。

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

#include #include double fun(int m) { double y=1.0;

/*************found**************/ int j=1, i;

for(i=2;i<=m;i++) { j=-1*j;

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

y+=1/(i*i); }

return(y); } main()

{ int n=5;

printf(\%lf\\n\,fun(n)); }

编程题:请编一个函数void fun(int tt[M][N],int pp[N],tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中

的数已在主函数中给出。

注意;部分源程序给出如下。

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

试题程序:

#include #include #define M 3 #define N 4

void fun(int tt[M][N],int p[N]) { } main()

{ int t[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}}; int p[N],i,j,k;

printf(\:\\n\; for(i=0;i

{ for(j=0;j

printf(\%6d\,t[i][j)); printf(\; }

fun(t,p);

printf(\:\\n\; for(k=0;k

printf(\%4d\,p[k]); printf(\; } 第3套

填空题:数组xx[N]保存着一组3位数的无符号正整数,其元素的个数通过变量num传入函数fun()。请补充函数fun(),该函数的功能是:从数组xx中找出个位和百位的数字相等的所有无符号整数,结果保存在数组中,其个数由函数fun()返回。 例如:当xx[8]={135,78,72,32,222,424,333,141,541}时,bb[6]={787,232,222,424,333,141}。 注意:部分源程序给出如下.

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。 试题程序:

#include #define N 1000

int fun(int xx[],int bb[],int num) { int i,n=0; int g,b;

for(i=0;i

b=xx[i]/100; if(g==b)

【2】 ; }

return 【3】 ; } main()

{ int xx[8]={135,787,232,222,424,333,141,541},yy[N]; int num=8,n=0,i=0;

printf(\; for(i=0;i

printf(\%u\,xx[i]); printf(\; n=fun(xx,YY,num); printf(\; for(i=0;i

printf(\%u\,yy[i]);

}

改错题:下列给定程序中函数fun()的功能是计算1/n!的值。 例如:给n输入5,则输出0.008333。

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

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

试题程序:

#include #include

/*************found**************/ int fun(int n)

{ double result=1.0; if(n==0)

return 1.0;

while(n>1&&n<170)

/*************found**************/ result*=n++; result=1/result; return result; } main()

{ int n;

printf(\:\; scanf(\%d\,&n);

printf(”\\n1/%d!=%lf\\n\,n,fun(n));

}

编程题:编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。