【发布时间】:2014-07-31 11:44:04
【问题描述】:
我必须用 C 语言编写一个程序,允许用户说出他们想在一个字符串中输入多少个单词,然后我必须根据它们的元音编号对这些单词进行排序(元音多的单词排在第一位,而最少的元音在最后 - 如果两个单词的元音数量相同,则按照它们出现的顺序保留它们)。例如:
string - "Aaaa Bbbbbbb B CD home Aaa BB A poke"
排序后的字符串——“Aaaa Aaa home poke A Bbbbbbb B CD BB”
我知道如何写第一部分,但对于排序部分我不知道。有人可以帮我吗?
编辑:目前我有这个代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#pragma warning (disable: 4996)
int main(){
char string1[20], string2[100] = { '\0' };
int N, i;
do{
printf("Enter the number of words you want to enter in the string: ");
scanf("%d", &N);
if (N < 2){
printf("You must enter at least two words.\n");
printf("Enter the number of words you want to enter in the string: ");
scanf("%d", &N);
}
} while (N < 2);
for (i = 0; i < N; i++){
printf("Enter a word: ");
scanf(" %[^\n]", string1);
if (strlen(string2) == 0)
strcpy(string2, string1);
else {
strcat(string2, " ");
strcat(string2, string1);
}
}
printf("%s\n", string2);
return 0;
}
【问题讨论】:
-
查找冒泡排序。它可以处理你想做的事情。
-
使用标准库
qsort()函数可以轻松进行排序。 -
可能您的课程涵盖了排序算法,您应该使用其中之一。
-
@NicholasYoung - 任何稳定排序算法都可以,但鉴于这似乎是一个学习程序而不是生产程序,冒泡排序或插入排序都是合适的。
-
我知道如何使用冒泡排序对整数数组进行排序,但我不知道如何根据元音编号对字符串中的单词进行排序。