C++问题(三个数由小到大输出)

来源:百度知道 编辑:UC知道 时间:2024/05/18 03:41:22
题目是要求把三个数(i,j,k)由小到大输出
再题目答案中 解到
if(i>j)
t=i;i=j;j=t; /*实现i与j的转换*/
if(i>k)
t=i;i=k;k=t;
if(j>k)
t=j;j=k;k=t;
问题1:题中i j是怎么转换的,
问题2:这样怎么就可以从小到大输出

(本人是刚学C++的,希望高手指点下,本人不胜感激)

问题1:题中i j是怎么转换的,
问题2:这样怎么就可以从小到大输出
用了一个中间变量t i,j,t 他们都是存储在内存单元里面的
如果 i>j
那么把
i的值放到t的内存里面
再把
j的值放到i的内存里面
再把
t的值放到j的内存里面
所以现在
i的内存里面就是j的值
j的内存里面是i的值

这3个if语句执行条件是
如果按i,j,k这样排序下来
前面的数比后面的数大
那就进行互换
if(i>j)
t=i;i=j;j=t; //这一步之后 i<j
if(i>k)
t=i;i=k;k=t; //这一步之后i<k
if(j>k)
t=j;j=k;k=t; //这一步之后 j<k 三个小于连立,有 i<j<k
换3次之后
显然有i<j<k
所以就这样啦

#include <stdio.h>
void main()
{
int i,j,k,t;
scanf("%d%d%d",&i,&j,&k);
if(i>j) {t=i;i=j;j=k;}
if(i>k) {t=k;k=i;i=k;}
if(j>k) {t=j;y=k;k=t;}
printf("small to big: %d %d %d\n",i,j,k);
}

if的执行语句请用{}括住,不然只有最近的一句才是它的执行语句

if(i>j)
{ t=i;i=j;j=t; } /*实现i与j的转换*/
if(i>k)
{ t=i;i=k;k=t; }
if(j>k)
{ t=j;j=k;k=t;}

t是个中介,你随便拿两个数来实验一