用迭代法求平方根遇到一个输出的问题

C语言 码拜 8年前 (2017-04-30) 1128次浏览
#include<stdio.h>
#define M 1e-5       //这里不用加;
#include<math.h>
int main(){
int i=0;
float x[100],a;  //为什么这里换成double,打印里面换成%lf就运行不了
scanf(“%f”,&a);
x[0]=a/2;
x[1]=(x[0]+a/x[0])/2;
while(fabs(x[i+1]-x[i])>=M){
i++;
x[i+1]=(x[i]+a/x[i])/2;
}
printf(“%f的平方根为:%f\n”,a,x[i+1]); //error
return 0;
}
解决方案

20

scanf(“%f”,&a);  这里也要换成 %lf

5

printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

5

这是原因是float类型和double类型占用的内存长度不一样,所以表示精度不一样,假如将一个float类型(4个字节)放在double类型的低4字节位置,那么输出的就是0.00000
若改成double,输入和输出都都要用%lf

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明用迭代法求平方根遇到一个输出的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)