杭电ACM中1106问题--排序,提交的时候老是出现“wrong answer",请问这是什么状况呢??

下面是我的详细代码,请各位大虾帮忙看看,找出错误点#include<stdio.h>#include<stdlib.h>#include<string.h>intcomp... 下面是我的详细代码,请各位大虾帮忙看看,找出错误点
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int compare(const void *a,const void *b)
{
return *((int*)a)-*((int*)b);
}

int main()
{
int n,i,j,k;
int length;
char str[1002];
char *s;
int a[1002];
//freopen("br.txt","r",stdin);
while(scanf("%s",str)!=EOF)
{
n=0;
j=0;
length=strlen(str);
for(i=0;;i++)
{
s=malloc(sizeof(char)*10);
k=0;
while(j<length && str[j]!='5')
{
s[k]=str[j];
k++;
++j;
}
if(j<length && str[j]=='5')
{
if(k==0)
{
i--;
}
else
{
a[i]=atoi(s);
n++;
}
}
else//j==length
{
if(strlen(s)!=0)
{
a[i]=atoi(s);
n++;
}
break;
}
j++;
}

qsort(a,n,sizeof(int),compare);

printf("%d",a[0]);
for(i=1;i<n;i++)
{
printf(" %d",a[i]);
}
printf("\n");
}
return 1;
}
展开
 我来答
porker2008
2011-08-08 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int compare(const void *a,const void *b)
{
return *((int*)a)-*((int*)b);
}

int main()
{
int n,i,j,k;
int length;
char str[1002];
char *s;
int a[1002];
//freopen("br.txt","r",stdin);
while(scanf("%s",str)!=EOF)
{
n=0;
j=0;
length=strlen(str);
s=(char*)malloc(sizeof(char)*11);
for(i=0;;i++)
{
k=0;
while(j<length && str[j]!='5')
{
s[k]=str[j];
k++;
++j;
}
s[k]=0; // 这个很重要
if(j<length && str[j]=='5')
{
if(k==0)
{
i--;
}
else
{
a[i]=atoi(s);
n++;
}
}
else//j==length
{
if(strlen(s)!=0)
{
a[i]=atoi(s);
n++;
}
break;
}
j++;
}

qsort(a,n,sizeof(int),compare);

printf("%d",a[0]);
for(i=1;i<n;i++)
{
printf(" %d",a[i]);
}
printf("\n");
}
return 1;
}
追问
为什么要添加上”s[k]=0“,求甚解……
追答
字符串以 '\0'结尾
不然atoi会出错
所以应该在字符串最后补一个‘\0'或者0
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式