【发布时间】:2014-02-18 15:28:11
【问题描述】:
我正在尝试用 C 语言编写一个程序,以使用公式 NG = 0.5(LG + N/LG) 找到数字的近似平方根。到目前为止,我有:
#include <stdio.h>
#include <math.h>
int main(){
double n;
double LG=1;
double NG;
printf("Enter number");
scanf_s("%lf",&n);
do{
NG=(.5*(LG+n/LG));
LG=NG;
}while((NG*NG-n)<.005);
printf("The root is %lf",NG);
}
这种结构在 java 中运行良好,但循环似乎没有在 C 中执行。
感谢您的建议。
【问题讨论】:
-
循环内的语句不应该是
NG=(.5*(LG+n/LG));吗? -
你有没有把它放在调试器中,设置断点并单步执行代码?如果没有,为什么不呢?
-
找到一个你得到错误答案的案例。写下在一张纸上你认为你的程序应该用这个数字做什么。现在单步调试调试器中的代码,并在您的程序每次执行您期望它执行的操作时进行检查。它做的第一件事是你不希望它做的,这就是错误所在。
-
这个问题似乎是题外话,因为 StackOverflow 不是调试错误代码的服务。
-
@Yu Hao
printf()的double格式说明符可以使用"%f"或"%lf"。l对后面的a, A, e, E, f, F, g, or G转换说明符没有影响。
标签: c while-loop square-root