C语言排序问题,急求我代码哪里错了输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 15:41:02
C语言排序问题,急求我代码哪里错了输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被
C语言排序问题,急求我代码哪里错了
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0).
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出.
Input
输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000.\x05
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成.
Output
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行.
Sample Input
0051231232050775
Sample Output
0 77 12312320
我的代码:
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
int cmp(const void *a,const void *b)
{
return *(int*)a-*(int*)b;
}
int main()
{
char t[2000];
int i,j,k,c[2000]={0},l,f,flag,s,d[2000];
while(scanf("%s",t)!=EOF)
{
l=strlen(t);
j=0;f=0;flag=0;
for(i=0;i
C语言排序问题,急求我代码哪里错了输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被
if(t[i]=='5'){i++;continue;} 这行中i不应该++, 目的是跳过当前的‘5’吧?那个是外层的for中的i++干的,这一行只需continue;就成了;
while(t[i]!='5')这行要考虑可能到达字符串的尾部,所以需要while(t[i]!='\0' && t[i]!='5')或者while(i