请问关于Turbo C++ 的编程问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 12:07:33
求a的二次开方
#include<stdio.h>
void main()
{ float a,b,c,y,i;
printf("Please input 'a'\n");
scanf("%f",&a);
b=a/2;
do
{ c=b;
y=1/2*(c+a/c);
b=y;
}
while(b-c<1e-5);
i=b;
printf("i=%f\n",i);
}
检查无误

运行时说"Floating point error :Divide by 0
Adnormal program termination"
不知是哪里出错
不是把a赋给b,b赋给了c吗?为身摸还会这样呢?

y=1/2*(c+a/c); 这句错了,
1,2都是整型变量,1/2就是整型除法,结果是整型商,而不是浮点值,即1/2=0.
0再乘后面的值,结果还是0,然后b=y;b变成0.然后执行下一个循环体的c=b;c变成0,再a/c就除0错误了.
要用
y=(c+a/c)/2;

c这个变量未初始化,默认是0;故a/c是出错了

a未被初始化赋值所以默认是0,b=a/2;所以b==0;c==0;所以c+a/c==0自然就报错了!