全国计算机等级考试二级C语言上机考试试题详解.docx
- 文档编号:29047059
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:85
- 大小:46.70KB
全国计算机等级考试二级C语言上机考试试题详解.docx
《全国计算机等级考试二级C语言上机考试试题详解.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言上机考试试题详解.docx(85页珍藏版)》请在冰豆网上搜索。
全国计算机等级考试二级C语言上机考试试题详解
第四部分全国计算机等级考试二级C语言上机考试试题详解
第7章全国计算机等级考试二级C语言上机考试试题
第1套
填空题:
请补充main函数,该函数的功能是:
把一个字符串中的所有小写字母字符全部转换成大写字母字符,其他字符不变,结果保存原来的字符串中。
例如:
当str[N]=“123abcdefABCDEF!
”时,结果输出:
“123ABCDEFABCDEF!
”。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#include
#defineN80
main()
{inti;
charstr[N]="123abcdefABCDEF!
";
char*pf=str;
printf("***originalstring***\n");
puts(str);
【1】;
while(*(pf+j))
{if(*(pf+j)>='a'&&*(pf+j)<='z')
{*(pf+j)=【2】;j++;}
else
【3】;
}
printf("******newstring******\n");
puts(str);
system("pause");
}
改错题:
下列给定程序中,函数fun()的功能是逐个比较a,b两个字符串对应位置中的字符,把ASCⅡ值小或相等的字符依次存放到c数组中,形成一个新的字符串。
例如:
a中的字符串为fshADfg,b中的字符串为sdAEdi,则c中的字符串应为fdAADf。
请改正程序中的错误,使它能得到正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
voidfun(char*p,char*q,char*c)
{intk=0;
while(*p||*q)
/*************found**************/
{if(*p<=*q)
c[k]=*q;
elsec[k]=*p;
if(*p)p++;
if(*q)q++;
/*************found**************/
K++
}
}
main()
{chara[10]="fshADfg",b[10]="sdAEdi",c[80]={‘\0’};
fun(a,b,c);
printf("Thestringa:
");puts(a);
printf("Thestringb:
");puts(b);
printf("Theresult:
");puts(C);
}
编程题:
请编写函数fun(),其功能是将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的个位和十位上,b数的十位和个位数依次放出c数的百位和千位上。
例如,当a=16,b=35,调用该函数后,c=5361。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
voidfun(inta,intb,long*c)
{
}
main()
{inta,b;longc;
printf("Inputa,b;");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:
%ldln",c);
}
第2套
填空题:
请补充main函数,该函数的功能是求方程ax2+bx+c=0的两个实数根。
方程的系数a、b、c从键盘输入,如果判别式(disc=b2-4ac)小于0,则要求重新输入a、b、c的值。
例如,当a=1,b=2,c=1时,方程的两个根分别是x1=-1.00,x2=-1.00。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include"math.h"
#include
main()
{floata,b,c,disc,xl,x2;
do
{printf("Inputa,b,c:
");
scanf("%f,%f,%f",&a,&b,&c);
disc=b*b-4*a*c;
if(disc<0)
printf("disc=%f\nlnputagain!
\n",disc);
}while(【1】);
printf("*******theresult*******\n1");
x1=【2】;
x2=【3】;
printf("\nx1=%6.2f\nx2=%6.2f\n",x1,x2);
}
改错题:
下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。
y=l-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)
例如:
m中的值为5,则应输出0.838611。
请改正程序中的错误,使它能得到正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
doublefun(intm)
{doubley=1.0;
/*************found**************/
intj=1,i;
for(i=2;i<=m;i++)
{j=-1*j;
/*************found**************/
y+=1/(i*i);
}
return(y);
}
main()
{intn=5;
printf("\nTheresultis%lf\n",fun(n));
}
编程题:
请编一个函数voidfun(inttt[M][N],intpp[N],tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。
二维数组中的数已在主函数中给出。
注意;部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#defineM3
#defineN4
voidfun(inttt[M][N],intp[N])
{
}
main()
{intt[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}};
intp[N],i,j,k;
printf("Theriginaldatais:
\n");
for(i=0;i {for(j=0;j printf("%6d",t[i][j)); printf("\n"); } fun(t,p); printf("\nTheresultis: \n"); for(k=0;k printf("%4d",p[k]); printf("\n"); } 第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 #defineN1000 intfun(intxx[],intbb[],intnum) {inti,n=0; intg,b; for(i=0;i {g=【1】; b=xx[i]/100; if(g==b) 【2】; } return【3】; } main() {intxx[8]={135,787,232,222,424,333,141,541},yy[N]; intnum=8,n=0,i=0; printf("***originaldata***\n"); for(i=0;i printf("%u",xx[i]); printf("\n\n\n"); n=fun(xx,YY,num); printf("\nyy="); for(i=0;i printf("%u",yy[i]); } 改错题: 下列给定程序中函数fun()的功能是计算1/n! 的值。 例如: 给n输入5,则输出0.008333。 请改正程序中的错误,使它能得到正确结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /*************found**************/ intfun(intn) {doubleresult=1.0; if(n==0) return1.0; while(n>1&&n<170) /*************found**************/ result*=n++; result=1/result; returnresult; } main() {intn; printf("InputN: "); scanf("%d",&n); printf(”\n1/%d! =%lf\n",n,fun(n)); } 编程题: 编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。 例如: n为1000时,函数值应为s=96.979379。 注意: 部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include doublefun(intn) { } main() {intn=1000; printf("s=%f\n",fun(1000)); } 第4套 填空题: 给定程序的功能是判断字符ch是否与串str中的某个字符相同;若相同,什么也不做,若不同,则插在串的最后。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意: 不得增行或删行,也不得更改程序的结构! 试题程序: #include #include voidfun(char*str,charch) { while( *str&&*str! =ch)str++; if(*str 【1】 ch) {str[0]=ch; 【2】=0; } } main() { char s[81],c; printf("\npleaseenterastring: \n"); gets(s); printf("\npleaseenterthecharactertosearch: "); c=getchar(); fun(【3】); printf("\ntheresult is%s\n",s); } 改错题: 下列给定程序中函数fun()的功能是计算正整数num的各位上的数字之平方和。 例如: 输入352,则输出应该是38;若输入328,则输出应该是77。 请改正程序中的错误,使它能得到正确结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include longfun(longnum) /*************found**************/ {longk=1; do {k+=(num%10)*(num%10); num/=10; /*************found**************/ }while(num) return(k); } main() {longn; printf("\Pleaseenteranumber: "); scanf("%ld",an); printf("\n%ld\n",fun(n)); } 编程题: 请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个数,结果由函数返回。 其中Fibonacai数列F(n)的定义为: F(0)=0,F【1】=1,……F(n)=F(n-1)+F(n-2) 例如: t=1000时,函数值为987。 注意: 部分源程序给出如下: 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include intfun(intt) { } main() {intn; n=1000; printf("n=%d,f=%d\n",n,fun(n)); } 第5套 填空题: 请补充函数fun(),该函数的功能是: 把从主函数中输入的字符串str2倒置后接在字符串strl后面。 例如: strl=“Howdo”,str2=“? oduoy”,结果输出: “Howdoyoudo? ”。 注意: 部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #defineN40 voidfun(char*strl,char*str2) {inti=0,j=0,k=0,n; charch,*pl=strl,*p2=str2; while(*(pl+i)) i++; while(*(p2+j)) j++; n=【1】; for(;k<=j/2;k++,j--) {ch=*(p2+k); *(p2+k)=*(p2+j); *(p2+j)=ch; } 【2】; for(;【3】;i++) *(pl+i)=*p2++; *(pl+i)='\0'; } main() {charstrl[N],str2[N]; intm,n,k; printf("***Inputthestringstrl&str2***\n"); printf("\nstrl: "); gets(strl); printf("\nstr2: "); gets(str2); printf("***Thestringstrl&str2***\n"); puts(strl); puts(str2); fun(str1,str2); printf(“***Thenewstring***\n”); puts(str1); } 改错题: 下列给定程序中,函数fun()的功能是找出100~n(n不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。 请改正程序中的错误,使它能得到正确结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #defineN100 intfun(int*s,intn) {inti,j=0,k,a,b,c; for(i=100;i ********************************** {k=n;a=k%10; k/=10;b=k%10; c=k/10; if(a==b+c) ********************************** s[j]=i; } returnj; } main() {inta[N],n,num=0,i; do {printf("\nEntern(<=1000): "); scanf("%d",&n); } while(n>1000); num=fun(a,n); printf("\n\nTheresult: \n"); for(i=0;i printf("%5d",a[i]); printf("\n\n"); } 编程题: 程序定义了N×N的二维数组,并在主函数中自动赋值。 请编写函数fun(inta[][N],intn),该函数的功能是使数组左下半三角元素中的值加上n。 例如: 若n的值为3,a数组中的值为 a=254 169 537 则返回主程序后a数组中的值应为 554 499 8610 注意: 部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #defineN5 fun(inta[][N],intn) { } main() {inta[N][N],n,i,j; printf("*****Thearray*****\n"); for(i=0;i {for(j=0;j {a[i][j]=rand()%10; printf("%4d",a[i][j]); } printf("\n"); } do {n=rand()%10; while(n>=5);/*产生一个小于5的随机数n*/ printf("n=%4d\n",n); fun(a,n); printf("*****THERESULT*****\n"); for(i=0;i {for(j=0;j printf("%4d",a[i][j]); printf("\n"); } } } 第6套 填空题: 请补充函数fun(),该函数的功能是: 按‘0’到‘9’统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。 注意: 不能使用字符串库函数。 例如: 输入“x=112385713.456+0.909*bc”,结果为: 1=3,3=2,5=2,7=1,9=2。 注意: 部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。 试题程序: #include #defineN1000 voidfun(char*tt,intnum[]) {inti,j,bb[10]; char*p=tt; for(i=0;i<10;i++) {num[i]=0; bb[i]=0; } while(【1】) {if(*p>='0'&&*p<='9') 【2】; p++; } for(i=l,j=0;i<10;i=i+2,j++) 【3】; main() {charstr[N]; intnum[10],k; printf("\nPleaseenteracharstring: "); gets(str); printf("\n**Theoriginalstring**\n"); puts(str); fun(str,num); printf("\n**Thenumberofletter**\n"); for(k=0;k<5;k++) {printf("\n"); printf("%d=%d'',2*k+1,num[k]); } printf("\n"); return; } 改错题: 下列给定程序中,函数fun()的功能是求出数组中最小数和次最小数,并把最小数和a[0]中的数对调,次最小数和a[1]中的数对调。 请改正程序中的错误,使它能得到正确结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #defineN20 voidfun(int*a,intn) {inti,m,t,k; ********************************** for(i=0;i {m=i;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 计算机等级考试 二级 语言 上机 考试 试题 详解