首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C语言-fabs-新手

2012-04-28 
C语言-fabs-新手求助#include stdio.hmain(){int i1double a1,a2,a3,a4,ta1a2a3a4t0printf(\t

C语言-fabs-新手求助
#include <stdio.h>
main()
{
int i=1;
double a1,a2,a3,a4,t;
a1=a2=a3=a4=t=0;
printf("\ta1\t\ta2\t\ta3\t\ta4\t\t\n");
do
{
t=a1;
a1=0.25*(100+a2+a3);
a2=0.25*(a1+100+a4);
a3=0.25*(a1+a4);
a4=0.25*(a3+a2);
printf("%d\t",i);
printf("%f\t%f\t%f\t%f\t\n",a1,a2,a3,a4);
i++;
}while(fabs(a1-t)>0.000001);
}
我的问题是结果只能运行到8次,然后后面更精确的结果显示不了,
是fabs的问题吗?我把0.000001改成0.1也是显示8次,所以我就弄不懂了
如果我要用精度控制,运行到12次,又该如何改呢?
第一次发帖,望不吝赐教
谢谢

[解决办法]
没问题的.

C/C++ code
#include <stdio.h>#include <math.h>main(){int i=1;double a1,a2,a3,a4,t;a1=a2=a3=a4=t=0;printf("\ta1\t\ta2\t\ta3\t\ta4\t\t\n");do{t=a1;a1=0.25*(100+a2+a3);a2=0.25*(a1+100+a4);a3=0.25*(a1+a4);a4=0.25*(a3+a2);printf("%d\t",i);printf("%f\t%f\t%f\t%f\t\n",a1,a2,a3,a4);i++;}while(i<12 && fabs(a1-t)>1e-8);}
[解决办法]
你给的程序没有math.h啊。。。main之前加一个void吧
然后其他的没有问题,程序运行有14次,要12次的结果的话,在while里面加上一个判断条件吧。。i<=12

C/C++ code
#include <stdio.h>#include <math.h>void main(){    int i=1;    double a1,a2,a3,a4,t;    a1=a2=a3=a4=t=0;    printf("\ta1\t\ta2\t\ta3\t\ta4\t\t\n");    do    {        t=a1;        a1=0.25*(100+a2+a3);        a2=0.25*(a1+100+a4);        a3=0.25*(a1+a4);        a4=0.25*(a3+a2);        printf("%d\t",i);        printf("%f\t%f\t%f\t%f\t\n",a1,a2,a3,a4);        i++;    }}while(i<=12 && fabs(a1-t)>0.000001);} 

热点排行