这个题只要处理下怎样确定符合条件的个数,然后将这些数排序就行了。

起初想了都不太严谨,不知道怎么确定个数,后来想出来了。只要确定

个数这题就好办了,只要将那些字符转成整数,排序就行了。

代码:

View Code
 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  

 

posted on 2012-09-06 17:32  xinmenghuairi  阅读(199)  评论(0编辑  收藏  举报