这段代码有什么问题?我正在同时学习Python和C. Python上的类似代码工作正常,但我很困惑为什么这在这里不起作用?
#include <stdio.h>
float a, b, c,min_value, max_value;
int main(){
printf("Enter a number here:");
scanf("%f",&a);
b=(max_value+min_value)/2;
while(abs(b*b-a)>0.1){
if (b*b>a){
max_value=b;
b=(max_value+min_value)/2;
}
else if(b*b<a){
min_value=a;
b=(max_value+min_value)/2;
}
printf("the square root of the number is %f",b);
}
}
答案 0 :(得分:1)
在C中,abs
是一个整数函数 - 将float
值传递给它将导致截断,因此小值&lt; +/- 1.0将变为0.您需要使用fabs
作为浮点值。变化:
while(abs(b*b-a)>0.1){
为:
while(fabs(b*b-a)>0.1){
并添加:
#include <math.h>
靠近源文件的顶部。
答案 1 :(得分:0)
很多事情都错了:
float a, b, c,min_value, max_value;
你不应该在主函数之外声明这些变量。
b=(max_value+min_value)/2;
max_value
和min_value
未定义,您在此期待什么?
if (b*b>a){
max_value=b;
b=(max_value+min_value)/2;
}
else if(b*b<a){
min_value=a;
b=(max_value+min_value)/2;
}
可能无法定义max_value
和min_value
。我可以继续
如果您正在尝试实施sqrt
功能,也许您应该看看其他人的代码,因为很明显您缺乏C语言的知识。
答案 2 :(得分:0)
如需将来参考,请说明您的计划正在尝试完成的内容以及发生的错误。不要试图是卑鄙的或居高临下的;只是让您了解有关问题措辞的Stack Overflow策略。
那就是说,简单地说,我注意到你也没有定义&#34; max_value&#34;或&#34; min_value&#34;在第6行中使用它们之前(将值设置为&#34; b&#34;)。另外,在main函数之外声明变量会使它们成为全局变量,如果你的变量不会在另一个程序中使用,我建议避免使用它(通过&#34; #include&#34;)。