先判断起始是否为5,要是的话就将其去掉,之后再开始找下面的数转换后存入数组中,直到再次碰到5,在找不是我的数开始转换存入下一个数组中,如此循环,最后排序。
#include"iostream"
#include"string.h"
#include"stdlib.h"
using namespace std;
char a[1010];
int b[1000];
int n,c,i;
int cmp(const void*q,const void*p)
{
    return *(int*)q-*(int*)p;
}
int main()
{
   while(cin>>a)
   {
           memset(b,0,sizeof(b));
           n=0;            //整型数组的个数;
           i=0;            //字符型数组的个数;
           c=strlen(a);
           if(a[i]=='5')     //先判断第一位是否为5;
             for(i;i<c;i++)
                if(a[i]!='5')
                   break;
        for(i;i<c;i++)
        {
            if(a[i]=='5')
            {
                for(i;i<c;)
                     if(a[++i]!='5')
                       break;
                n++;         //表整型数组的个数
                i--;
               
            }
            else
            b[n]=(a[i]-48)+b[n]*10;
        }
        if(a[c-1]=='5')
          n--;   //由于起初都初始化为0,a[c-1]=='5'最后一个数不存在,去掉0的干扰
        qsort(b,n+1,sizeof(int),cmp);
        for(int j=0;j<n+1;j++)
        {
           if(j<n)
           cout<<b[j]<<' ';
           else
           cout<<b[j]<<endl;
        }
              
   }
   return 0;
}
 

posted on 2012-05-26 10:12  xinmenghuairi  阅读(385)  评论(0编辑  收藏  举报