计算机基础C++程序改错复习题.docx
- 文档编号:27947958
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:26
- 大小:18.04KB
计算机基础C++程序改错复习题.docx
《计算机基础C++程序改错复习题.docx》由会员分享,可在线阅读,更多相关《计算机基础C++程序改错复习题.docx(26页珍藏版)》请在冰豆网上搜索。
计算机基础C++程序改错复习题
?
第1题(分)题号:
400难度:
中第2章
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
编写函数fun求20以内所有5的倍数之积。
------------------------------------------------------*/
《
#defineN20
#include<>
intfun(intm)
{
/**********FOUND**********/
ints=0,i;
;
for(i=1;i /**********FOUND**********/ if(i%m=0) /**********FOUND**********/ s=*i; returns; } & main() { intsum; sum=fun(5); printf("%d以内所有%d的倍数之积为: %d\n",N,5,sum); } 答案: ) =======(答案1)======= ints=1,i; =======(答案2)======= if(i%m==0) =======(答案3)======= s*=i; ) 第2题(分)题号: 584难度: 中第1章 /*------------------------------------------------------- 【程序改错】 --------------------------------------------------------- 下列给定程序中函数fun()的功能是计算1/n! 的值。 & 例如: 给n输入5,则输出。 请改正程序中的错误,使它能得到正确结果。 注意: 不要改动main函数,不得增行或删行, 也不得更改程序的结构。 , 试题程序: -------------------------------------------------------*/ #include<> #include<> /***********FOUND***********/ ~ intfun(intn) { doubleresult=; if(n==0) return; while(n>1&&n<170) /***********FOUND***********/ result*=n++; … result=1/result; returnresult; } voidmain() { intn; printf("InputN: "); 、 scanf("%d",&n); printf("\n1/%d! =%lf\n",n,fun(n)); } 答案: =======(答案1)======= doublefun(intn) ' =======(答案2)======= result*=n--; 第3题(分)题号: 427难度: 中第2章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- ? 功能: 编写函数fun求1000以内所有8的倍数之和。 ------------------------------------------------------*/ #include<> #defineN1000 ! intfun(intm) { /**********FOUND**********/ ints=0;i; /**********FOUND**********/ for(i=1;i>N;i++) /**********FOUND**********/ if(i/m==0) 、 s+=i; returns; } main() { intsum; sum=fun(8); ) printf("%d以内所有%d的倍数之和为: %d\n",N,8,sum); } 答案: =======(答案1)======= ints=0,i; =======(答案2)======= — for(i=1;i =======(答案3)======= if(i%m==0) 第4题(分)题号: 444难度: 易第2章 /*------------------------------------------------------ 【程序改错】 @ -------------------------------------------------------- 功能: 编写函数fun计算下列分段函数的值: x*20x<0且x≠-3 f(x)=sin(x)0≤x<10且x≠2及x≠3 x*x+x-1其它 ------------------------------------------------------*/ : #include<> #include<> doublefun(doublex) { /**********FOUND**********/ doubley 《 /**********FOUND**********/ if(x<0||x! = y=x*20; elseif(x>=0&&x<&&x! =&&x! = y=sin(x); else y=x*x+x-1; /**********FOUND**********/ returnx; } main() { doublex,f; printf("inputx="); scanf("%f",&x); ~ f=fun(x); printf("x=%f,f(x)=%f\n",x,f); } 答案: =======(答案1)======= doubley; ) =======(答案2)======= if(x<0&&x! = =======(答案3)======= returny; 第5题(分)题号: 432难度: 中第2章 /*------------------------------------------------------ 【 【程序改错】 -------------------------------------------------------- 功能: 一个整数,它加上100后是一个完全平方数,再加上168又 是一个完全平方数,请问该数是多少 ------------------------------------------------------*/ #include<> " #include<> main() { longinti; longx,y; /**********FOUND**********/ for(i==1;i<100000;i++) ¥ { /**********FOUND**********/ x=sqrt(i+100) y=sqrt(i+268); /**********FOUND**********/ if(x*x==i+100||y*y==i+268) printf("\n%ld\n",i); } ! } 答案: =======(答案1)======= for(i=1;i<100000;i++) =======(答案2)======= x=sqrt(i+100); # =======(答案3)======= if(x*x==i+100&&y*y==i+268) 第6题(分)题号: 397难度: 中第2章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- — 功能: 输入两个实数,按代数值由小到大输出它们,并在fun() 函数中输出。 (输出的数据都保留2位小数) ------------------------------------------------------*/ #include<> * fun() { /**********FOUND**********/ floatt floata,b; scanf("%f%f",&a,&b); /**********FOUND**********/ ! if(a { t=a; a=b; b=t; } /**********FOUND**********/ printf("%,%\n",&a,&b); | } main() { fun(); } 答案: ; =======(答案1)======= floatt; =======(答案2)======= if(a>b) =======(答案3)======= printf("%,%\n",a,b); 。 第7题(分)题号: 25难度: 中第1章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 找出大于m的最小素数,并将其作为函数值返回。 | ------------------------------------------------------*/ #include<> #include<> intfun(intm) { inti,k; for(i=m+1;;i++) … { /**********FOUND**********/ for(k=1;k /**********FOUND**********/ if(i%k! =0)break; /**********FOUND**********/ if(k /**********FOUND**********/ 、 returnk; } } main() { intn; scanf("%d",&n); | printf("%d\n",fun(n)); } 答案: =======(答案1)======= for(k=2;k =========或========= for(k=2;i>k;k++) — =========或========= for(k=2;k<=i-1;k++) =========或========= for(k=2;k =========或========= for(k=2;i/2>k;k++) =========或========= for(k=2;k<=sqrt(i);k++) ~ =========或========= for(k=2;sqrt(i)>=k;k++) =======(答案2)======= if(i%k==0)break; =========或========= if(! (i%k))break; 】 =======(答案3)======= if(i<=k) =========或========= if(k>=i) =========或========= if(k==i) =========或========= if(k>=i/2) | =========或========= if(k=i/2) =========或========= if(k>sqrt(i)) =======(答案4)======= returni; =========或========= $ return(i); 第8题(分)题号: 419难度: 中第2章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- ? 功能: 一个5位数,判断它是不是回文数。 即12321是回文数,个 位与万位相同,十位与千位相同。 ------------------------------------------------------*/ #include<> main() { ; /**********FOUND**********/ longge,shi,qian;wan,x; scanf("%ld",&x); /**********FOUND**********/ wan=x%10000; qian=x%10000/1000; shi=x%100/10; ge=x%10; [ /**********FOUND**********/ if(ge==wan||shi==qian) printf("thisnumberisahuiwen\n"); else printf("thisnumberisnotahuiwen\n"); } 答案: / =======(答案1)======= longge,shi,qian,wan,x; =======(答案2)======= wan=x/10000; =======(答案3)======= if(ge==wan&&shi==qian) ( =========或========= if(shi==qian&&ge==wan) 第9题(分)题号: 3难度: 难第1章 /*------------------------------------------------------ 【程序改错】 》 -------------------------------------------------------- 功能: 用起泡法对10个整数从小到大排序。 ------------------------------------------------------*/ #include<> /**********FOUND**********/ $ voidsort(intx,intn) { inti,j,t; for(i=0;i /**********FOUND**********/ for(j=0;j /**********FOUND**********/ if(x[i]>x[i+1]) \ { t=x[j]; x[j]=x[j+1]; x[j+1]=t; } } main() : { inti,n,a[100]; printf("pleaseinputthelengthofthearray: \n"); scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); /**********FOUND**********/ sort(n,a); ( printf("outputthesortedarray: \n"); for(i=0;i<=n-1;i++) printf("%5d",a[i]); printf("\n"); } 答案: =======(答案1)======= 【 voidsort(int*x,intn) =========或========= voidsort(intx[],intn) =======(答案2)======= for(j=0;j =========或========= for(j=0;n-1-i>j;j++) ) =========或========= for(j=0;j =========或========= for(j=0;n-(1+i)>j;j++) =========或========= for(j=0;j<=n-2-i;j++) =======(答案3)======= … if(x[j]>x[j+1]) =========或========= if(x[j+1] =======(答案4)======= sort(a,n); 第10题(分)题号: 551难度: 中第1章 /*------------------------------------------------------- 【程序改错】 --------------------------------------------------------- 题目: 下列程序从键盘输入一个数n,求1〜n之和并输出。 请纠正程序中存在错误,使程 序实现其功能。 < 如输入5ㄌ 输出: Thesumfrom1to5is15 -------------------------------------------------------*/ #include<> main() { { inti=1,n; /***********FOUND***********/ floatsum; /***********FOUND***********/ scanf("%d",n); /***********FOUND***********/ for(;i sum+=i; — printf("Thesumfrom1to%dis%d\n",n,sum); } 答案: =======(答案1)======= floatsum=0; 》 =======(答案2)======= scanf("%d",&n); =======(答案3)======= for(;i<=n;i++) 第11题(分)题号: 556难度: 中第2章 /*------------------------------------------------------- , 【程序改错】 --------------------------------------------------------- 题目: 下列程序的功能为: 按下列公式计算并输出x的值。 其中a和b的值由键盘输入。 请纠正程序中存在的错误,使程序实现其功能。 公式: x=2ab/(a+b)^2(平方) -------------------------------------------------------*/ #include<> ; main() { inta,b; doublex; /***********FOUND***********/ scanf("%d,%d",a,b); /***********FOUND***********/ x=2ab/(a+b)(a+b); & /***********FOUND***********/ printf("x=%d\n",x); } 答案: =======(答案1)======= scanf("%d,%d",&a,&b); " =======(答案2)======= x=*a*b/((a+b)*(a+b)); =======(答案3)======= printf("x=%f\n",x); 第12题(分)题号: 17难度: 中第1章 > /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 计算并输出k以内最大的10个能被13或17整除的自然数之和。 k的值由主函数传入。 例如: 若k的值为500,则函数值为4622。 | ------------------------------------------------------*/ #include<> intfun(intk) { intm=0,mc=0; /**********FOUND**********/ while((k>=2)||(mc<10)) { ; /**********FOUND**********/ if((k%13=0)||(k%17=0)) { m=m+k; mc++; } /**********FOUND**********/ k++; [ } /**********FOUND**********/ return; } main() { printf("%d\n",fun(500)); ; } 答案: =======(答案1)======= while((2<=k)&&(mc<10)) =========或========= while((k>=2)&&(mc<10)) =========或========= ' while((2<=k)&&(mc<=9)) =========或========= while((k>=2)&&(mc<=9)) =======(答案2)======= if(! (k%17! =0||k%13! =0)) =========或========= if(k%13==0||k%17==0) @ =======(答案3)======= k--; =========或========= k=k-1; =========或========= k-=1; ' =======(答案4)======= returnm; =========或========= return(m); 第13题(分)题号: 406难度: 中第2章 /*------------------------------------------------------ ! 【程序改错】 ---------------------------------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 基础 C+ 程序 改错 复习题