本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
时间: 2024-01-01 12:04:56 浏览: 227
#include <stdio.h>
#include <string.h>
#define MAX_N 100 // 最大单词数
#define MAX_LEN 100 // 单词最大长度
int main()
{
char words[MAX_N][MAX_LEN]; // 存储单词的二维字符数组
int len[MAX_N]; // 存储每个单词的长度
int n; // 单词数
int i, j;
char temp[MAX_LEN]; // 用于交换单词的临时字符数组
// 输入单词
printf("Please enter the number of words (no more than %d): ", MAX_N);
scanf("%d", &n);
printf("Please enter %d words:\n", n);
for (i = 0; i < n; i++) {
scanf("%s", words[i]);
len[i] = strlen(words[i]);
}
// 冒泡排序,按单词长度从小到大排序
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (len[j] > len[j+1] || (len[j] == len[j+1] && j > j+1)) {
// 交换单词
strcpy(temp, words[j]);
strcpy(words[j], words[j+1]);
strcpy(words[j+1], temp);
// 交换长度
int tmp = len[j];
len[j] = len[j+1];
len[j+1] = tmp;
}
}
}
// 输出排序后的单词
printf("The sorted words are:\n");
for (i = 0; i < n; i++) {
printf("%s\n", words[i]);
}
return 0;
}
阅读全文