利用指针将10个学生的姓名排序,用c语言
时间: 2024-05-01 11:20:08 浏览: 26
下面是一个简单的示例代码,它可以通过指针将10个学生的姓名进行排序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 50
#define NUM_STUDENTS 10
int main() {
char names[NUM_STUDENTS][MAX_NAME_LEN];
char *ptrs[NUM_STUDENTS];
// 读入学生姓名
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", names[i]);
}
// 将指针数组 ptrs 指向 names 数组中的每个元素
for (int i = 0; i < NUM_STUDENTS; i++) {
ptrs[i] = names[i];
}
// 使用冒泡排序法将学生姓名按字母顺序排序
for (int i = 0; i < NUM_STUDENTS - 1; i++) {
for (int j = 0; j < NUM_STUDENTS - i - 1; j++) {
if (strcmp(ptrs[j], ptrs[j + 1]) > 0) {
char *temp = ptrs[j];
ptrs[j] = ptrs[j + 1];
ptrs[j + 1] = temp;
}
}
}
// 输出排序后的学生姓名
printf("排序后的学生姓名为:\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("%s\n", ptrs[i]);
}
return 0;
}
```
这段代码首先定义了一个二维字符数组 `names`,用于存储学生姓名,每个姓名的最大长度为 `MAX_NAME_LEN`。然后定义了一个指针数组 `ptrs`,用于存储指向每个学生姓名的指针。
接下来使用 `scanf` 函数从标准输入中读入每个学生的姓名,并将 `ptrs` 数组指向 `names` 数组中的每个元素。
最后使用冒泡排序法将 `ptrs` 数组中的指针按照指向的字符串的字母顺序进行排序,然后输出排序后的学生姓名。