字母数组排序 c语言

来源:百度知道 编辑:UC知道 时间:2024/05/14 20:44:29
//输入人名 按字母顺序排列
#include <stdio.h>
#include <string.h>
main()
{
int i,j;
char name[5][20],t[20];
for(i=0;i<5;i++)
scanf("%s",&name[i]);
for(i=0;i<5;i++)
for(j=i+1;j<5;j++)
strcmp(name[i],name[j])>0;
{
strcpy(t,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],t);
}
for(i=0;i<5;i++)
printf("%s",name[20]);
}

哪里有问题啊 就是运行输入数据就有问题 帮帮忙啊1

#include <stdio.h>
#include <string.h>
main()
{
int i,j;
char name[5][20],t[20];
for(i=0;i<5;i++)
scanf("%s",&name[i]);
for(j=0;j<5;j++)
{
for(i=0;i<5;i++)
if(strcmp(name[j],name[i])<0)
{
strcpy(t,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],t);
}
}
printf("second:\n");
for(i=0;i<5;i++)
printf("%s\n",name[i]);
}

你是不是在输入的时候只输入第一个字符串后就结束了?
你可以在输入语句里加多一个%c,改为scanf("%s%c",&name[i]);
又或者是在输入的时候不要用回车,用空格把输入的两个字符串隔开,如:zhang li ma qiang wang
在第十一行,strcmp(name[i],name[j])>0;去掉分号,加上if(),改为if(strcmp(name[i],name[j])>0)
倒数第二行,把printf("%s",name[20]); 改为:printf("%s、",name[i]);