这个题只要处理下怎样确定符合条件的个数,然后将这些数排序就行了。
起初想了都不太严谨,不知道怎么确定个数,后来想出来了。只要确定
个数这题就好办了,只要将那些字符转成整数,排序就行了。
代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int cmp(const void *a,const void *d) 5 { 6 return *(int *)a-*(int *)d; 7 } 8 int main() 9 { 10 char map[1003]; 11 int shu[1000],i,j,k,m,n,s; 12 while(cin>>map) 13 { 14 j=1; 15 k=-1; 16 int s=strlen(map); 17 for(i=0;i<s;i++) 18 { 19 if(map[i]!='5') 20 { 21 if(j>1) 22 shu[k]=shu[k]*10+(map[i]-48); 23 else 24 { 25 k++; //累计符合条件的个数,初始设置为-1,当遇到不为5的第一个数时就加1 26 shu[k]= map[i]-48; 27 } 28 j++; 29 } 30 else 31 { 32 j=1; 33 } 34 } 35 qsort(shu,k+1,sizeof(shu[0]),cmp); 36 for(i=0;i<k;i++) 37 cout<<shu[i]<<' '; 38 cout<<shu[k]<<endl; 39 40 } 41 42 } 43