编写一个使用字符型指针数组对学生姓名字符串进行排序的程序。 写一个程序,把键盘输入的一组学生的姓名字符串存入一个字符型指针数组中,然后选择一种排序方法对其进行升序排序。要求字符型指针数组中的每个指针指向的空间都要动态申请。 提示:可以先用一个字符型数组过渡,接受键盘输入的字符串,再根据字符串的长度动态申请空间,并让字符指针数组的指针指向它,最后再把字符数组中的字符串复制到指针所指向的空间。
时间: 2024-04-10 16:28:42 浏览: 62
下是一个使用字符型指针数组对学生姓名字符串进行排序的程序示:
```c
#includestdio.h>
#include <stdlib.h>
#include <.h>
#define MAX_NAME_LENGTH 100
MAX_STUDENTS 100void sortNames(char **names, numStudents) {
int i, j char *temp;
for (i 0; i < numStudents -1; i++) {
for (j = 0; j < numStudents - i 1; j++) {
ifstrcmp(names[j], names[j + 1]) > 0) {
temp = names[j];
names[j] = names[j + 1];
names[j + 1] = temp;
}
}
}
}
int main() {
int numStudents, i;
char **names;
char buffer[MAX_NAME_LENGTH];
printf("Enter the number of students: ");
scanf("%d", &numStudents);
// 动态申请字符指针数组的空间
names = (char **)malloc(numStudents * sizeof(char *));
// 接受键盘输入的学生姓名,并动态申请内存空间存储字符串
for (i = 0; i < numStudents; i++) {
printf("Enter name for student %d: ", i + 1);
scanf("%s", buffer);
// 动态申请内存空间
names[i] = (char *)malloc((strlen(buffer) + 1) * sizeof(char));
// 复制字符串到动态申请的内存空间中
strcpy(names[i], buffer);
}
// 使用冒泡排序对学生姓名进行升序排序
sortNames(names, numStudents);
// 打印排序后的学生姓名
printf("\nSorted names:\n");
for (i = 0; i < numStudents; i++) {
printf("%s\n", names[i]);
}
// 释放动态申请的内存空间
for (i = 0; i < numStudents; i++) {
free(names[i]);
}
free(names);
return 0;
}
```
这个程序首先接收用户输入的学生数量,然后动态申请字符指针数组的空间。接下来,程序使用循环接收用户输入的每个学生姓名,并为每个姓名动态申请内存空间,然后将输入的字符串复制到动态申请的内存空间中。最后,使用冒泡排序对学生姓名进行升序排序,并打印排序后的结果。最后,释放动态申请的内存空间。
请注意,此示例假设学生姓名不超过100个字符,并且假设最多有100个学生。你可以根据实际需求进行相应的修改。
阅读全文