一个简单的实现:
#include <stdio.h>
#include <string.h>
#define MAXSTUDENTS 5
#define NAMELENGTH 20
int main(){
int j,i;
char temp[NAMELENGTH] ;
char a [MAXSTUDENTS][NAMELENGTH] ; //存储一个小组的学生名字 ,默认小组最多不超过5人,每个人名字不超过20个字符 ,可以自己定义
// printf("1\n");
printf("请输入小组每个人的姓名:\n");
for(i=0;i<MAXSTUDENTS;i++){
scanf("%s",a[i]);
}
// printf("输入信息为:\n");
// for(i=0;i<MAXSTUDENTS;i++){
// printf("%s\n",a[i]);
// }
for(j=0;j<MAXSTUDENTS-1;j++){ //遍历姓名字符串数组
//printf("2\n");
for(i=j+1;i<MAXSTUDENTS;i++){ //逐个将当前数组i位置的名字和后面的每个位置的名字进行比较,按ASCII码大小从小到大排列
//printf("3\n");
if(strcmp(a[i],a[j])<0){ //如果当前i为主的姓名字符串比i位置后面的字符串第一个字母ASCII码小 ,则交换这个字符串
// printf("i=%d,j=%d,a[%d]=%s,a[%d]=%s\n",i,j,i,a[i],j,a[j]);
strcpy(temp,a[j]);
strcpy(a[j],a[i]);
strcpy(a[i],temp);
// printf("after change,i=%d,j=%d,a[%d]=%s,a[%d]=%s\n",i,j,i,a[i],j,a[j]);
// temp = a[i];
// a[i] = a[j];
// a[j] = temp;
}
}
}
printf("排序后的结果为:\n");
for(i=0;i<MAXSTUDENTS;i++){
printf("%s\n",a[i]);
}
return 0;
}