vlambda博客
学习文章列表

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个能被1317整除的自然数之和。

      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);