c语言利用指针将 10 个学生的姓名排序
时间: 2023-06-24 16:05:23 浏览: 76
可以通过使用指向指针的指针来实现对学生姓名的排序。以下是一个基本的实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LENGTH 50
#define NUM_STUDENTS 10
int main() {
char names[NUM_STUDENTS][MAX_NAME_LENGTH];
char *ptrs[NUM_STUDENTS];
// 读取学生姓名并将指针存储到ptrs数组中
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入学生 %d 的姓名:", i + 1);
fgets(names[i], MAX_NAME_LENGTH, stdin);
// 如果fgets函数读取了换行符,则将其替换为字符串结束符
if (names[i][strlen(names[i]) - 1] == '\n') {
names[i][strlen(names[i]) - 1] = '\0';
}
ptrs[i] = names[i];
}
// 使用指向指针的指针对学生姓名进行排序
char *temp;
for (int i = 0; i < NUM_STUDENTS - 1; i++) {
for (int j = i + 1; j < NUM_STUDENTS; j++) {
if (strcmp(ptrs[i], ptrs[j]) > 0) {
temp = ptrs[i];
ptrs[i] = ptrs[j];
ptrs[j] = temp;
}
}
}
// 打印排序后的学生姓名
printf("\n排序后的学生姓名为:\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("%s\n", ptrs[i]);
}
return 0;
}
```
在此示例中,我们首先使用二维字符数组`names`来存储学生姓名,然后使用字符指针数组`ptrs`来存储指向每个学生姓名的指针。接下来,我们使用`fgets`函数从用户输入中读取每个学生姓名,并将指向该姓名的指针存储到`ptrs`数组中。
最后,我们使用指向指针的指针对学生姓名进行排序。在这里,我们使用了C标准库中的`strcmp`函数来比较两个字符串的大小关系,并通过交换指针来实现排序。最后,我们打印排序后的学生姓名列表。
请注意,在此示例中,我们假设每个学生的姓名长度不超过50个字符。如果需要处理更长的姓名,请相应地增加`MAX_NAME_LENGTH`的值。