这题有点意思,
注意几点:1.在判断s[i]!='5'时,记得加上一个判断i<s.length(),因为有可能最后一个数不是'5',那么它会继续访问s[s.length()-1]的后一个,也就是会越界,爆出Runtime Error
2.各种初始化要到位,用完记得统统回归原位
3.当出现连续的'5'时,你的结果可能会把它当成0输出,所以要加个判断条件,判断cnt是否为零,若为0,那不用管。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define maxn 1050
using namespace std;
int a[maxn];
string s,b;
int main(){
int n,m=0,index;
//int sum=0;
int t,cnt=0;
while(cin>>s){
m=0;
for(int i=0;i<s.length();i++){
while(i<s.length()&&s[i]-'0'!=5){
b[cnt++]=s[i++];
}
for(int j=cnt-1;j>=0;j--){
sum[m]+=(b[j]-'0')*pow(10,(cnt-1-j));
}
if(cnt!=0) m++;
cnt=0;
}
sort(sum,sum+m);
for(int i=0;i<m-1;i++){
cout<<sum[i]<<" ";
}
cout<<sum[m-1];
memset(sum,0,sizeof(sum));
cout<<endl;
}
return 0;
}