二级C语言上机题目.docx
- 文档编号:23738462
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:418
- 大小:168.15KB
二级C语言上机题目.docx
《二级C语言上机题目.docx》由会员分享,可在线阅读,更多相关《二级C语言上机题目.docx(418页珍藏版)》请在冰豆网上搜索。
二级C语言上机题目
1.1请补充函数fun,函数fun的功能是求n的阶乘。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
longfun(intn)
{
if(【1】)
return(n*fun(【2】));
return【3】;
}
main()
{
【1】n>1或1 1.2下列给定程序中,函数fun的功能是: 分别统计字符串中大写字母和小写字母的个数。 例如,给字符串s输入: AaaaBBb123CCccccd,则应输出结果: upper=5,1ower=9。 请改正程序中的错误,使它能计算出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /********found********/ voidfun(char*s,inta,intb) { while(*s) { /********found********/ if(*s>='A'&&*s<='z') a++; /********found********/ if(*s>='a'&&*s<='z') b++; s++; } } main() { chars[100]; intupper=0,lower=0; printf("\nPleaseastring: "); gets(s); fun(s,&upper,&lower); printf("\nupper=%dlower=%d\n",upper,lower); (1)错误: voidfun(char*s,inta,intb)正确: voidfun(char*s,int*a,int*b) (2)错误: a++;正确: (*a)++; (3)错误: b++;正确: (*b)++; 1.3请编写一个函数voidfun(char*tt,intpp[]),统计在tt字符串中"a"到"z"26个字母各自出现的次数,并依次放在pp所指数组中。 例如: 当输入字符串abcdefghabcdeabc后,程序的输出结果应该是: 333221110000000000000000000 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include voidfun(char*tt,intpp[]) { } voidmain() { charaa[1000]; intbb[26],k; system("CLS"); printf("\nPleaseenteracharstring: "); scanf("%s",aa); fun(aa,bb); for(k=0;k<26;k++) printf("%d",bb[k]); printf("\n"); 答案voidfun(char*tt,intpp[]) { inti; for(i=0;i<26;i++) pp[i]=0;/*初始化pp数组各元素为0*/ for(;*tt! ='\0';tt++) if(*tt>='a'&&*tt<='z') pp[*tt-'a']++;/*将tt字符串中'a'到'z'26个字母各自出现的次数,依次放在pp数组中,任一个小写字母减去'a'后所得结果正好是它对应的下标*/ } 2.1请补充函数fun,它的功能是: 计算并输出n(包括n)以内所有能被3或7整除的自然数的倒数之和。 例如,在主函数中从键盘给n输入30后,输出为: s=1.226323。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include doublefun(intn) { inti; doublesum=0.0; for(i=1;_【1】;i++) if(i%3==0_【2】_i%7==0) sum+=_【3】_/i; returnsum; } main() { intn; doubles; printf("\nInputn: "); scanf("%d",&n); s=fun(n); printf("\n\ns=%f\n",s); } 【1】i<=n【2】||【3】1.0或(double)1 2.2下列给定程序中,函数fun()的功能是: 根据整型形参m的值,计算如下公式的值。 t=1-1/(2×2)-1/(3×3)-…-1/(m×m) 请改正函数fun()中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include doublefun(intm) {doubley=1.0; intI; /*************found**************/ for(I=2;I /*************found**************/ y-=1/(I*I); return(y); } voidmain() {intn=5; system("CLS"); printf("\nTheresultis%1f\n",fun(n)); } (1)错误: for(I=2;I for(I=2;I<=m;I++) (2)错误: y-=1/(I*I);正确: y-=1.0/(I*I); 2.3请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是: 将大于整数m且紧靠m的k个素数存入所指的数组中。 例如,若输入17,5,则应输出19,23,29,31,37。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include voidfun(intm,intk,intxx[]) { } voidmain() { intm,n,zz[1000]; system("CLS"); printf("\nPleaseentertwointegers: "); scanf("%d%d",&m,&n); fun(m,n,zz); for(m=0;m printf("%d",zz[m]); printf("\n"); } 答案voidfun(intm,intk,intxx[]) { inti,j,n; for(i=m+1,n=0;n {for(j=2;j if(i%j==0)break; if(j>=i)/*如果是素数,放入数组xx中*/ xx[n++]=i; } } 3.1给定程序的功能是: 求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注: 圆面积公式为: S=πr2,在程序中定义的变量名要与公式的变量相同)。 例如,输入圆的半径值: 19.527,输出为: s=598.949991。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仪在横线上填入所编写的若干表达式或语句。 试题程序: #include doublefun(doubler) { return3.14159*_【1】_/2.0; } main() { doublex; printf("Enterx: "); scanf("%lf",_【2】_); printf("S=%lf\n",fun(_【3】_)); } 【1】r*r【2】&x【3】x 3.2下列给定程序中,fun函数的功能是: 根据形参m,计算下列公式的值。 t=1+1/2+1/3+1/4+…+1/m 例如,若输入5,则应输出2.283333。 请改正程序中的错误,使它能计算出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include doublefun(intm) { doublet=1.0; intI; for(I=2;I<=m;I++) /*************found**************/ t+=1.0/k; /*************found**************/ returnI; } voidmain() {intm; system("CLS"); printf("\nPleaseenter1integernumber: "); scanf("%d",&m); printf("\nTheresultis%1f\n",fun(m)); } (1)错误: t+=1.0/k;正确: t+=1.0/I; (2)错误: returnI;正确: returnt; 3.3编写函数fun,函数的功能是: 根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n) 例如: 若n的值为11时,函数的值为1.833333。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #include floatfun(intn) { } voidmain() { intn; floats; system("CLS"); printf("\nPleaseenterN: "); scanf("%d",&n); s=fun(n); printf("Theresultis: %f\n",s); } 答案floatfun(intn) { inti,s1=0; floats=0.0; for(i=1;i<=n;i++) {s1=s1+i;/*求每一项的分母*/ s=s+1.0/s1;/*求多项式的值*/ } returns; } 4.1给定程序的功能是: 计算并输出下列级数的前N项之和SN,直到SN大于q为止,q的值通过形参传入。 例如,若q的值为50.0,则函数值为50.416687。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include doublefun(doubleq) { intn; doubles; n=2; s=2.0; while(s【1】q) { s=s+(double)(n+1)/n; 【2】; } printf("n=%d\n",n); 【3】; } main() { printf("%f\n",fun(50)); } 【1】<=【2】n++或n+=1或n=n+1【3】returns或return(s) 4.2下列给定的程序中,函数fun的功能是: 计算并输出k以内最大的10个能被13或17整除的自然数之和。 K的值由主函数传入,若k的值为500,则函数的值为4622。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include intfun(intk) {intm=0,mc=0,j; while((k>=2)&&(mc<10)) { /*************found**************/ if((k%13=0)||(k%17=0)) {m=m+k;mc++;} k--; /*************found**************/ returnm; } voidmain() {system("CLS"); printf("%d\n",fun(500)); } (1)错误: if((k%13=0)||(k%17=0)) 正确: if((k%13==0)||(k%17==0)) (2)错误: 缺少大括号正确: 加} 4.3编写函数fun,它的功能是: 根据以下公式求p的值,结果由函数值带回。 m与n为两个正数且要求m>n。 P=m! /(n! (m-n)! ),例如: m=12,n=8时,运行结果为495.000000。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include floatfun(intm,intn) { } voidmain() { system("CLS"); printf("p=%f\n",fun(12,8)); } 答案floatfun(intm,intn) { inti; doublep=1.0; for(i=1;i<=m;i++)p=p*i;/*求m! */ for(i=1;i<=n;i++)p=p/i;/*求m! /n! */ for(i=1;i<=m-n;i++)p=p/i;/*求m! /(n! (m-n)! )*/ returnp; } 5.1请补充函数fun,该函数的功能求能是: 整除x且是偶数的数,把这些数保存在数组bb中,并按从大到小的顺序输出。 例如当x=20时,依次输出: 20 10 4 2。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #include voidfun(intk,intbb[]) { intI; intj=0; for(【1】;I<=k;I++) { if(【2】) bb[j++]=I; } printf("\n\n"); for(I=【3】;I>=0;I--) printf("%d",bb[I]); } voidmain() { intk=1; intbb[100]; system("CLS"); printf("\nPleaseinputX="); scanf("%d",&k); fun(k,bb); } 【1】I=1【2】k%I==0&&I%2==0【3】--j或j--或j=j-1或j-=1 5.2下列给定程序中,函数fun的功能是: 根据整型形参m,计算如下公式的值。 例如,若m中的值为5,则应输出: 1.463611。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include doublefun(intm) { doubley=1.0; inti; /********found********/ for(i=2;i /********found********/ y+=1/(i*i); return(y); } main() { intn=5; printf("\nTheresultis%1f\n",fun(n)); } (1)错误: for(i=2;i for(i=2;i<=m;i++) (2)错误: y+=1/(i*i)正确: y+=1.0/(i*i) 5.3编写函数fun,它的功能是: 利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。 xn+1=cos(xn) 迭代步骤如下: (1)取x1初值为0.0; (2)x0=x1,把x1的值赋给x0; (3)x1=cos(x0),求出一个新的xl; (4)若x0-x1,的绝对值小于0.000001,则执行步骤(5),否则执行步骤 (2); (5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。 程序将输出结果Root=0.739085。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仪在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include floatfun() { } main() { floatf=fun(); printf("Root=%f\n",f); } 答案floatfun() { floatx1=0.0,x0; do { x0=x1; x1=cos(x0); } while(fabs(x0-x1)>=1e-6); returnx1; } 6.1程序的功能是计算s=! ! 。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。 试题程序: #include longfun(intn) { inti; longs; s=【1】_; for(i=1;i<=n;i++) s=【2】; returns; } main() { longs; intk,n; scanf("%d",&n); s=【3】; for(k=0;k<=n;k++) s=【4】; printf("%id\n",s); } 【1】1【2】s*i或i*s【3】0【4】s+fun(k) 6.2下列给定程序中,函数fun的功能是: 按如下递归公式求函数值。 例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include /********found********/ intfun(n) { intc; /********found********/ if(n=1) c=10; else c=fun(n-1)+2; return(c); } main() { intn; printf("Entern: "); scanf("%d",&n); printf("Theresult: %d\n\n",fun(n)); } (1)错误: intfun(n)正确: intfun(intn) (2)错误: if(n=1)正确: if(n==1) 6.3请编写函数fun,函数的功能是: 求出二维数组周边元素之和,作为函数值返回。 二维数组中的值在主函数中赋予。 例如: 若二维数组中的值为 13579 29994 69998 13570 则函数值为61。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #defineM4 #defineN5 intfun(inta[M][N]) { } voidmain() { intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4}, {6,9,9,9,8},{1,3,5,7,0}}; inti,j,y; system("CLS"); printf("Theoriginaldatais: \n"); for(i=0;i {for(j=0;j printf("%6d",aa[i][j]); printf("\n"); } y=fun(aa); printf("\nThesun: %d\n",y); printf("\n"); } 答案intfun(inta[M][N]) { inti,j,sum=0; for(i=0;i for(j=0;j if(i==0||i==M-1||j==0||j==N-1)/*只要下标中有一个为0或M-1或N-1,则它一定是周边元素*/ sum=sum+a[i][j];/*将周边元素相加*/ returnsum; } 7.1请补充函数fun,该函数的功能是: 求不超过给定自然数的所有偶数之和。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include intfun(intx) { inti,s; s=_【1】; for(i=2;【2】;i+=2) s+=i; returns; } main() { intn; do { printf("\nPleaseenternaturalnumbersn: "); scanf("%d",&n); }while(n<=0); printf("\n不超过给定自然数%d的各偶数之和为%d\n",n,fun(n)); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 上机 题目