这道题我只是想提醒自己,以后做题要仔细了。。。 这道题我6次才AC的,要考虑最前面有多个5,中间有多个5,后面有多个5和后面没有5的情况,就OK了 #include<iostream> #include<algorithm> #include<cstring> using namespace std; int main() { int a[1001]; char str[1005]; int len,i,j,t; while(scanf("%s",str)!=EOF) { len=strlen(str); memset(a,0,sizeof(a)); j=0;t=0; while(str[len-1]=='5')len--; while(str[t]=='5')t++; for(i=t;i<len;i++) { if(str[i]!='5') { a[j]=a[j]*10+(str[i]-'0'); } else if(str[i+1]!='5') j++; if(i==len-1&&str[i]!=5)j++; } sort(a,a+j); for(i=0;i<j;i++) { printf(i<j-1?"%d ":"%d/n",a[i]); } } return 0; }