三点水、 2022-09-29 19:28 采纳率: 78.6%
浏览 15

输入精度,直到最后一项小于精度,求1-1/4+1/7....的和。关于两个代码的区别

#include <stdio.h>
#include <math.h>
int main()
{
double eps;
scanf("%lf",&eps);
int fenmu=1;
double jieguo=1;
int flag=1;
int i;
double sum=0;
for(i=1;;i++){
jieguo=1.0*flag/(1+(i-1)*3);
sum+=jieguo;
flag=-flag;
if(fabs(jieguo)<eps){
break;
}
}
printf("sum = %.6lf",sum);
return 0;
}

此代码摘自CSDN某博主

#include <stdio.h>
#include <math.h>

int main(){
int fm = 1;
double eps, item = 0.0, sum = 0.0, sign = 1.0;

scanf("%lf", &eps);

do{
    item = sign*(1.0/fm);
    sign = -sign;    
    fm += 3;    
    sum += item;    
}while( fabs(item) > eps );

printf("sum = %lf", sum);

return 0;

}

  • 写回答

1条回答 默认 最新

  • 地球屋里老师 2022-09-29 19:49
    关注

    很明显,前一个是新生村的产物。后一个更老道,求分母的时候只用了加法(前后两项分母相差3),效率更高。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月29日