用c程序写在主函数中输入N个字符串,调用func()函数用选择排序算法对他们进行升序排序,然后输出已经排好序的字符串。 要求使用指针数组进行处理。
时间: 2024-05-12 13:13:53 浏览: 121
使用指针、数组处理在C语言中处理“字符串”
以下是一个示例程序,可以实现输入N个字符串并使用选择排序算法对它们进行升序排序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100 // 假设每个字符串的最大长度为 100
void func(char **strings, int n) {
int i, j, min_index;
char *temp;
for (i = 0; i < n - 1; i++) {
min_index = i;
for (j = i + 1; j < n; j++) {
if (strcmp(strings[j], strings[min_index]) < 0) {
min_index = j;
}
}
if (min_index != i) {
temp = strings[i];
strings[i] = strings[min_index];
strings[min_index] = temp;
}
}
}
int main() {
int n, i;
char *strings[MAX_LENGTH];
printf("请输入字符串个数:");
scanf("%d", &n);
printf("请输入字符串:\n");
for (i = 0; i < n; i++) {
strings[i] = (char *) malloc(sizeof(char) * MAX_LENGTH); // 动态分配内存
scanf("%s", strings[i]);
}
func(strings, n);
printf("排序后的字符串:\n");
for (i = 0; i < n; i++) {
printf("%s\n", strings[i]);
free(strings[i]); // 释放内存
}
return 0;
}
```
在这个程序中,我们先定义了一个指针数组 `strings`,它用于存储输入的字符串。然后在主函数中,我们首先读取输入的字符串个数 `n`,并在循环中使用 `scanf()` 函数逐个读取字符串并动态分配内存保存到 `strings` 数组中。
接着,我们调用 `func()` 函数,它用选择排序算法对 `strings` 数组中的字符串进行升序排序。排序完成后,我们在循环中依次输出排好序的字符串,并在输出后释放动态分配的内存。
需要注意的是,在程序中我们使用了动态内存分配函数 `malloc()` 和 `free()`,这是为了避免在定义 `strings` 数组时预先分配过多的内存。同时,我们也需要在适当的时候释放已经分配的内存,防止内存泄漏的问题。
阅读全文