第四部分 全国计算机等级考试二级C语言上机考试试题详解
第7章全国计算机等级考试二级C语言上机考试试题 第1套
填空题:请补充main函数,该函数的功能是:把一个字符串中的所有小写字母字符全部转换成大写字母字符,其他字符不变,结果保存原来的字符串中。 例如:当str[N]=“123 abcdef ABCDEF!”时,结果输出:“123ABCDEFABCDEF!”。 注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序:
#include
{ 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
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
{ 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
/*************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
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 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 /*************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,并作为函数值返回。