根据字符串的元音编号对字符串中的单词进行排序

时间:2014-06-10 15:57:51

标签: c string sorting

我必须在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;
}

1 个答案:

答案 0 :(得分:0)

您需要创建一个结构数组,其中包含指向单词的指针,然后是每个单词中元音的数量。类似的东西:

struct vowelcnt {
    char *word;
    int numvowels;
}

然后对结构数组进行排序(基于numvowels的降序排序。)然后简单地循环输出word的排序结构,这将给出按所包含的元音数量顺序排序的单词。希望有所帮助。