HDU 2000 (水)
题目链接: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; } }