C语言改错复习题1.docx

上传人:b****7 文档编号:16739581 上传时间:2023-07-17 格式:DOCX 页数:20 大小:18.48KB
下载 相关 举报
C语言改错复习题1.docx_第1页
第1页 / 共20页
C语言改错复习题1.docx_第2页
第2页 / 共20页
C语言改错复习题1.docx_第3页
第3页 / 共20页
C语言改错复习题1.docx_第4页
第4页 / 共20页
C语言改错复习题1.docx_第5页
第5页 / 共20页
C语言改错复习题1.docx_第6页
第6页 / 共20页
C语言改错复习题1.docx_第7页
第7页 / 共20页
C语言改错复习题1.docx_第8页
第8页 / 共20页
C语言改错复习题1.docx_第9页
第9页 / 共20页
C语言改错复习题1.docx_第10页
第10页 / 共20页
C语言改错复习题1.docx_第11页
第11页 / 共20页
C语言改错复习题1.docx_第12页
第12页 / 共20页
C语言改错复习题1.docx_第13页
第13页 / 共20页
C语言改错复习题1.docx_第14页
第14页 / 共20页
C语言改错复习题1.docx_第15页
第15页 / 共20页
C语言改错复习题1.docx_第16页
第16页 / 共20页
C语言改错复习题1.docx_第17页
第17页 / 共20页
C语言改错复习题1.docx_第18页
第18页 / 共20页
C语言改错复习题1.docx_第19页
第19页 / 共20页
C语言改错复习题1.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言改错复习题1.docx

《C语言改错复习题1.docx》由会员分享,可在线阅读,更多相关《C语言改错复习题1.docx(20页珍藏版)》请在冰点文库上搜索。

C语言改错复习题1.docx

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;ii;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;ii;i++)或for(i=2;i<=m-1;i++)或for(i=2;m-1=>i;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.00010.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;ii;i++)或for(i=2;1+m>i;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;kk;k++)或for(k=4;1+n>k;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=eps)或while(eps<=t)或while(t>eps)或while(eps=eps)或while(eps<=t)

【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**********/

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2