C语言改错复习题1.docx
- 文档编号:28890944
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:20
- 大小:18.48KB
C语言改错复习题1.docx
《C语言改错复习题1.docx》由会员分享,可在线阅读,更多相关《C语言改错复习题1.docx(20页珍藏版)》请在冰豆网上搜索。
C语言改错复习题1
6)./*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
求如下表达式:
111
S=1+——+———+......+———————
1+21+2+31+2+3+......+n
------------------------------------------------------*/
#include
main()
{
intn;
floatfun();
printf("Pleaseinputanumber:
");
/**********FOUND**********/
print("%d",n);
printf("%10.6f\n",fun(n));
}
/**********FOUND**********/
fun(intn)
{
inti,j,t;
floats;
s=0;
/**********FOUND**********/
while(i=1;i<=n;i++);
{
t=0;
for(j=1;j<=i;j++)
t=t+j;
/**********FOUND**********/
=s+1/t;
}
returns;
}
答案:
【1】scanf("%d",&n);
【2】floatfun(intn)
【3】for(i=1;i<=n;i++)或for(i=1;n>=i;i++)或for(i=1;i
【4】s+=1.0/t;或s=s+1.0/(float)t;或s=s+1.0/t;或s+=1.0/(float)t;
11)./*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
判断m是否为素数,若是返回1,否则返回0。
------------------------------------------------------*/
#include
main()
{
intm,k=0;
for(m=1;m<100;m++)
if(fun(m)==1)
{
printf("%4d",m);k++;
if(k%5==0)printf("\n");
}
}
/**********FOUND**********/
voidfun(intn)
{
inti,k=1;
if(m<=1)k=0;
/**********FOUND**********/
for(i=1;i /**********FOUND**********/ if(m%i=0)k=0; /**********FOUND**********/ returnm; } 答案: 【1】intfun(intm)或fun(intm) 【2】for(i=2;i 【3】if(m%i==0)k=0; 【4】returnk; 12)./*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 用下面的和式求圆周率的近似值。 直到最后一项的绝对值 小于等于0.0001。 π111 —=1-—+—-—+... 4357 ------------------------------------------------------*/ /**********FOUND**********/ #include"stdio.h" fun() { inti=1; /**********FOUND**********/ ints=0,t=1,p=1; /**********FOUND**********/ while(fabs(t)<=1e-4) { s=s+t; p=-p; i=i+2; t=p/i; } /**********FOUND**********/ printf("pi=%d\n",s*4); } main() { fun(); } 答案: 【1】#include"math.h"或#include 【2】floats=0,t=1,p=1;或floats=0,p=1,t=1;或floatp=1,s=0,t=1;或floatp=1,t=1,s=0;或floatt=1,p=1,s=0;或floatt=1,s=0,p=1; 【3】while(fabs(t)>1e-4)或while(0.0001 【4】printf("pi=%f\n",s*4); 13)./*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 求1到10的阶乘的和。 ------------------------------------------------------*/ main() { inti; floatt,s=0; floatfac(intn); /**********FOUND**********/ for(i=1;i<10;i++) /**********FOUND**********/ s=fac(i); printf("%f\n",s); } floatfac(intn) { /**********FOUND**********/ inty=1; inti; for(i=1;i<=n;i++) y=y*i; /**********FOUND**********/ return; } 答案: 【1】for(i=1;i<=10;i++)或for(i=1;10>=i;i++)或for(i=1;i<11;i++)或for(i=1;11>i;i++) 【2】s=s+fac(i);或s+=fac(i);或s=fac(i)+s; 【3】floaty=1.0;或floaty=1; 【4】returny;或return(y);或return(y); 14)./*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 求1到20的阶乘的和。 ------------------------------------------------------*/ fun() { intn,j; floats=0.0,t=1.0; for(n=1;n<=20;n++) { /**********FOUND**********/ s=1; for(j=1;j<=n;j++) /**********FOUND**********/ t=t*n; /**********FOUND**********/ s+t=s; } /**********FOUND**********/ printf("jiecheng=%d\n",s); } main() { fun(); } 答案: 【1】t=1;或t=1.0; 【2】t=t*j;或t*=j;或t=j*t; 【3】s=s+t;或s+=t;或s=t+s; 【4】printf("jiecheng=%f\n",s); 15)./*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 输出Fabonacci数列的前20项,要求变量类型定义成浮点型, 输出时只输出整数部分,输出项数不得多于或少于20。 ------------------------------------------------------*/ fun() { inti; floatf1=1,f2=1,f3; /**********FOUND**********/ printf("%8d",f1); /**********FOUND**********/ for(i=1;i<=20;i++) { f3=f1+f2; /**********FOUND**********/ f2=f1; /**********FOUND**********/ f3=f2; printf("%8.0f",f1); } printf("\n"); } main() { fun(); } 答案: 【1】printf("%8.0f",f1);或printf("%f",f1);或printf("%8f",f1); 【2】for(i=1;i<20;i++)或for(i=1;20>i;i++)或for(i=2;i<=20;i++)或for(i=2;20>=i;i++)或for(i=1;i<=19;i++)或for(i=1;19>=i;i++) 【3】f1=f2; 【4】f2=f3; 16)./*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 根据整型形参m的值,计算如下公式的值。 111 t=1-——-——-...-—— 2x23x3mxm 例如: 若m=5,则应输出: 0. ------------------------------------------------------*/ doublefun(intm) { doubley=1.0; inti; /**********FOUND**********/ for(i=2;i /**********FOUND**********/ y-=1/(i*i); /**********FOUND**********/ returnm; } main() { intn=5; printf("\ntheresultis%lf\n",fun(n)); } 答案: 【1】for(i=2;i<=m;i++)或for(i=2;m>=i;i++)或for(i=2;i 【2】y-=1.0/(i*i);或y=y-1.0/(i*i);或y-=1.0/(float)(i*i);或y=y-1.0/(float)(i*i);或y=y-1.0/i/i;或y=y-1.0/(float)i/(float)i;或y=y-1/(double)(i*i);或y-=1/(double)(i*i); 【3】returny;或return(y);或return(y); 18)./*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 计算并输出k以内最大的10个能被13或17整除的自然数之和。 k的值由主函数传入。 例如: 若k的值为500,则函数值为4622。 ------------------------------------------------------*/ intfun(intk) { intm=0,mc=0,j; /**********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); 19)./*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 计算正整数num的各位上的数字之积。 例如: 输入252,则输出应该是20。 ------------------------------------------------------*/ longfun(longnum) { /**********FOUND**********/ longk; do { k*=num%10; /**********FOUND**********/ num\=10; }while(num); returnk; } main() { longn; printf("\nPleaseenteranumber: "); /**********FOUND**********/ scanf("%ld",n); /**********FOUND**********/ printf("\n%ld\n",fun(longn)); } 答案: 【1】longk=1; 【2】num/=10;或num=num/10; 【3】scanf("%ld",&n); 【4】printf("\n%ld\n",fun(n)); 20)./*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 已知一个数列从第0项开始的前三项分别为0、0、1,以 后的各项都是其相邻的前三项的和。 下列给定程序中, 函数fun的功能是: 计算并输出该数列的前n项的平方根 之和sum,n的值通过形参传入。 例如: 当n=10时,程序的输出结果应为23.。 ------------------------------------------------------*/ #include /**********FOUND**********/ fun(intn) { doublesum,s0,s1,s2,s; intk; /**********FOUND**********/ sum=0.0; if(n<=2)sum=0.0; s0=0.0; s1=0.0; /**********FOUND**********/ s2=0.0; /**********FOUND**********/ for(k=4;k>n;k++) { s=s0+s1+s2; sum+=sqrt(s); s0=s1;s1=s2;s2=s; } returnsum; } main() { intn; scanf("%d",&n); printf("%lf\n",fun(n)); } 答案: 【1】doublefun(intn) 【2】sum=1.0;或sum=1; 【3】s2=1.0;或s2=1; 【4】for(k=4;k<=n;k++)或for(k=4;n>=k;k++)或for(k=4;k 21)./*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 根据以下公式求π值,并作为函数值返回。 例如: 给指定精度的变量eps输入0.0005时,应当输出Pi=3.。 π1121231234 —=1+—+—x—+—x—x—+—x—x—x—+... 23353573579 ------------------------------------------------------*/ doublefun(doubleeps) { doubles,t; intn=1; s=0.0; t=1; /**********FOUND**********/ while(t<=eps) { s+=t; /**********FOUND**********/ t=n/(2*n+1)*t; n++; } /**********FOUND**********/ returns; } main() { doublex; scanf("%lf",&x); printf("\neps=%lf,Pi=%lf\n\n",x,fun(x)); } 答案: 【1】while(t>eps)或while(eps 【2】t=t*n/(2*n+1);或1.0*n/(2*n+1)*t或n/(2*n+1.0)*t或n/(2.0*n+1)*t或n/(2.0*n+1.0)*t或1.0*n/(2.0*n+1.0)*t 【3】return2*s;或return(2*s);或return(2*s);或return(s*2);或return(s*2); 22)./*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 求出两个非零正整数的最大公约数,并作为函数值返回。 例如: 若给num1和num2分别输入49和21,则输出的最大公约数为7。 ------------------------------------------------------*/ intfun(inta,intb) { intr,t; if(a { t=a; /**********FOUND**********/ b=a; /**********FOUND**********/ a=t; } r=a%b; while(r! =0) { a=b; b=r; /**********FOUND**********/ r=a/b; } /**********FOUND**********/ returna; } main() { intnum1,num2,a; scanf("%d%d",&num1,&num2); a=fun(num1,num2); printf("themaximumcommondivisoris%d\n\n",a); } 答案: 【1】a=b; 【2】b=t; 【3】r=a%b; 【4】returnb;或return(b);或return(b); 26)./*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能: 找出大于m的最小素数,并将其作为函数值返回。 ------------------------------------------------------*/ #include intfun(intm) { inti,k; for(i=m+1;;i++) { /**********FOUND**********/ for(k=1;k /**********FOUND**********/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 改错 复习题