| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 510 人关注过本帖
标题:求助:一段C小程序的疑问
只看楼主 加入收藏
南国迦叶
Rank: 2
等 级:论坛游民
帖 子:46
专家分:20
注 册:2010-7-9
结帖率:88.24%
收藏
已结贴  问题点数:10 回复次数:6 
求助:一段C小程序的疑问
各位大侠,有一个小程序,我有一些疑问,麻烦帮偶分析一下:
#include<stdio.h>
main()
{
      float a,b,t;                      1  
      scanf("%f,%f",&a,&b);             2
      getchar();                        3
      if(a>b);                          4
      {t=a;a=b;b=t;}                    5  
      printf("%5.2f,%5.2f",a,b);        6
      getchar();                        7
}
疑问1:<stdio.h>这一头文件是不是与下面的输入输出函数对应的,也就是说在一段程序的开头如果出现了某头文件的话,后面是不是一定要配对出现与之对应的一个库函数?
疑问2:我在将第三行与第七行的getchar()函数中的一个或两个去掉后,程序就无法运行?可是我在教材上(谭浩强主编的)看到的程序是没有这两个getchar(),这是为什么呢?
疑问3:该程序是比较两数的大小后再输出,我对其间引进变量t的作用不是很理解,哪位大侠能结合第五行给我讲下吗?
搜索更多相关主题的帖子: include 
2012-08-09 16:34
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:5 
疑问1:<stdio.h>这一头文件是不是与下面的输入输出函数对应的,也就是说在一段程序的开头如果出现了某头文件的话,后面是不是一定要配对出现与之对应的一个库函数?

在现代编译器上(TC不考虑) 用某函数必须直接或间接的引相应的头文件 而引用头文件后不用函数没有什么影响 所以这个的答案是不一定

疑问2:我在将第三行与第七行的getchar()函数中的一个或两个去掉后,程序就无法运行?可是我在教材上(谭浩强主编的)看到的程序是没有这两个getchar(),这是为什么呢?

第一个可能是接受回车一类的东西罢 第二个是为了让你看结果 但去掉后无法运行我就不知道咋回事了

疑问3:该程序是比较两数的大小后再输出,我对其间引进变量t的作用不是很理解,哪位大侠能结合第五行给我讲下吗?

第5行的功能是使用一个变量来交换两个量的值 如果你不明白 给a b 带入两个数 模拟一下执行过程你就明白了 程序的思路是 如果a>b 交换a b 也就是说输出的结果 a<=b
2012-08-09 16:51
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:2 
1、
开头出现了头文件,不一定要出现一个与之对应的库函数。
出现了一个对应的库函数,开头也不一定需要#include <xxx.h>
2、
可以运行。在命令行下运行吧,Ctrl+R --> 输入 cmd --> 把你编译生成的exe拖到里面运行就OK。
3、
图片附件: 游客没有浏览图片的权限,请 登录注册

要把瓶子A的东西与B的东西交换,最简单的方法是再找来一个瓶子C。
先把瓶子A的东西装到C中,然后把B的东西装到A中,最后把瓶子C中的东西装入B中。
再看程序,先把变量a的值放到t中,然后把变量b的值放入a中,最后把变量t的值放入b中。

OK?
2012-08-09 16:53
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:2 
另外 你这个行号加的太业余了 一般是截图 因为编辑器一般能显示行号 或者是用命令生成 你这个方法让代码无法编译 很不好啊。。
2012-08-09 16:53
犹豫情人
Rank: 2
来 自:天津
等 级:论坛游民
帖 子:58
专家分:24
注 册:2010-7-1
收藏
得分:0 
那个东西叫做头文件。是你后面用到的printf和scanf等输入输出函数的定义的地方。需要用到他们就引用他们,如果你想使用一些数学公式就要引用math.h这个头文件。当让你可以引用了,但是不使用里面的函数。
第二个问题那两个getchar()函数确实没什么用,而且使用的时候应该是a=getchar()这个形式。在我这将两个getchar()删掉是可以运行的

那个t是个中间值这个函数是b存放是值一定是比较大的数,a里面存放是是比较小的数,所以使用一个中间值,来将两个形参的值互换一下而已。
2012-08-09 16:57
南国迦叶
Rank: 2
等 级:论坛游民
帖 子:46
专家分:20
注 册:2010-7-9
收藏
得分:0 
回复 3楼 zhoufeng1988
我用的编译器是Dev-C++,就是没有版主说的显示行数的数字呢,是编译器的问题还是设置的问题呢?
另外请问,%5.2f这一表示实数格式的写法,其中的那个5,有的地方说是表示数据的最小宽度,有的说是有效字符数,我在这里挺迷糊的。有效宽度、字节数、有效位数(教材表述单精度有效位数为7位,双精度有效位数为15位)这几个概念在表述上市一致的吗?
2012-08-10 16:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
%5.2f,显示结果字符串总宽度是5个字符,其中小数点后2位,刨除小数点占1位,还有2位,即数字mask格式为99.99。
自己具体用各种不同的数字来测试一下这个代码,本来不用问的。

授人以渔,不授人以鱼。
2012-08-10 19:47
快速回复:求助:一段C小程序的疑问
数据加载中...
 
   



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

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