C语言将5个单词(“one、two、three、four、five”)从小到大排列后输出。定义sort()函数完成对指针数组排序,使用选择排序对数组进行排序。(提示:通过比较字符串的字母顺序来确定每个
时间: 2025-06-15 09:19:49 浏览: 22
在C语言中,为了将给定的5个单词("one", "two", "three", "four", "five")按照字典序从小到大排序并输出,你可以定义一个结构体存储字符串及其下标,并使用选择排序算法。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 定义结构体存储单词和它的索引
typedef struct {
char word[6]; // 假设单词最多5个字符加结束符'\0'
int index;
} Word;
// 比较两个Word结构体的字典序
int compare(const void *a, const void *b) {
Word *wordA = (Word *)a;
Word *wordB = (Word *)b;
return strcmp(wordA->word, wordB->word);
}
void selection_sort(Word arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int min_index = i;
for (int j = i + 1; j < n; j++) {
if (compare(&arr[j], &arr[min_index]) < 0) {
min_index = j;
}
}
// 交换最小元素的位置
Word temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
}
int main() {
const char *words[] = {"one", "two", "three", "four", "five"};
Word sorted_words[numelements(words)]; // 数组大小应等于单词的数量
int i = 0;
// 将单词复制到结构体数组并添加索引
for (i = 0; words[i] != NULL; i++) {
strcpy(sorted_words[i].word, words[i]);
sorted_words[i].index = i;
}
// 对数组进行排序
selection_sort(sorted_words, i);
// 输出排序后的结果
for (i = 0; i < i; i++) {
printf("%s (%d)\n", sorted_words[i].word, sorted_words[i].index);
}
return 0;
}
阅读全文
相关推荐















