c语言按单词长度从小到大排序
时间: 2023-08-23 19:40:38 浏览: 60
可以使用C语言中的qsort函数对单词按长度从小到大进行排序,具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const void *a, const void *b) {
return strlen(*(char**)a) - strlen(*(char**)b);
}
int main() {
char words[10][20];
int i, n;
printf("Enter number of words: ");
scanf("%d", &n);
printf("Enter %d words:\n", n);
for(i = 0; i < n; i++)
scanf("%s", words[i]);
qsort(words, n, sizeof(words[0]), cmp);
printf("\nIn order of length: \n");
for(i = 0; i < n; i++)
printf("%s\n", words[i]);
return 0;
}
```
在这个代码中,我们使用了qsort函数进行排序,cmp函数用于比较两个字符串的长度。在主函数中,我们先输入需要排序的单词,然后使用qsort函数进行排序,最后输出排序后的结果。
相关问题
,将5个单词从小到大排序后输出。试使用c语言编写程序
### 回答1:
以下是使用 C 语言编写的程序,可以实现将 5 个单词从小到大排序后输出:
```c
#include <stdio.h>
#include <string.h>
int main() {
char words[5][20];
char temp[20];
// 获取 5 个单词
printf("请输入 5 个单词:\n");
for(int i = 0; i < 5; i++) {
scanf("%s", words[i]);
}
// 冒泡排序
for(int i = 0; i < 5; i++) {
for(int j = i + 1; j < 5; j++) {
if(strcmp(words[i], words[j]) > 0) {
strcpy(temp, words[i]);
strcpy(words[i], words[j]);
strcpy(words[j], temp);
}
}
}
// 输出排序后的结果
printf("排序后的结果为:\n");
for(int i = 0; i < 5; i++) {
printf("%s\n", words[i]);
}
return 0;
}
```
程序的基本思路是先获取 5 个单词,然后使用冒泡排序将它们从小到大排序,最后输出排序后的结果。其中使用了 `strcmp` 函数来比较两个字符串的大小,使用了 `strcpy` 函数来交换两个字符串的值。
### 回答2:
下面是使用C语言编写的程序,可以将5个单词按照字典顺序从小到大排序后输出。
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100
int main() {
char words[5][MAX_LENGTH]; // 存储5个单词的数组
char temp[MAX_LENGTH]; // 临时变量用于交换单词
// 输入5个单词
printf("请输入5个单词:\n");
for (int i = 0; i < 5; i++) {
scanf("%s", words[i]);
}
// 使用冒泡排序法对单词进行排序
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4 - i; j++) {
if (strcmp(words[j], words[j+1]) > 0) {
strcpy(temp, words[j]);
strcpy(words[j], words[j+1]);
strcpy(words[j+1], temp);
}
}
}
// 输出排序后的单词
printf("排序后的单词为:\n");
for (int i = 0; i < 5; i++) {
printf("%s\n", words[i]);
}
return 0;
}
```
在程序中,我们首先定义了一个二维字符数组`words`用于存储5个单词,同时使用`#define`指令定义了单词的最大长度为100。然后使用循环依次输入这5个单词。
接下来,我们使用冒泡排序法对这5个单词进行排序。在每一轮排序中,我们比较相邻两个单词的大小,并根据大小关系进行交换,直到所有的单词都按照大小顺序排列。
最后,我们通过循环输出排序后的单词。
运行程序,输入5个单词后,程序会将这5个单词按照字典顺序从小到大排序后输出。
### 回答3:
下面是使用C语言编写的程序,用于将5个单词按照字典顺序从小到大排序并输出:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
#define NUM_WORDS 5
void sortWords(char words[][MAX_LEN]) {
char temp[MAX_LEN];
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) {
strcpy(temp, words[j]);
strcpy(words[j], words[j+1]);
strcpy(words[j+1], temp);
}
}
}
}
int main() {
char words[NUM_WORDS][MAX_LEN];
printf("请输入5个单词:\n");
for(int i=0; i<NUM_WORDS; i++) {
scanf("%s", words[i]);
}
sortWords(words);
printf("排序后的单词为:\n");
for(int i=0; i<NUM_WORDS; i++) {
printf("%s\n", words[i]);
}
return 0;
}
```
上述程序首先定义了最大单词长度和单词个数的常量,并声明了一个用于存储单词的二维字符数组`words`。然后,使用嵌套循环对数组中的单词进行冒泡排序,通过比较相邻两个单词的大小来交换它们的位置,直到所有单词按照字典顺序排列好。排序完成后,程序将输出排序后的单词。以上程序可以根据输入的5个单词进行排序,并将排序结果输出。
编写一个程序,让用户输入一些英文单词,然后按照单词的长度从小到大排序,并输出排序后的结果。如果有两个单词的长度相同,按照输入的顺序不变,用C语言
以下是一个简单的 C 语言程序,实现了用户输入英文单词并按长度排序的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int n, i, j;
char temp[50];
printf("请输入单词的个数:");
scanf("%d", &n);
char words[n][50];
printf("请输入单词:\n");
for (i = 0; i < n; i++) {
scanf("%s", words[i]);
}
// 使用冒泡排序法按单词长度排序
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (strlen(words[j]) > strlen(words[j+1])) {
strcpy(temp, words[j]);
strcpy(words[j], words[j+1]);
strcpy(words[j+1], temp);
}
}
}
printf("按长度排序后的单词:\n");
for (i = 0; i < n; i++) {
printf("%s\n", words[i]);
}
return 0;
}
```
该程序使用冒泡排序算法实现按单词长度排序,其中 `words` 是一个二维字符数组,用于存储用户输入的单词。首先,程序会提示用户输入单词的个数和单词本身,然后按照长度从小到大排序并输出排序后的结果。