HDU 1106 哪里WA?
#include<stdio.h>#include<string.h>#include<stdlib.h>intCompare(constvoid*a,constvoid...
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int Compare(const void *a ,const void *b){
return *(int *)a - *(int *)b;
}
int main(){
char str[1001];
char p[1001];
int num[1001],i,j,k;
while(scanf("%s",str)!=EOF){
j = k = 0 ;
for(i = 0 ; i < strlen(str) ; i ++)
{
if(str[i]!='5')
p[j++]=str[i];
else{
p[j]='\0';
num[k++]=atoi(p);
j = 0;
}
}
qsort(num,k,sizeof(int),Compare);
for(i = 0 ; i < k - 1 ; i ++)
printf("%d ",num[i]);
printf("%d\n",num[i]);
}
return 0;
} 展开
#include<string.h>
#include<stdlib.h>
int Compare(const void *a ,const void *b){
return *(int *)a - *(int *)b;
}
int main(){
char str[1001];
char p[1001];
int num[1001],i,j,k;
while(scanf("%s",str)!=EOF){
j = k = 0 ;
for(i = 0 ; i < strlen(str) ; i ++)
{
if(str[i]!='5')
p[j++]=str[i];
else{
p[j]='\0';
num[k++]=atoi(p);
j = 0;
}
}
qsort(num,k,sizeof(int),Compare);
for(i = 0 ; i < k - 1 ; i ++)
printf("%d ",num[i]);
printf("%d\n",num[i]);
}
return 0;
} 展开
1个回答
展开全部
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int Compare(const void *a ,const void *b){
return *(int *)a - *(int *)b;
}
int main(){
char str[10002];
char p[10002];
int num[10001],i,j,k,l;
while(scanf("%s",str)!=EOF){
j = k = 0 ;
l=strlen(str);
str[l]='5';
str[++l]='\0';
for(i = 0 ; i < l ; i ++)
{
if(str[i]!='5')
p[j++]=str[i];
else{
p[j]='\0';
if(p[j-1]!='\0')
num[k++]=atoi(p);
j = 0;
}
}
qsort(num,k,sizeof(int),Compare);
for(i = 0 ; i < k - 1 ; i ++)
printf("%d ",num[i]);
printf("%d\n",num[i]);
}
return 0;
}
这样就可以了。
第一,它的输入描述好像有问题,不止1000长度。。。
第二,不是所有输入以5结束。
第三,如果连续的5应该是没有数字的,而不是0
#include<string.h>
#include<stdlib.h>
int Compare(const void *a ,const void *b){
return *(int *)a - *(int *)b;
}
int main(){
char str[10002];
char p[10002];
int num[10001],i,j,k,l;
while(scanf("%s",str)!=EOF){
j = k = 0 ;
l=strlen(str);
str[l]='5';
str[++l]='\0';
for(i = 0 ; i < l ; i ++)
{
if(str[i]!='5')
p[j++]=str[i];
else{
p[j]='\0';
if(p[j-1]!='\0')
num[k++]=atoi(p);
j = 0;
}
}
qsort(num,k,sizeof(int),Compare);
for(i = 0 ; i < k - 1 ; i ++)
printf("%d ",num[i]);
printf("%d\n",num[i]);
}
return 0;
}
这样就可以了。
第一,它的输入描述好像有问题,不止1000长度。。。
第二,不是所有输入以5结束。
第三,如果连续的5应该是没有数字的,而不是0
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询