李阳背诵一千遍:C语言问题?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 20:18:12
编程从键盘输入n个同学的姓名后按字母的先后顺序排列,并输出之。

下面是源程序:
#include <stdio.h>
#include <string.h>

#define NUM 10 //十个名字
#define LENGTH 20 //名字的最大长度

void input(char name[][LENGTH]);
void sort(char name[][LENGTH]);
void display(char name[][LENGTH]);

int main()
{
char name[NUM][LENGTH] = {0};
input(name);
sort(name);
printf("排好了顺序的名字显示如下:\n");
display(name);
return 0;
}

void input(char name[][LENGTH])
{
int i;
for(i=0;i<NUM;i++)
{
printf("请输入第%d个同学的名字:",i+1);
scanf("%s",name[i]);
}
printf("输入结束!\n");
}

void sort(char name[][LENGTH])
{
char temp[LENGTH] = {0};
int i,j;
for(i=0;i<NUM;i++)
{
for(j=i+1;j<NUM;j++)
{
if(strcmp(name[i],name[j]) == 1)
{
strcpy(temp,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],temp);
}
}
}
}

void display(char name[][LENGTH])
{
int i;
for(i=0;i<NUM;i++)
{
printf("第%d个同学的名字是:%s\n",i+1,name[i]);
}
}
补充:
to楼下的:不会啊怎么会挂嘛。楼主要的应该是一些小程序,这个的算法就已经足够了,不知道楼下的说的挂掉是指为什么?

最简单的是用2维字符数组。然后比较每个小组的第一个字符的ASC码

如果n很大,恐怕这位老兄的程序就要挂掉了吧?