everyone 发表于 2016-1-26 20:44:57

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

首先说一下,这个是用来实现用户自定义函数来代替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语句删掉。
就会输出结果。
由于新加入这个论坛,这是发的第一个帖子,不知道发帖具体怎么粘贴图片,请各位将就一下。
望各路大侠指点迷津!

everyone 发表于 2016-1-26 20:47:33

单步调试后发现,输入的两个数字并不会传递到power(m,n),显示仍然是一堆无意义的数字。导致无输出结果

everyone 发表于 2016-1-26 22:36:42

经过百度后,发现,原来是scanf语句如果用%f会导致精度不足,前面的变量都是声明成double型的。这题只要将%f改为%lf就解决了。谢谢大家~
页: [1]
查看完整版本: 使用自定义函数代替pow函数,scanf输入有点问题。