| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 782 人关注过本帖
标题:我是新手,是关于c语言的问题,请各位大神给小弟指点迷津啊!
只看楼主 加入收藏
xiao2hero
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-4-8
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:15 
我是新手,是关于c语言的问题,请各位大神给小弟指点迷津啊!
问题1:#include<stdio.h>
void main()
{
    printf("%5s\n","abcdefg");
}

就是这个程序的输出结果为什么是abcdef,而不是abcdefg啊?
问题2:#include<stdio.h>
void main()
{
    float x=1234.56,y=1.23456789;
    double z=1234567.123456789;
    printf("x=%f,y=%f\n",x,y);
    printf("z=%e\n",z);
    printf("z=%g\n",z);
}

我想问第一个的输出结果在书上是x=1234.560059,为啥不是1234.560000呢?
第二个的输出结果是1.23457e+06,第三个的输出结果是1234570,两个输出结果为啥会不一样呢?
搜索更多相关主题的帖子: abcdefg include double c语言 
2014-04-08 19:28
zhuerlei
Rank: 2
等 级:论坛游民
威 望:1
帖 子:28
专家分:29
注 册:2014-3-14
收藏
得分:2 
第一个问题:#include<stdio.h>
void main()
{
    printf("%.6s\n","abcdefg");
}
这个输出时abcdef

[ 本帖最后由 zhuerlei 于 2014-4-8 22:06 编辑 ]
收到的鲜花
  • xiao2hero2014-04-09 10:53 送鲜花  2朵  
2014-04-08 19:41
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:3 
问题1:#include<stdio.h>
void main()
{
    printf("%5s\n","abcdefg");
}

就是这个程序的输出结果是abcdefg.没问题。
问题2:#include<stdio.h>
void main()
{
    float x=1234.56,y=1.23456789;
    double z=1234567.123456789;
    printf("x=%f,y=%f\n",x,y);
    printf("z=%e\n",z);
    printf("z=%g\n",z);
}

因为对于float数据:从第一个非0数字开始,有效数位是6到7位,所以一般从第8位开始不再精确,会出现误差,所以是 x=1234.560059,而不是1234.560000。
如果你用double数据,它的有效数位是16到17位,会更精确一些。
收到的鲜花
  • xiao2hero2014-04-09 10:52 送鲜花  3朵  
2014-04-08 19:42
zhuerlei
Rank: 2
等 级:论坛游民
威 望:1
帖 子:28
专家分:29
注 册:2014-3-14
收藏
得分:0 
第一个问题:#include
void main()
{
    printf("%.6s\n","abcdefg");
}
2014-04-08 19:43
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
%.5s  --- 才是取5个字符的字串。
2014-04-08 19:43
xiao2hero
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-4-8
收藏
得分:0 
回复 2楼 zhuerlei
那我的第一个程序的输出结果是abcdef对不对啊?
2014-04-08 19:58
xiao2hero
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-4-8
收藏
得分:0 
回复 3楼 ying8501
第一个程序的结果为啥和书上的不一样呢,是不是课本打印错啦?还有那个第二个问题我明白了,谢谢你的解答啊
2014-04-08 20:01
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
收藏
得分:0 
楼上正解,要输出5个字符串应该是%.5s,而不是%5s。按照你的写法,如果你的编译器输出是abcdefg,是正确的。因为%5s和%s是一样的。会输出全部的字符串。

因为有你,所以做什么都有动力。z,爱你。
2014-04-08 21:08
xiao2hero
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-4-8
收藏
得分:0 
回复 8楼 安宁1991
哈哈,明白了。谢谢
2014-04-08 21:27
xiao2hero
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-4-8
收藏
得分:0 
第二个的输出结果是1.23457e+06,第三个的输出结果是1234570,两个输出结果为啥会不一样呢?
这个原因大家谁知道啊?
2014-04-08 21:42
快速回复:我是新手,是关于c语言的问题,请各位大神给小弟指点迷津啊!
数据加载中...
 
   



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

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