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 }