请教:调用函数为什么没有输出?
// 求给定数的平方根# include<stdio.h>
int main()
{
float sqrt_02(float x,float y); // 声明 sqrt_02 函数,求 x 的平方根,精度为 y
float x = 0,y = 0;
double z = 0;
double result;
scanf("%f,%f",&x,&y);
result = sqrt_02(x,y);
printf("%f 的平方根为:%04lf\n",x,result);
}
float sqrt_02(float x,float y)
{
float m = 1;
double p = 0;
double q = 0;
double result = 0;
double s = 0;
while (m * m < x) // 从自然数逼近
{
p = m;
m++;
}
while ((p + 0.5) * (p + 0.5) < x) // 从小数的十位逼近
{
p = p + 0.5;
q = p;
}
while ((q + 0.05) * (q + 0.05) < x) // 从小数的百位逼近
{
q = q + 0.05;
s = q;
}
while ((s + y) * (s + y) < x) // 从要求的精度位逼近
{
s = s + y;
}
result = s;
return 0;
}
此程序编译没有问题,返回却是0,请问,我该如何修改?谢谢!
本帖最后由 SHRS23 于 2020-7-18 03:03 编辑
sqrt_02函数中 最后应该 ruturn result; 吧
测试了一下,改过之后可以输出 将 return 0; 改为 return result
#include <stdio.h>
int main()
{
float sqrt_02(float x, float y); // 声明 sqrt_02 函数,求 x 的平方根,精度为 y
float x = 0, y = 0;
double z = 0;
double result;
scanf("%f,%f", &x, &y);
result = sqrt_02(x, y);
printf("%f 的平方根为:%04lf\n", x, result);
}
float sqrt_02(float x, float y)
{
float m = 1;
double p = 0;
double q = 0;
double result = 0;
double s = 0;
while (m * m < x) // 从自然数逼近
{
p = m;
m++;
}
while ((p + 0.5) * (p + 0.5) < x) // 从小数的十位逼近
{
p = p + 0.5;
q = p;
}
while ((q + 0.05) * (q + 0.05) < x) // 从小数的百位逼近
{
q = q + 0.05;
s = q;
}
while ((s + y) * (s + y) < x) // 从要求的精度位逼近
{
s = s + y;
}
result = s;
return result;
} SHRS23 发表于 2020-7-18 02:52
sqrt_02函数中 最后应该 ruturn result; 吧
测试了一下,改过之后可以输出
谢谢! 我一开始也是 return result ,没有输出才瞎改的。刚才改回 return result ,输出正常了。楼下的朋友答案详细一些,最佳答案给他了,再次谢谢你! zltzlt 发表于 2020-7-18 07:44
将 return 0; 改为 return result
我一开始也是 return result ,没有输出才瞎改的。刚才改回 return result ,输出正常了。
页:
[1]