异想天开

What's the true meaning of light, Could you tell me why

三个数从小到大排序

日期:2015-05-16 08:22:12
  
最后更新日期:2015-05-16 08:36:23
http://acm.nyist.net/JudgeOnline/problem.php?pid=41
描述
现在要写一个程序,实现给三个数排序的功能

输入
输入三个正整数
输出
给输入的三个正整数排序
样例输入
20 7 33
样例输出
7 20 33
解答:
这题值得写的是交换两个数的写法,这里a^b相当于保存了一个临时值,其实这是计算共同利用了中间结果。
[code lang="cpp"]
#include<stdio.h>
#include<stdlib.h>
//异或交换 a^b相当于被保存了一个临时值
int less(int &a,int &b){
if (a>b){
a=a^b;
b=a^b;
a=a^b;
}
return 0;
}

//线性变换,凡是这种类似的线性变换都可以
int less1(int &a,int &b){
if (a>b){
a=a+b;
b=a-b;
a=a-b;
}
return 0;
}

int solve(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
less(a,b);
less(a,c);
less(b,c);
printf("%d %d %d\n",a,b,c);
return 0;
}

int main()
{
solve();
return 0;
}
[/code]