C语言刚刚学,输入3个数,把它们按从小到大的顺序排列输出,有不理解的地方!!请指教

#include<stdio.h>voidmain(){inta,b,c,temp;printf("\ninputthreenumbers:\n");scanf("%d%... #include <stdio.h>
void main()
{
int a, b, c,temp;
printf("\ninput three numbers:\n");
scanf("%d%d%d",&a,&b,&c);
if(a > b)
{
temp = a;
a = b;
b = temp;
}
if(a > c)
{
temp = a;
a = c;
c = temp;
}
if(b > c)
{
temp = b;
b = c;
c = temp;
}
printf("%d %d% d\n",a, b, c);
}
如这样写的话,
temp = a;
a = b;
b = temp 为什么这样一写,就能把a和b的位置对调呢??十分不理解!
展开
 我来答
0冷雨
2012-10-05 · 超过26用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:76.5万
展开全部
这不是把a和b的位置对调,是把变量a和b中原有的值对调一下。其中temp是中间变量。是他俩换值的媒介。
一路向北93
2012-10-05 · 超过17用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:57.7万
展开全部
这三个语句的意思是:把a中的值赋值到temp中,然后把b中的值赋值到a中,这时a的值就是b的值了,再把temp(这时是a 的值)赋值到b中,然后b的值就是原来a的值了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小安无敌yeah
2012-10-05 · TA获得超过972个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:138万
展开全部
有两个瓶子,分别装有酱油和醋,要把它们互换,当然不能直接交换。我们可以再取一个空瓶,先把酱油倒入空瓶中,再把醋倒入原来装有酱油的瓶中,然后再把空瓶中的酱油倒入原本装有醋的瓶子,这样以一个空瓶为媒介,实现酱油和醋的交换。这里的temp就相当于一个空瓶,a、b则相当于终于酱油和醋的瓶子,以temp为中介,实现a、b值的交换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
s605954350
2012-10-05 · TA获得超过354个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:224万
展开全部
你把这3个变量想象成3个盒子。
把temp中装的东西变得和a中的东西一样
把a中装的东西变得和b中一样
把b中装的东西变得和temp中的一样,
你可以在纸上草草的画一下,就会发现最终的结果就是a的结果是b的初始状态,b的结果是a的初始状态。
追问
谢谢回答啊。回答的很好。想再问下,C程序是逐条运行的,那么3个 if 语句之间有没有什么联系呢?换句话说,第一个 if 中,a的值已经被灌注成了b的值了,那么在第二个 if 中,那a的值是初始的a的值还是b的值呢?哎,基础都没搞明白...
追答
如果第二个if 段是包含在第一个if 段里面的,那么第二个if 里面a的值是在第一个if 的基础上的,也就是b的值了。例子:
if( ) //第一个if
{
if( ) //第二个if
{
}
}
如果两个if 是并联的关系,那么是不关联的。因为两个并联 的if 或者说N个并联的if 最终只可能执行一个if 里面的代码。例子:
if( ) //第一个if
{
}
else if //第二个if
{
}

当然,还有一种特殊情况,也就是你给的代码中的这种情况了。前后是否有关联是不一定的,这需要根据代码的运行情况而定。
代码逐条执行的,在进行到第一个if 段的时候会进行判断,如果括号里面的事件为真,那么会进行第一个if 段里面的事件,也有可能因为括号里面的事件为假,就不会执行if 段里面的代码了。但是无论第一个if 段是否执行了,在这之后肯定是会进入第二个if 段的判断,和第一个if 一样,是否执行也是要看括号里面的事件真假的,是未知的。后面的if 段类推。
所以,第二个if 中a的值是a还是b是不一定的。
建议楼主先不要急着研究代码,先把流程图方面的知识打牢固,然后再从流程图写代码。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jerrnice
2012-10-05
知道答主
回答量:3
采纳率:0%
帮助的人:3.2万
展开全部
temp = a 是把‘a’中的数据存储到‘temp’中
同样 a = b 是把‘b’中的数据存储到‘a’中
C语言的命令式逐条执行的 所以 a=b 不会影响上面的temp = a 命令 也就是说从‘a’中已经存入‘temp’的数据,不会因为后面‘a’的改变而改变了。
temp就相当于一个中转变量
temp = b;
b = a;
a = temp
的意思也是吧a,b对调。不同的temp中的数据不同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式