C语言改错复习题文档格式.docx
《C语言改错复习题文档格式.docx》由会员分享,可在线阅读,更多相关《C语言改错复习题文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
j<
=i;
j++)
t=t+j;
=s+1/t;
}
returns;
答案:
【1】scanf("
&
n);
【2】floatfun(intn)
【3】for(i=1;
i++)或for(i=1;
n>
n+1;
n+1>
i;
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<
intm,k=0;
for(m=1;
m<
100;
m++)
if(fun(m)==1)
%4d"
m);
k++;
if(k%5==0)printf("
\n"
}
voidfun(intn)
inti,k=1;
if(m<
=1)k=0;
for(i=1;
m;
if(m%i=0)k=0;
returnm;
【1】intfun(intm)或fun(intm)
【2】for(i=2;
i++)或for(i=2;
m>
=m-1;
m-1=>
【3】if(m%i==0)k=0;
【4】returnk;
12)./*------------------------------------------------------
用下面的和式求圆周率的近似值。
直到最后一项的绝对值
小于等于0.0001。
π111
—=1-—+—-—+...
4357
#include"
stdio.h"
fun()
inti=1;
ints=0,t=1,p=1;
while(fabs(t)<
=1e-4)
s=s+t;
p=-p;
i=i+2;
t=p/i;
pi=%d\n"
s*4);
fun();
【1】#include"
math.h"
或#include<
math.h>
【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<
fabs(t))或while(1e-4<
fabs(t))或while(fabs(t)>
0.0001)
【4】printf("
pi=%f\n"
s*4);
13)./*------------------------------------------------------
求1到10的阶乘的和。
inti;
floatt,s=0;
floatfac(intn);
10;
s=fac(i);
%f\n"
s);
floatfac(intn)
inty=1;
for(i=1;
y=y*i;
return;
【1】for(i=1;
=10;
10>
11;
11>
【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的阶乘的和。
{
intn,j;
floats=0.0,t=1.0;
for(n=1;
n<
=20;
n++)
{
s=1;
t=t*n;
s+t=s;
jiecheng=%d\n"
【1】t=1;
或t=1.0;
【2】t=t*j;
或t*=j;
或t=j*t;
【3】s=s+t;
或s+=t;
或s=t+s;
jiecheng=%f\n"
15)./*------------------------------------------------------
输出Fabonacci数列的前20项,要求变量类型定义成浮点型,
输出时只输出整数部分,输出项数不得多于或少于20。
floatf1=1,f2=1,f3;
%8d"
f1);
f3=f1+f2;
f2=f1;
f3=f2;
%8.0f"
【1】printf("
或printf("
%f"
%8f"
【2】for(i=1;
20;
20>
=19;
19>
【3】f1=f2;
【4】f2=f3;
16)./*------------------------------------------------------
根据整型形参m的值,计算如下公式的值。
t=1-——-——-...-——
2x23x3mxm
例如:
若m=5,则应输出:
0.536389
doublefun(intm)
doubley=1.0;
for(i=2;
i--)
y-=1/(i*i);
intn=5;
\ntheresultis%lf\n"
【1】for(i=2;
=m;
m+1;
1+m;
m+1>
1+m>
【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;
18)./*------------------------------------------------------
计算并输出k以内最大的10个能被13或17整除的自然数之和。
k的值由主函数传入。
若k的值为500,则函数值为4622。
intfun(intk)
intm=0,mc=0,j;
while((k>
=2)||(mc<
10))
if((k%13=0)||(k%17=0))
m=m+k;
mc++;
k++;
return;
%d\n"
fun(500));
【1】while((2<
=k)&
&
(mc<
10))或while((k>
=2)&
10))或while((2<
=9))或while((k>
=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)
longk;
do
k*=num%10;
num\=10;
}while(num);
returnk;
longn;
\nPleaseenteranumber:
scanf("
%ld"
n);
\n%ld\n"
fun(longn));
【1】longk=1;
【2】num/=10;
或num=num/10;
【3】scanf("
20)./*------------------------------------------------------
已知一个数列从第0项开始的前三项分别为0、0、1,以
后的各项都是其相邻的前三项的和。
下列给定程序中,
函数fun的功能是:
计算并输出该数列的前n项的平方根
之和sum,n的值通过形参传入。
当n=10时,程序的输出结果应为23.197745。
fun(intn)
doublesum,s0,s1,s2,s;
intk;
sum=0.0;
if(n<
=2)sum=0.0;
s0=0.0;
s1=0.0;
s2=0.0;
for(k=4;
k>
n;
k++)
s=s0+s1+s2;
sum+=sqrt(s);
s0=s1;
s1=s2;
s2=s;
returnsum;
%lf\n"
【1】doublefun(intn)
【2】sum=1.0;
或sum=1;
【3】s2=1.0;
或s2=1;
【4】for(k=4;
k<
k++)或for(k=4;
=k;
1+n;
k;
1+n>
21)./*------------------------------------------------------
根据以下公式求π值,并作为函数值返回。
给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。
π1121231234
—=1+—+—x—+—x—x—+—x—x—x—+...
23353573579
doublefun(doubleeps)
doubles,t;
intn=1;
s=0.0;
t=1;
while(t<
=eps)
s+=t;
t=n/(2*n+1)*t;
n++;
doublex;
%lf"
x);
\neps=%lf,Pi=%lf\n\n"
x,fun(x));
【1】while(t>
eps)或while(eps<
t)或while(t>
=eps)或while(eps<
=t)或while(t>
eps)或while(eps<
t)或while(t>
=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<
b)
t=a;
b=a;
a=t;
r=a%b;
while(r!
=0)
a=b;
b=r;
r=a/b;
returna;
intnum1,num2,a;
%d%d"
num1,&
num2);
a=fun(num1,num2);
themaximumcommondivisoris%d\n\n"
a);
【1】a=b;
【2】b=t;
【3】r=a%b;
【4】returnb;
或return(b);
或return(b);
26)./*------------------------------------------------------
找出大于m的最小素数,并将其作为函数值返回。
intfun(intm)
inti,k;
for(i=m+1;
;
for(k=1;
/**********F