鱼C论坛

 找回密码
 立即注册
查看: 7009|回复: 2

使用自定义函数代替pow函数,scanf输入有点问题。

[复制链接]
发表于 2016-1-26 20:44:57 | 显示全部楼层 |阅读模式

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

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

x
首先说一下,这个是用来实现用户自定义函数来代替pow函数的程序。
程序源码如下:
#include <stdio.h>

void main()
{
    double power(double x,double y);
    double m,n,c;
    scanf("%f,%f",&m,&n);
    c = power(m,n);
    printf("%f^%f=%f\n",m,n,c);
   
}
double power(double x,double y)
{
    double z=1;
    if(y>=0)
    {
        for(;y!=0;--y)
        {
            z=z*x;
        }
        return z;
    }
    else
    {
        for(;y!=0;++y)
        {
            z=z*x;
        }
        z=1/z;
        return z;
    }
}

buildexecute后任意输入两个数字,数字间用逗号隔开,回车后无输出结果(没有任何提示)。
如果将
main函数里的,
    double m,n,c;
    scanf("%f,%f",&m,&n);

修改为:
double m=2.0,n=2.0,c;      //不一定是2.0,其他数字也可以。
scanf语句删掉。
就会输出结果。
由于新加入这个论坛,这是发的第一个帖子,不知道发帖具体怎么粘贴图片,请各位将就一下。
望各路大侠指点迷津!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-1-26 20:47:33 | 显示全部楼层
单步调试后发现,输入的两个数字并不会传递到power(m,n),显示仍然是一堆无意义的数字。导致无输出结果
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-26 22:36:42 | 显示全部楼层
经过百度后,发现,原来是scanf语句如果用%f会导致精度不足,前面的变量都是声明成double型的。这题只要将%f改为%lf就解决了。谢谢大家~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 10:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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