我是 C 语言的新手,正在尝试完成我们在大学获得的实验室教程。
我们被要求执行以下操作:
任务 1。 计算数字 n 的平方根的巴比伦算法如下: 1. 猜猜答案(您可以选择 n/2 作为您的初始猜测)。
- 计算 r = n/猜测
- 设置猜测=(猜测+r)/2
- 返回第 2 步进行必要的多次迭代。步骤 2 和 3 越多 重复,接近的猜测将成为 n 的平方根。
编写一个程序,输入一个整数 n,遍历巴比伦算法 五次,并将答案输出为小数点后两位。你的回答会 对于较小的 n 值最准确。
这是我写的:
#include <stdio.h>
#include <math.h>
int n;
main(void){
printf("Enter a value for n: ");
scanf("%d",&n);
double guess = n / 2;
for (int i = 0; i < 5; i++) {
double r = n / guess;
double guess = (guess + r) / 2;
}
printf("%d",guess);
}
我哪里做错了?它吐出荒谬的结果;例如,如果我输入“4”作为 n,答案应该在“2”左右,但每次都会给出不同的巨大结果。
最佳答案
另一个解决方案是:
guess = guess / 2.0;
这将“强制”进行浮点运算。
并且变量 guess
已经在范围内。你不能重新声明它(就像你在循环中所做的那样)。您只能为其设置一个新值。
并且您还需要将 printf
更改为:
printf("%f",guess);
查看此链接以获取有关 printf 格式化程序的更多信息:
关于c - 基本C程序,巴比伦算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15961868/