下面是一个实现,供参考:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 100
int main(void){
char * names[100];
char temp[30];
int num;
printf("测试输入:");
scanf("%d",&num); //获取输入的学生名字的个数
int i=0;
while(i<num){ //循环读取num个学生名字到names字符指针指向的空间中
//printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",temp); //读取一个学生名字到字符数组temp
//动态分配学生名字的长度+1个字符空间(1用于存储名字结尾的空字符),然后将字符指针数组的当前元素指向这个空间
names[i] = (char *)malloc((strlen(temp)+1)*sizeof(char));
strcpy(names[i],temp); //把学生名字字符串复制到字符指针指向的内存空间
i++;
}
// for(int i=0;i<num;i++){
// printf("%s ",names[i]);
// }
//
int j;
//排序学生名字
for(i=0;i<num-1;i++){
for(j=i;j<num;j++){
if(strcmp(names[i],names[j])>0){
strcpy(temp,names[i]);
strcpy(names[i],names[j]);
strcpy(names[j],temp);
}
}
}
//打印结果
printf("预期输出:");
for(int i=0;i<num;i++){
printf("%s ",names[i]);
}
return 0;
}