编写一个使用字符型指针数组对学生姓名字符串进行排序的程序。 写一个程序,把键盘输入的一组学生的姓名字符串存入一个字符型指针数组中,然后选择一种排序方法对其进行升序排序。要求字符型指针数组中的每个指针指向的空间都要动态申请。 提示:可以先用一个字符型数组过渡,接受键盘输入的字符串,再根据字符串的长度动态申请空间,并让字符指针数组的指针指向它,最后再把字符数组中的字符串复制到指针所指向的空间。
时间: 2024-04-11 20:26:30 浏览: 49
指针数组为字符串排序:1、冒泡排序 2、快速排序
下面是一个使用字符型指针数组对学生姓名字符串进行排序的程序示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sortNames(char** names, int count) {
int i, j;
char* temp;
for (i = 0; i < count - 1; i++) {
for (j = 0; j < count - i - 1; j++) {
if (strcmp(names[j], names[j + 1]) > 0) {
temp = names[j];
names[j] = names[j + 1];
names[j + 1] = temp;
}
}
}
}
int main() {
int count, i;
char tempName[100];
char** names;
printf("请输入学生数量:");
scanf("%d", &count);
names = (char**)malloc(count * sizeof(char*));
for (i = 0; i < count; i++) {
printf("请输入学生姓名:");
scanf("%s", tempName);
names[i] = (char*)malloc((strlen(tempName) + 1) * sizeof(char));
strcpy(names[i], tempName);
}
sortNames(names, count);
printf("排序后的学生姓名:\n");
for (i = 0; i < count; i++) {
printf("%s\n", names[i]);
free(names[i]);
}
free(names);
return 0;
}
```
在这个程序中,首先通过键盘输入学生的数量。然后使用`malloc`函数动态申请一个字符型指针数组`names`的内存空间。接下来,使用一个循环,依次输入学生的姓名,并将其存储在一个临时字符数组`tempName`中。然后,为每个学生的姓名动态申请内存空间,并将指针保存在`names`数组中。排序函数`sortNames`使用冒泡排序算法对学生姓名进行升序排序。最后,打印排序后的学生姓名,并释放动态申请的内存空间。
请注意,这只是一个示例程序,实际应用中可能需要进行错误处理和边界情况的检查。
阅读全文