题目:http://acm.hdu.edu.cn/showproblem.php?pid=1106
题目不算难,但是想要做出来真不容易。。有很多细节需要注意:
给出几个特殊的测试数据:
55556
55565
65555
65556
很蛋疼的一道题,,输出的时候要注意格式,每行最后一个数后面没有空格~
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char strdata[1005];
int intdata[1005];
char temp[20];
int comp(const void *a ,const void *b)
{
return *(int*)a-*(int*)b;
}
int main()
{
int i,j;
int l;
int k;
while(scanf("%s",strdata)!=EOF)
{
l=strlen(strdata);
k=0;
memset(temp,'\0',sizeof(temp));
for (i=0,j=0;i<=l;i++) //扫描字符串
{
if(strdata[i]=='5'&&temp[0]=='\0') //忽略开头的5
continue;
if((strdata[i]=='5'||i==l)&&temp[0]!='\0') //忽略结尾的5
{
intdata[k++]=atoi(temp); //转换为数字
memset(temp,'\0',sizeof(temp));
j=0;
continue;
}
temp[j++]=strdata[i]; //把不是5的字符赋给temp
}
qsort(intdata,k,sizeof(int),comp);
for(i=0;i<k;i++)
if(i!=k-1)
printf("%d ",intdata[i]);
else
printf("%d",intdata[i]);
printf("\n");
}
return 0;
}