#include
#include
void main(){
char a[6][7]={"Tom","Mary","Jack","Rose","Harry","Alice"};
int i,j;
char t[7];
for(i=0;i<6;i++)
for(j=0;j<5-i;j++)
if(strcmp(a[j],a[j+1])>0) {strcpy(t[7],a[j]);strcpy(a[j],a[j+1]);strcpy(a[j+1],t[7]);}
else break;
for(i=0;i<6;i++)
printf("%s\n",a[i]);
}
#include <stdio.h>
#include <string.h>
int main(){
char a[6][7]={"Tom","Mary","Jack","Rose","Harry","Alice"};
int i,j;
char t[7];
for(i=0;i<5;i++)
for(j=0;j<5-i;j++)
if(strcmp(a[j],a[j+1])>0)
{
strcpy(t,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],t);
}
for(i=0;i<6;i++)
printf("%s\n",a[i]);
return 0;
}
评论区有位大神帮我改正了但我不太懂为啥这么改
为啥strcpy那里是t而不是t[]
还有为什么if后面不用else break呢
#include <stdio.h>
#include <string.h>
int main(){
char a[6][7]={"Tom","Mary","Jack","Rose","Harry","Alice"};
int i,j;
char t[7];
for(i=0;i<5;i++)
for(j=0;j<5-i;j++)
if(strcmp(a[j],a[j+1])>0)
{
strcpy(t,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],t);
}
for(i=0;i<6;i++)
printf("%s\n",a[i]);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: