首页 > 代码库 > 我是弱鸡,我是弱鸡。。。求助求助

我是弱鸡,我是弱鸡。。。求助求助

输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。

你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
Input
输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。  

输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
 Output
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    char a[1000][1000],b[1000];
    int i=0,j=0,k=0,s,q,w,e=0,r=0,t;
    int c[1000];
    while(cin>>b)
    {
        while(b[k]!=‘\0‘)
        {
            if(b[k]!=‘5‘){a[i][j]=b[k];j++;k++;}
            else {a[i][j]=‘\0‘;if(j!=0)i++;j=0;k++;}
        }
        a[i][j]=‘\0‘;
        if(j!=0)i++;
        for(q=0;q<i;q++)
        {
            strcpy(b,a[q]);
            s=strlen(b);
            for(w=0;w<s-1;w++)
            {
                if(b[w]==‘0‘)e++;
                else break;
            }




            for(w=e;w<s;w++)
            {
                a[q][r]=b[w];r++;
            }
            a[q][r]=‘\0‘;
            e=0;r=0;
        }
        for(q=0;q<i;q++)
        {
            c[q]=strlen(a[q]);
        }
        for(q=0;q<i;q++)
        {
            for(w=0;w<i;w++)
            {
                if(c[q]<c[w]){t=c[q];c[q]=c[w];c[w]=t;strcpy(b,a[q]);strcpy(a[q],a[w]);strcpy(a[w],b);}
                if(c[q]==c[w]&&strcmp(a[q],a[w])<0){t=c[q];c[q]=c[w];c[w]=t;strcpy(b,a[q]);strcpy(a[q],a[w]);strcpy(a[w],b);}
            }
        }




        for(q=0;q<i-1;q++)
        {
            cout<<a[q]<<" ";
            
        }
        cout<<a[q];
        
        cout<<endl;
        i=0;j=0;k=0;
    }
    return 0;
}
 

我是弱鸡,我是弱鸡。。。求助求助