从键盘上输入15个单词,将其以降序顺序显示出来。(排序方法不限,单词不得雷同)用c语言
时间: 2023-03-24 22:04:46 浏览: 313
可以使用C语言中的字符串排序函数qsort()来实现。具体代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_WORDS 15
#define MAX_WORD_LEN 20
int compare(const void *a, const void *b) {
return strcmp(*(const char **)b, *(const char **)a);
}
int main() {
char words[MAX_WORDS][MAX_WORD_LEN];
int i;
printf("请输入%d个单词:\n", MAX_WORDS);
for (i = ; i < MAX_WORDS; i++) {
scanf("%s", words[i]);
}
qsort(words, MAX_WORDS, sizeof(char[MAX_WORD_LEN]), compare);
printf("降序排列后的单词为:\n");
for (i = ; i < MAX_WORDS; i++) {
printf("%s\n", words[i]);
}
return ;
}
运行程序后,输入15个单词,程序会将其以降序顺序显示出来。
相关问题
从键盘上输入15个单词,将其以升序顺序显示出来。(排序方法不限,单词不得雷同)C语言程序
### 回答1:
以下是用C语言实现的代码:
```
#include <stdio.h>
#include <string.h>
#define MAX_WORDS 15
int main() {
char words[MAX_WORDS][50];
int i, j;
char temp[50];
printf("请输入15个单词(每个单词不得超过50个字符):\n");
for (i = 0; i < MAX_WORDS; i++) {
scanf("%s", words[i]);
}
for (i = 0; i < MAX_WORDS - 1; i++) {
for (j = i + 1; j < MAX_WORDS; j++) {
if (strcmp(words[i], words[j]) > 0) {
strcpy(temp, words[i]);
strcpy(words[i], words[j]);
strcpy(words[j], temp);
}
}
}
printf("排序后的单词:\n");
for (i = 0; i < MAX_WORDS; i++) {
printf("%s\n", words[i]);
}
return 0;
}
```
这段代码使用了双重循环和字符串函数 `strcmp` 和 `strcpy` 对输入的单词进行排序,最后输出升序排列的单词。
### 回答2:
题目要求我们从键盘上输入15个单词,并以升序顺序显示出来。下面是一个使用C语言编写的程序来实现这个功能:
```c
#include <stdio.h>
#include <string.h>
void sortWords(char words[][100], int n) {
// 使用冒泡排序对单词进行排序
for(int i = 0; i < n - 1; i++) {
for(int j = 0; j < n - i - 1; j++) {
if(strcmp(words[j], words[j+1]) > 0) {
char temp[100];
strcpy(temp, words[j]);
strcpy(words[j], words[j+1]);
strcpy(words[j+1], temp);
}
}
}
}
int main() {
char words[15][100];
// 从键盘上读取15个单词
printf("请输入15个单词:\n");
for(int i = 0; i < 15; i++) {
scanf("%s", words[i]);
}
// 对单词进行排序
sortWords(words, 15);
// 显示排序后的结果
printf("排序后的单词:\n");
for(int i = 0; i < 15; i++) {
printf("%s\n", words[i]);
}
return 0;
}
```
上面的程序首先定义了一个二维字符数组`words`用来存储输入的单词,每个单词的最大长度不超过100个字符。接下来,程序使用两层循环来使用冒泡排序算法对单词进行排序。输入的单词总数是15个,所以外层循环遍历了14次,内层循环则是根据当前外层循环的索引进行遍历比较并交换相邻的单词。最后,程序使用循环遍历`words`数组,并打印出排序后的单词结果。
### 回答3:
下面是一个使用冒泡排序法进行升序排列的C语言程序,可以从键盘上输入15个单词,并按升序顺序显示出来:
```c
#include <stdio.h>
#include <string.h>
void bubbleSort(char arr[][100], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (strcmp(arr[j], arr[j+1]) > 0) {
char temp[100];
strcpy(temp, arr[j]);
strcpy(arr[j], arr[j+1]);
strcpy(arr[j+1], temp);
}
}
}
}
int main() {
char words[15][100];
printf("请输入15个单词:\n");
for (int i = 0; i < 15; i++) {
scanf("%s", words[i]);
}
bubbleSort(words, 15);
printf("按升序排列后的单词:\n");
for (int i = 0; i < 15; i++) {
printf("%s\n", words[i]);
}
return 0;
}
```
这个程序首先定义了一个二维字符数组`words`,用于存储输入的15个单词,每个单词的最大长度为100。然后通过循环和`scanf`函数从键盘上依次读取15个单词。
接下来,通过调用`bubbleSort`函数对这15个单词进行升序排序。冒泡排序法通过不断比较相邻的两个元素,将较大(或较小)的元素交换到右边(或左边),实现排序。在比较单词时,使用了`strcmp`函数来比较两个字符串的大小。
最后,程序输出按升序排列后的单词。对于15个单词的情况,输出的顺序根据输入的具体情况而定。
用c语言表达并解决这个问题:从键盘上输入15个单词,将其以升序顺序显示出来。(排序方法不限,单词不得雷同)
#include<stdio.h>
int main()
{
char str[15][20];
int i,j;
printf("请输入15个单词:\n");
for(i=0;i<15;i++){
scanf("%s",&str[i]);
}
char temp[20];
for(i=0;i<15-1;i++){
for(j=0;j<15-1-i;j++){
if(strcmp(str[j],str[j+1])>0){
strcpy(temp,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],temp);
}
}
}
printf("按升序排列:\n");
for(i=0;i<15;i++)
printf("%s\n",str[i]);
return 0;
}
阅读全文