试使用c语言编写程序:用指针数组存放5个单词,将5个单词从小到大排序后输出。
时间: 2023-06-27 18:08:21 浏览: 116
下面是一个使用指针数组实现单词排序的C语言程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 20
#define NUM_WORDS 5
int main() {
char* words[NUM_WORDS];
char buffer[MAX_LENGTH];
// 输入5个单词
for (int i = 0; i < NUM_WORDS; i++) {
printf("请输入第%d个单词:", i+1);
scanf("%s", buffer);
// 动态分配内存,存储单词
words[i] = (char*)malloc(strlen(buffer) + 1);
strcpy(words[i], buffer);
}
// 冒泡排序
for (int i = 0; i < NUM_WORDS - 1; i++) {
for (int j = 0; j < NUM_WORDS - i - 1; j++) {
if (strcmp(words[j], words[j+1]) > 0) {
char* temp = words[j];
words[j] = words[j+1];
words[j+1] = temp;
}
}
}
// 输出排序后的单词
printf("排序后的单词为:\n");
for (int i = 0; i < NUM_WORDS; i++) {
printf("%s\n", words[i]);
}
// 释放内存
for (int i = 0; i < NUM_WORDS; i++) {
free(words[i]);
}
return 0;
}
```
在程序中,我们首先定义了一个指针数组 `words`,用来存储用户输入的5个单词。然后,我们使用 `malloc` 动态分配内存,为每个单词分配足够的内存空间,并使用 `strcpy` 函数将输入的单词复制到相应的内存空间中。
接下来,我们使用冒泡排序算法对单词进行排序。在排序过程中,我们使用 `strcmp` 函数比较两个单词的大小关系,如果前面的单词比后面的单词大,则进行交换。
最后,我们输出排序后的单词,并使用 `free` 函数释放动态分配的内存空间,防止内存泄漏。
阅读全文