用c语言用指针将从键盘输入的10个学生的姓名排序
时间: 2023-06-17 17:01:57 浏览: 138
下面是一个基于指针的C语言示例程序,可以实现对10个学生姓名的排序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 50
#define NUM_STUDENTS 10
int main() {
char *students[NUM_STUDENTS];
char buf[MAX_LEN];
int i, j;
// 读入学生姓名
printf("请输入%d个学生的姓名:\n", NUM_STUDENTS);
for (i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", buf);
students[i] = (char*)malloc(strlen(buf) + 1);
strcpy(students[i], buf);
}
// 冒泡排序
for (i = 0; i < NUM_STUDENTS - 1; i++) {
for (j = 0; j < NUM_STUDENTS - i - 1; j++) {
if (strcmp(students[j], students[j + 1]) > 0) {
char *tmp = students[j];
students[j] = students[j + 1];
students[j + 1] = tmp;
}
}
}
// 输出排序结果
printf("排序后的学生姓名为:\n");
for (i = 0; i < NUM_STUDENTS; i++) {
printf("%s\n", students[i]);
}
// 释放内存
for (i = 0; i < NUM_STUDENTS; i++) {
free(students[i]);
}
return 0;
}
```
该程序定义了一个 `students` 数组,用于存储学生姓名的指针。在读入每个学生的姓名时,程序使用 `malloc` 函数为其分配内存,并使用 `strcpy` 函数将输入的字符串复制到该内存中。
接下来,程序使用冒泡排序算法对学生姓名进行排序。在排序过程中,程序使用 `strcmp` 函数比较两个字符串的大小,如果前一个字符串比后一个字符串大,则交换它们的位置。
最后,程序输出排序后的学生姓名,并使用 `free` 函数释放之前分配的内存。
阅读全文
相关推荐















