明明是升序排列,怎么成逆序输出了啊?

#include<stdio.h>
void main()
{
char s[5][80],*p[5];
int i,j;
printf("\nInput 5 strings:\n");
for(i=0;i<5;i++)
gets(s[i]);
printf("-------------------------\n");
for(i=0;i<5;i++)
p[i]=s[i];
for(i=0;i<5;i++)
for(j=i+1;j<5;j++)
cmp(p[i],p[j]);
for(i=0;i<5;i++)
puts(s[i]);
}
cmp(char s[80],char t[80])
{
char string[80];
int i=0;
for(i=0;i<80&&t[i];i++)
if(s[i]>t[i])
{
cpy(string,s);
cpy(s,t);
cpy(t,string);
break;
}
printf("%s %s\n",s,t);
}
cpy(char a[80],char b[80])
{
int i;
for(i=0;b[i]!='\0'&&i<80;i++)
a[i]=b[i];
a[i]='\0';
}

凤凰求蛊
浏览 73回答 1
1回答

阿晨1998

cmp(char s[80],char t[80]){char string[80];int i=0;for(i=0;i<80&&t[i];i++)if(s[i]>t[i]){cpy(string,s);cpy(s,t);cpy(t,string);break;}printf("%s %s\n",s,t);}应该改成cmp(char s[80],char t[80]){char string[80];int i=0;for(i=0;i<80&&t[i];i++)if(s[i]>t[i]){cpy(string,s);cpy(s,t);cpy(t,string);break;}else if (s[i]<t[i]) break;printf("%s %s\n",s,t);}
打开App,查看更多内容
随时随地看视频慕课网APP