标题:用double定义出现的一些问题。/。求解
只看楼主
LOVE燕
Rank: 2
等 级:论坛游民
帖 子:37
专家分:12
注 册:2012-11-14
结帖率:90.91%
已结贴  问题点数:20 回复次数:3 
用double定义出现的一些问题。/。求解
#include "stdio.h"
double fnfun(double x);
double fnfun(double x)
{ double y;
    if(x>1)
        y=x*x+1;
      else if(-1<=x&&x<=1)
            y=x*x;
          else if(x<-1)
                y=x*x-1;
    return y;

            

}

void main()
{ double x,result;
    printf("please input x:");
    scanf("%f",&x);
    result=fnfun(x);
    printf("y=%f",result);
    getch();

}

为什么X输入任何值。。求得的Y都是0.00000
搜索更多相关主题的帖子: double include 
2012-11-18 20:46
youngdavid
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:698
注 册:2012-9-24
得分:10 
scanf("%f",&x);问题出在这个语句,你x是定义的double类型,却用的float修饰符,在赋值时会出截断错误,因此x的保存值会出错。
解决的办法是改为 double的修饰符lf ,scanf("%lf",&x);
2012-11-18 21:57
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:0 
跟你的scanf调用有关,你的scanf实际没有得到正确的浮点数,可以用下面代码测试
void main()
{ double x;
    double y=2.0;
    unsigned char *px,*py;

    px=&x;
    py=&y;
    printf("please input x:");
    scanf("%f",&x);
    printf("for x:%x,%x,%x,%x,%x,%x,%x,%x\n",*px,*(px+1),*(px+2),*(px+3),*(px+4),*(px+5),*(px+6),*(px+7));
    printf("for y:%x,%x,%x,%x,%x,%x,%x,%x",*py,*(py+1),*(py+2),*(py+3),*(py+4),*(py+5),*(py+6),*(py+7));
   
    getch();

}

这样得到的结果为
please input x:2.0
for x:0,0,0,40,34,9e,c7,76
for y:0,0,0,0,0,0,0,40

如果scanf中用lf来说明,scanf("%lf",&x);
那么得到的结果为:
please input x:2.0
for x:0,0,0,0,0,0,0,40
for y:0,0,0,0,0,0,0,40
这样x才得到了正确的浮点数据


[ 本帖最后由 pauljames 于 2012-11-18 22:10 编辑 ]

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-11-18 22:04
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
得分:10 
将sanf("%f",&x)改为%lf,还有,我是VC编译的,getch()不能要!但win-TC没问题,只需将%f改为%lf

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2012-11-18 22:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-387495-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.424999 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved