小白请教
/*#############################################*//*输入若干书名,每个书名长度不超过100,将书按ASCII顺序,从小到大排序。
请注意:这些书名中可能有空格。
第一个为字符串个数m,然后输入m个书名。
出将字符串按ASCII码从小到大排序后输出。*/
/*#############################################*/
#include<stdio.h>
#include<string.h>
int main()
{
char a;
char b;
int m,i,k;
scanf("%d",&m);
i=0;
for(i=0;i<m;i++)
{
gets(a);
}
for(i=0;i<m;i++)
{
for(k=i;k<m+1;k++)
{
if(strcmp(a,a)>0)
{
strcpy(b,a);
strcpy(a,a);
strcpy(a,b);
}
}
}
for(i=0;i<=m;i++)
puts(a);
return 0;
}
为什么没有实现从a开始赋值? 还用 gets 呢? strcmp(a,a)是恒等于0的把
#include<stdio.h>
#include<string.h>
int main()
{
char a;
char b;
int m,i,k;
scanf("%d",&m);
i=0;
for(i=0;i<m;i++)
{
scanf("%s",a);
}
for(i=0;i<m;i++)
{
for(k=i+1;k<m;k++)
{
if(strcmp(a,a)>0)
{
strcpy(b,a);
strcpy(a,a);
strcpy(a,b);
}
}
}
for(i=0;i<=m;i++)
printf("%s",a);
return 0;
} 这样就可以了,楼主你使用gets的话还是需要用一个getchar来吃掉'\n'的,还有k应该是=i+1的
#include<stdio.h>
#include<string.h>
int main()
{
char a;
char b;
int m,i,k;
scanf("%d",&m);
i=0;
getchar();
for(i=0;i<m;i++)
{
gets(a);
}
for(i=0;i<m;i++)
{
for(k=i;k<m+1;k++)
{
if(strcmp(a,a)>0)
{
strcpy(b,a);
strcpy(a,a);
strcpy(a,b);
}
}
}
for(i=0;i<=m;i++)
{
printf("%s\n",a);
return 0;
} 给个最佳{:10_256:}
页:
[1]