当前位置: 首页 > 知识库问答 >
问题:

计算句子每个单词中的元音和字符

佟涵畅
2023-03-14

我一直在试图弄清楚如何计算句子每个单词中的元音和字符。例如

你好有句子

< code>hello : 5个字符,2个元音

<代码>有:5个字符,2个元音 。我见过完整句子做同样事情的代码。但不是一个字一个字地。

下面是我一直在做的编码

int main() {
    char str[512] = "hello there", word[256];
    int i = 0, j = 0, v, h;
    str[strlen(str)] = '\0';

    /* checking whether the input string is NULL */
    if (str[0] == '\0') {
        printf("Input string is NULL\n");
        return 0;
    }

    /* printing words in the given string */
    while (str[i] != '\0') {
        /* ' '  is the separator to split words */
        if (str[i] == ' ') 
        {
            for (h = 0; word[h] != '\0'; ++h)
            {
                if (word[h] == 'a' || word[h] == 'e' || word[h] == 'i' || word[h] == 'o' || word[h] == 'u')++v;
            }
            printf("\nVowels: %d", v);
            word[j] = '\0';

            printf("%s\n", word);
            j = 0;
        } 
        else 
        {
            word[j++] = str[i];
        }
        i++;
    }

    word[j] = '\0';

    /* printing last word in the input string */
    printf("%s\n", word);
    return 0;
}

输入将全部为小写。我很难弄清楚这一点。

在运行代码时,我没有得到元音计数。我能把句子分开。但元音计数没有发生。

共有3个答案

岳枫
2023-03-14

试试这段代码。它可能会帮助你

#include<stdio.h>
int main() {
    char str[512] = "hello there", word[256];
    int i = 0, j = 0, v=0,h; // you didn't initialize v to 0
    str[strlen(str)] = '\0';

    /* checking whether the input string is NULL */
    if (str[0] == '\0') {
            printf("Input string is NULL\n");
            return 0;
    }

    /* printing words in the given string */
    while (str[i] != '\0') {
            /* ' '  is the separator to split words */
            if (str[i] == ' ' ) {
    for (h = 0; word[h] != '\0'; h++) {
    if (word[h] == 'a' || word[h] == 'e' || word[h] == 'i' || word[h] == 'o' || word[h] == 'u')
            v++;
    }
    printf("%s :", word);
    printf(" %d chracters,",strlen(word));
    printf(" %d Vowels.\n", v);

    j = 0; v=0;
    word[j] = '\0';
    } else {
            word[j++] = str[i]; 
            word[j] = '\0';
    }
    i++;
    }

    /* calculating vowels in the last word*/ // when NULL occurs, Wont enter into while loop.
    for (h = 0; word[h] != '\0'; h++) {
    if (word[h] == 'a' || word[h] == 'e' || word[h] == 'i' || word[h] == 'o' || word[h] == 'u')
    v++;
    }
    printf("%s :", word);
    printf(" %d chracters,",strlen(word));
    printf(" %d Vowels.\n", v);

    return 0;
}
黄毅
2023-03-14

这听起来很像家庭作业…

这是一些伪代码

int c = 0;
int v = 0;
for (int i = 0; i < lengthOfSentence; i++){
    if (stringName[i] == '\0') { //optionally '\n' may be more suitable
        return;
    }
    if (stringName[i] == ' '){
        print previousWord // + c, v in whatever format you want
        c = 0;
        v = 0;
    }
    if (stringName[i] == vowel) { //you can do this part like in your code
        word[v+c] = stringName[i]; //get current char and add to next slot
        v++;
    }
    else {
        word[v+c] = stringName[i];
        c++++;
    }

除此之外,它还有一些微小的细节,例如实现 V C 会在打印时为您提供总字长等。

颜志业
2023-03-14

一个相当简单的方法:

#include <stdio.h>

const char* s(int n)
{
    return n == 1? "" : "s";
}

void count (const char* str)
{
    for (int i = 0;;)
        for (int v = 0, w = i;;)
        {
            int len;
            char c = str[i++];
            switch (c)
            {
            case 'a': case 'e': case 'i': case 'o': case 'u':
                v++;
            default:
                continue;
            case ' ': case '\t': case '\n': case '\0':
                len = i - 1 - w;
                printf("'%.*s': %d character%s, %d vowel%s\n", len, str+w, len, s(len), v, s(v));
                if (c)
                    break;
                else
                    return;
            }
            break;
        }
}


int main(void)
{
    count("My words with vowels");
    return 0;
}
 类似资料:
  • 给定一个句子,我希望能够数出每个单词中有多少个元音。 示例输入: 示例输出: 我最初的想法是有2个同时循环。第一个循环直到满足EOF以结束程序,第二个(嵌套的)同时循环将运行直到满足空格 (" ") ,同时还对当前单词中的元音求和。一旦遇到空格,它将打印出元音的当前值,第二个同时循环将结束并重新开始(元音计数器重置回0)。 这是我为此编写的代码: 然而,这导致语法错误,我不能找出我的错误。 第6行

  • 我需要找到一个单词中元音的计数。然而,当我比较单词中的字母是否是元音时, 举个例子,我做的就像下面这个, ……)//其余部分被省略 语句变得太长。有没有办法将它们与正则表达式或类似正则表达式的比较进行比较,并给我字符串中元音出现的次数?

  • 问题内容: 我正在编写一个非常基本的Java程序,该程序可以计算句子中每个单词的频率,到目前为止,我设法做到了这一点 我已经提取了每个字符串并将其存储在数组中,现在的问题实际上是如何计算每个“单词”重复出现的次数以及如何显示以使重复的单词不会多次显示,您能帮我这个忙吗?一个? 问题答案: 使用以单词为键的地图并将其计为值,像这样 如果不允许使用java.util,则可以使用一些排序算法对arr进行

  • 以下是一个练习的说明,我必须解决cs50 pset2可读性问题(从站点粘贴副本): 你的程序应该计算文本中字母、单词和句子的数量。您可以假设字母是从a到z的任何小写字符或从a到z的任何大写字符,由空格分隔的任何字符序列都应算作一个单词,句号、感叹号或问号的任何出现都表示句子的结尾 这些不是完整的说明,只是我有问题的部分。 我知道如何计算课文中的字母数,但我不知道如何计算单词和句子。我试着用谷歌搜索

  • 我在大学上Java入门课程。我的作业是写一个程序来显示一个句子中1个字母单词的数量,一个句子中2个字母单词的数量...等等。句子是用户输入的。我应该使用一个循环,但不允许使用数组。 然而,现在只是开始,我只是想找出句子第一个单词的字母数。我得到的结果要么是字母数不正确,要么是字符串索引超出范围。 例如,当我输入“这是一个句子”时,它会给我“字符串索引超出范围:4”对此的任何帮助都将不胜感激。

  • 我想计算一下给定句子中出现了多少个单词。我使用的是C编程语言。它不能计算最后一个字。在给定的字符串中,它计算每个单词发生的次数。如果有像这样的句子,那么程序应该算。但在我的情况下,它不算作。而不是计算,然后: 我的代码: