题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2000
题目大意:仨字符从小到大排序
解题思路:
很水很水,需要注意的地方是如果用苦力(三个if)要注意正确写法是
if(x >= y){ t = x; x = y; y = t; }
if(x >= z){ t = x; x = t; z = t; }
if(y >= z){ t = y; y = z; z = t; }
或者
if(x > y){ t = x; x = y; y = t; }
if(y > z){ t = y; y = z; z = t; }
if(x > y){ t = x; x = y; y = t; }
如果写成
if(x >= y){t = x; x = y; y = t; }
if(y >= z){t = y; y = t; z = t; }
if(x >= z){t = x; x = z; z = t; }
是铁定过不了的,比如190,会变成109,而非019。
如果用scanf别忘了getchar()吃掉一个回车。
另外还可以用C++ STL 的swap(),sort() ,交换, 排序函数,swap() 存在于命名空间中,而 sort() 要引用algorithm头文件 ( sort形式:sort(a, a + n);)
scanf返回变量个数 ,cin返回的还是cin。
cin里的opreate运算符重载,如果cin>>a;//a为字符串的名字
遇到空格、制表符、回车符和文件结束符为字符串输入的结束标志
而且只会读取属于自己的相应类型的变量,读取完事就结束
如果int a; double b;
cin >> a >> b;输入234.88, 输出:234 和 0.88
代码:
#include<iostream>
using namespace std;
int main()
{
int t;
char n[4];
while(cin >> n)
{
if(n[0] > n[1]){t = n[0]; n[0] = n[1]; n[1] = t;}
if(n[0] > n[2]){t = n[0]; n[0] = n[2]; n[2] = t;}
if(n[1] > n[2]){t = n[1]; n[1] = n[2]; n[2] = t;}
cout<< n[0] <<' '<< n[1] <<' '<<n[2]<<endl;
} }