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;
    }

}
原文地址:https://www.cnblogs.com/gerjcs/p/9351722.html