就这么多分了。在线等,c语言小问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 03:36:18
我是个新手,今天自学的时候看到题目是输入两个实数,然后按照从大到小进行排列的。我只写主函数了。。
{
float a,b,t;
scanf...a..b
if(a>b)
{
t=a;
a=b;
b=t;
}
printf....a...b
}
想问下大家,这个里面为什么要有t呢???如果a》b了,直接输出不行嘛??为什么要把a的值赋t,然后把b的值赋给a,最后还要再赋给b呢?
我是个新手,问题很菜,希望大家语言通俗一点哈。。。当我是个初学者嘛。。先谢谢大家了。。
不好意思,是从小到大。。。先谢谢cpace的回答,我明白了一点。但是我还是不明白为什么a给了b但是第二步里面有个a=b,然后他输出的时候就自动排序了吗??没有else吗??

这个是排序问题,要求是把两个数按小到大的顺序排列
如果第一个数已经比第二个数小了就直接输出。
如果第一个数比第二个数大,就把两个数的数值互换再输出。这样再输出就是第一个数比第二个数小的顺序输出了

t=a;
a=b;
b=t;

这三条语句就是互换数据的过程。先把a的数据放到变量t里边,再把b的数据传递给a,然后把t的数据(也就是原来a的数据)赋值给b。这样就实现了a,b数据的互换。

你的scanf和printf语句是故意简写的吧,正确的可不是这样的.
你的程序些错了,把if( a > b ) 改成 if( a < b )就可以了,表示,当a小于b时把两者交互再输出,也就是从大到小了.

额 简单说 不能双传,,一个地址 不能同时有两个数据
所以 就需要T 了。。

t是个过渡变量

如果你把b=a后,B原先的值被A的值给取代了,也就是说A与B是等值
这时你printf....a...b ,那么 输出了两个A的值

你确定是从大到小输出?怎么这么像从小到大输出啊

直接输出怎么输出?只能if(a>b){printf.a...b};else printf..b...a;吧,比较麻烦,要两个输出语句,有t就只要一个输出,而且可以确定a>b,程序之后如果要使用会比较方便。这纯粹是风格问题,写程序讲究方便、实用。