C语言程序改错(五)
(二十一)功能:根据整型形参 n,计算某一数据项的值。
A[1]=1, A[2]=1/(1 + A[1]), A[3]=1/(1 +A[2]), …,
A[n]=1/(1 + A[n-1])
例如:若 n=10,则应输出:a10=0.617977。
#include "conio.h"
#include "stdio.h"
/**********ERROR**********/
int fun ( int n )
{
float A=1; int i;
/**********ERROR**********/
for (i=2; i<n; i++)
/**********ERROR**********/
A = 1.0\(1+A);
return A ;
}
main( )
{
int n ;
printf("\nPlease enter n: ") ;
scanf("%d", &n ) ;
printf("A%d=%f\n", n, fun(n) ) ;
}
【参考答案】
float fun(int n)
【参考答案】
for (i=2; i<=n;i++)
【参考答案】
A = 1.0/(1+A);
A=1.0/(A+1);
A=1.0/(1.0+A);
(二十二)功能:用下面的和式求圆周率的近似值。直到最后一项的绝对值
小于等于0.0001。
π/4 = 1-1/3+1/5-1/7+……
------------------------------------------------------*
#include "stdio.h"
/**********ERROR**********/
#include "math"
void fun()
{
int i=1;
/**********ERROR**********/
int s=0,t=1,p=1;
/**********ERROR**********/
while(fabs(t)<=1e-4)
{
s=s+t;
p=-p;
i=i+2;
t=p/i;
}
/**********ERROR**********/
printf("pi=%d\n",s*4);
}
main()
{
fun();
}
【参考答案】
#include"math.h"
#include<math.h>
【参考答案】
float s=0,t=1,p=1;
float s=0,p=1,t=1;
float p=1,s=0,t=1;
float p=1,t=1,s=0;
float t=1,p=1,s=0;
float t=1,s=0,p=1;
【参考答案】
while(fabs(t)>1e-4)
while(0.0001<fabs(t))
while(1e-4<fabs(t))
while(fabs(t)>0.0001)
【参考答案】
printf("pi=%f\n",s*4);
( 二十三 )功能:计算并输出k以内最大的10个能被13或17整除的自然数之和。
k的值由主函数传入。
例如:若k的值为500,则函数值为4622。
#include <stdio.h>
int fun(int k)
{
int m=0,mc=0;
/**********ERROR**********/
while ((k>=2)||(mc<10))
{
/**********ERROR**********/
if((k%13=0)||(k%17=0))
{
m=m+k;
mc++;
}
/**********ERROR**********/
k++;
}
/**********ERROR**********/
return ;
}
main()
{
printf("%d\n",fun(500));
}
【改错1】
while((2<=k)&&(mc<10))
while((mc<10)&&(2<=k))
while((k>=2)&&(mc<10))
while((2<=k)&&(10>mc))
while((k>=2)&&(10>mc))
while((mc<10)&&(k>=2))
while((10>mc)&&(2<=k))
while((10>mc)&&(k>=2))
【改错2】
if(!(k%17!=0||k%13!=0))
if(!(k%13!=0||k%17!=0))
if(k%13==0||k%17==0)
if(k%17==0||k%13==0)
【改错3】
k--;
k=k-1;
k-=1;
【改错4】
return m;
return (m);
(二十四)功能:根据以下公式求π值,并作为函数值返回。
例如:给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。
π/2 = 1+1/3+ 1/3 * 2/5 + 1/3 * 2/5*3/7+ 1/3 * 2/5*3/7* 4/9+ ...
#include <stdio.h>
double fun(double eps)
{
double s,t;
int n=1;
s=0.0;
t=1;
/**********ERROR**********/
while(t<=eps)
{
s+=t;
/**********ERROR**********/
t=n/(2*n+1)*t;
n++;
}
/**********ERROR**********/
return s;
}
main()
{
double x;
scanf("%lf",&x);
printf("\neps=%lf,Pi=%lf\n\n",x,fun(x));
}
【改错1】
while(t>eps)
while(eps<t)
while(t>=eps)
while(eps<=t)
【改错2】
t=t*n/(2*n+1);
t=1.0*n/(2*n+1)*t;
t=n/(2*n+1.0)*t;
t=n/(2.0*n+1)*t;
t=n/(2.0*n+1.0)*t;
t=1.0*n/(2.0*n+1.0)*t;
【改错3】
return 2*s;
return s*2;
return (2*s);
return (s*2);
(二十五)功能:一个整数,它加上100后是一个完全平方数,再加上168又
是一个完全平方数,请问该数是多少?
#include "stdio.h"
#include "math.h"
main()
{
long int i,x,y,z;
/**********ERROR**********/
for (i==1;i<100000;i++)
{
/**********ERROR**********/
x=sqrt(i+100)
y=sqrt(i+268);
/**********ERROR**********/
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)
25.功能:编写函数求2!+4!+6!+8!+10!+12!+14!。
#include "stdio.h"
long sum(int n)
{
/**********ERROR**********/
int i,j
long t,s=0;
/**********ERROR**********/
for(i=2;i<=n;i++)
{
t=1;
for(j=1;j<=i;j++)
t=t*j;
s=s+t;
}
/**********ERROR**********/
return(t);
}
main()
{
printf("thissum=%ld\n",sum(14));
}
【改错1】
int i,j;
【改错2】
for(i=2;i<=n;i=i+2)
for(i=2;i<=n;i+=2)
for(i=2;i<=n;i++,i++)
【改错3】
return(s);