hdu1106

#include<stdio.h>
#include<string.h>
int main()
{
    char ch[10000];
    int i,j,e,flog;
    __int64 t,a[10000];
    while(gets(ch))
    {
       memset(a,0,sizeof(a));//把a[10000]都初始化为0;a是用来装找出来的数
      
       for(e=0;e<strlen(ch);e++)//这里字符串最前面可能有5,所以先把前面的5去掉
       if(ch[e]!='5')
       break;
       flog=0;t=1;j=0;//j是代表找出的第几个数的下角码
        for(i=strlen(ch)-1;i>=e;i--)//这里要从最后开始往前找
        {
           if(ch[i]!='5')//是5的话说明这个数就己经结束
            {
               a[j]+=(ch[i]-'0')*t;//t=1表示这个数的个位数,等10表示十位数,以此类推
               t*=10; flog=1;//flog是控制下一个数的开关
            }
            else if(flog)//如果为真说明上面找的数己经结束,到找一下个数了,
            {
                j++;t=1;flog=0;//t和flog初始化;j++是下一个数了
            }
        }
        for(i=0;i<=j;i++)//把找出来的数从小到大排序
        for(e=i+1;e<=j;e++)
        if(a[i]>a[e])
        {
            t=a[i];a[i]=a[e];a[e]=t;
        }
        t=0;
        for(i=0;i<=j;i++)//输出,注意是两个数之间有空隔
        {
            if(t==0)
            {
                printf("%I64d",a[i]);
                t=1;
            }
            else
            printf(" %I64d",a[i]);
        }
        printf("\n");
    }
    return 0;
}

你可能感兴趣的:(hdu1106)