杭电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;
} 展开
#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;
} 展开
展开全部
#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;
}
#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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询