1044: [编程入门]三个字符串的排序

从小到大输出字符串

如输入: ade abc edf

输出为:abc ade edf (空格改为换行)

这个是博主直接改的 就改了录入字符,他的gets用不了 改成了cin.getline(str,100);

//导入两个库
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int ifBig(char a[], char b[], int i) {
    //i返回0表示a<=b 返回1表示a>b
    if (a[i] > b[i]) return 1; //如果第一个直接比较出来了,直接返回
    if (a[i] < b[i]) return 0; //这个也是返回
    if (a[i] == b[i]) {
        //这个是比较出--相等
        if (strlen(a) == i + 1) return 0; //到末端了 返回
        if (strlen(b) == i + 1) return 1; //到末端了 返回

        return ifBig(a, b, i + 1);  //都没到,那就比较下一个
    }
}

int Admission(char str[100]) {
    cin.getline(str,100);
    return 0;
}


int main() {
    //三个字符串进行初始化
    char a[100];
    char b[100];
    char c[100];

    Admission(a);
    Admission(b);
    Admission(c);

    //如果a最小,a先输出,剩下两个比较后再进行输出
    if (ifBig(a, b, 0) == 0 && ifBig(a, c, 0) == 0) {
        cout << a << endl;
        if (ifBig(b, c, 0) == 0) {
            cout << b << endl;
            cout << c << endl;
        }
        else {
            cout << c << endl;
            cout << b << endl;
        }

    }

    //如果b最小,b先输出,剩下两个比较后在进行输出
    if (ifBig(b,a,0) == 0 && ifBig(b, c, 0) == 0 ){
        std::cout<<b<<endl;
        if (ifBig(a, c, 0) == 0) {
            cout << a << endl;
            cout << c << endl;
        }
        else {
            cout << c << endl;
            cout << a << endl;
        }
    }

    //如果c最小,c现输出,剩下两个进行比较后在进行输出
    if (ifBig(c, a, 0) == 0 && ifBig(c, b, 0) == 0)
    {
        cout << c << endl;
        if (ifBig(a, b, 0) == 0) {
            cout << a << endl;
            cout << b << endl;
        }
        else {
            cout << b<<endl;
            cout << a << endl;
        }
    }
     
     
    return 0;
}
 

猜你喜欢

转载自blog.csdn.net/qq_63999224/article/details/132496524