先判断起始是否为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;
}
![](https://img2024.cnblogs.com/blog/35695/202407/35695-20240713070336838-1837943664.jpg)