HDU 1106 排序

地址:http://acm.hdu.edu.cn/showproblem.php?pid=1106

解题思路:这道题就是一个字符串处理啦,这道题我们要考虑几种情况
1.多个5连在一起
2.第一个字符为5
3.最后一个字符为5

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 int cmp(const void*a,const void*b)
 5 {
 6     return *(int *)a-*(int *)b;  //升序
 7 }
 8 int main()
 9 {
10     int i,flag,k,len;
11     char str1[1001];
12     int  str2[1001];
13     while(scanf("%s",&str1)!=EOF)
14     {
15         len=strlen(str1);
16         k=0;
17         flag=0;
18         for(i=0;i<len;i++)
19         {
20             if(str1[i]=='5')
21             continue;  //把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数 
22             else
23             while(str1[i]!='5')
24             {
25                 if(i==len)
26                 break;
27                 k=k*10+(str1[i]-'0'); //将一个字符串转化为一个数存放到整形数组里 
28                 i++;  //是将隔开的字符串转化为数 
29             }
30             str2[flag++]=k;  //存放在整形数组ste2中 
31             k=0;  //每次都要清0 
32         }
33         qsort(str2,flag,sizeof(str2[0]),cmp);
34         for(i=0;i<flag-1;i++)
35            printf("%d ",str2[i]);
36            printf("%d\n",str2[flag-1]);
37     }
38     system("pause");
39     return 0;
40 }

posted on 2012-08-11 11:39  mycapple  阅读(299)  评论(0编辑  收藏  举报

导航