为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

凤凰求蛊 2022-11-18 18:18:29

#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';
}

查看完整描述

1 回答

?
阿晨1998

TA贡献1781条经验 获得超5个赞

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);
}


查看完整回答
反对 回复 2022-11-22
  • 1 回答
  • 0 关注
  • 8 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信