鱼C论坛

 找回密码
 立即注册
查看: 968|回复: 4

[已解决]请教:调用函数为什么没有输出?

[复制链接]
发表于 2020-7-18 01:43:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
// 求给定数的平方根

# 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,请问,我该如何修改?谢谢!

最佳答案
2020-7-18 07:44:41
将 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-18 02:52:59 | 显示全部楼层
本帖最后由 SHRS23 于 2020-7-18 03:03 编辑

sqrt_02函数中 最后应该 ruturn result; 吧

测试了一下,改过之后可以输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-18 07:44:41 | 显示全部楼层    本楼为最佳答案   
将 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-18 09:08:28 | 显示全部楼层
SHRS23 发表于 2020-7-18 02:52
sqrt_02函数中 最后应该 ruturn result; 吧

测试了一下,改过之后可以输出

谢谢! 我一开始也是 return result ,没有输出才瞎改的。刚才改回 return result ,输出正常了。楼下的朋友答案详细一些,最佳答案给他了,再次谢谢你!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-18 09:09:05 | 显示全部楼层
zltzlt 发表于 2020-7-18 07:44
将 return 0; 改为 return result

我一开始也是 return result ,没有输出才瞎改的。刚才改回 return result ,输出正常了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 10:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表