| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1273 人关注过本帖
标题:有两个程序 出了点小错误 思考了很久 想不出为什么 新手一个 !
只看楼主 加入收藏
自强
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:132
专家分:130
注 册:2011-10-3
结帖率:96.77%
收藏
已结贴  问题点数:20 回复次数:13 
有两个程序 出了点小错误 思考了很久 想不出为什么 新手一个 !
//#define LENGTH 20
#include "stdio.h"
void main()
{
    //float a;
    //a=LENGTH*LENGTH;
    //printf("a=%f\n",a);
    float s;
    double db;
    s=11111.11;//有效位7位
    db=11111.11111111111111111;/*双精度浮点数的变量,有效位为16位
    ,但是vc6.0规定小数后最多保留6位,其余舍去*/
    printf("s=%f\n db=%f\n",s,db);
}
为什么 运行时 S不是等于11111.11 而是11111.111328?哪里错了?
#include "stdio.h"
int max(int x,int y)
{
    int z;
    if(x>y)
    {
        z=x;
    }
    else
    {
        z=y;
    }
    return(z);
}
main()
{
    int a,b,c;
    scanf("%d,%d",&a,&b);
    c = max(a,b);
    printf("max=%d\n",c);
}

输入两个值 6和7  判断那个大 最后显示的是 max=6 为什么会这样 ?
我想了 很久 想不出为什么?
麻烦各位高手看看 小弟 感激不尽!

[ 本帖最后由 自强 于 2011-10-15 09:37 编辑 ]
搜索更多相关主题的帖子: include double 
2011-10-14 21:59
唯我独魔
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:176
专家分:782
注 册:2011-4-13
收藏
得分:0 
程序呢????
2011-10-14 22:02
zhangyin
Rank: 2
等 级:论坛游民
帖 子:22
专家分:43
注 册:2011-10-2
收藏
得分:0 
这样的问法和让人搞不清楚你在说什么,最好把程序贴上来!!!
2011-10-14 22:36
自强
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:132
专家分:130
注 册:2011-10-3
收藏
得分:0 
回复 3楼 zhangyin
论坛新手 本来是想上传截图的 但是没见到图  请多多包涵

成为一名真正合格的程序设计人员,是我的梦想……我希望我的梦一直保持下去,直到我从这个世界消失……
2011-10-15 09:38
自强
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:132
专家分:130
注 册:2011-10-3
收藏
得分:0 
回复 2楼 唯我独魔
我已经把程序 复制过来了 论坛新手 本来是想上传截图的 但是没见到图  请多多包涵

成为一名真正合格的程序设计人员,是我的梦想……我希望我的梦一直保持下去,直到我从这个世界消失……
2011-10-15 09:39
豆芽小球
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2011-10-14
收藏
得分:0 
#include "stdio.h"
int max(int x,int y)
{
    int z;
    if(x>y)
      z = x;
    else if(x < y)
      z = y;
    return(z);
}
main()
{
    int a,b,c;
    scanf("%d,%d",&a,&b);
    c = max(a,b);
    printf("max=%d\n",c);
}
不知道这样改可行?
2011-10-15 09:45
莫珞lili
Rank: 1
来 自:浙江
等 级:新手上路
帖 子:23
专家分:7
注 册:2010-4-19
收藏
得分:0 
我也是新手,看到以后查了一下。%f输出地话,有效位是7位【float基本上实现都是遵从了IEEE   754规范的,实现为32位,其中有效数字占用了23(不算integer   bit,如果算的话是24位)位,2^24接近于10^7,所以数上说的是精度十进制7位。有时候也会出现只有6位的情况。】,小数点后会保留六位小数,不足的部分会补齐,而且根据编译的不同,补足的数也会不同。
 
2011-10-15 15:42
莫珞lili
Rank: 1
来 自:浙江
等 级:新手上路
帖 子:23
专家分:7
注 册:2010-4-19
收藏
得分:5 
还有,我执行了一下,你的后面的代码,试了好几个,都是对的呀。你是不是输入的时候,6和7之间,没有用逗号隔开啊
2011-10-15 15:50
yeh2008
Rank: 2
等 级:论坛游民
帖 子:52
专家分:68
注 册:2011-10-11
收藏
得分:5 
应该是输入格式有问题吧?我运行的没有问题。。。
2011-10-15 15:57
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:10 
回复 楼主 自强
第二个问题,scanf("%d,%d",&a,&b);  这是要求你输入数时格式是“6,7”。如果你输入数时格式是“6 7”,就会出现最大值是6的情况。遇到搞不明白的问题,可以加打印信息调试。如下:
#include "stdio.h"
int max(int x,int y)
{
    int z;
    if(x>y)
    {
        z=x;
    }
    else
    {
        z=y;
    }
    return(z);
}
main()
{
    int a,b,c;
    scanf("%d,%d",&a,&b);
    c = max(a,b);
    printf("a=%d, b=%d, max=%d\n",a,b,c);  //把a和b的值打印出来
}





[ 本帖最后由 embed_xuel 于 2011-10-15 16:00 编辑 ]

总有那身价贱的人给作业贴回复完整的代码
2011-10-15 15:58
快速回复:有两个程序 出了点小错误 思考了很久 想不出为什么 新手一个 !
数据加载中...
 
   



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

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