C计算句子每个单词中的元音

时间:2014-03-22 20:17:32

标签: c getchar

给出一个句子,我希望能够计算每个单词中有多少个元音。

示例输入:

Hello this is a test for the program.

示例输出:

2 1 1 1 1 1 1 2

我的第一个想法是有2个循环。第一个循环直到EOF被满足以结束程序,第二个(嵌套的)while循环将运行直到满足空格(“”),同时也将当前单词中的元音相加。一旦满足空格,它将打印出元音的当前值,第二个while循环将结束并再次开始(元音计数器重置为0)。

这是我为此编写的代码:

#include <stdio.h>
#include <ctype.h>
main() {
  int vowels = 0;
  char c;
  while ((c = getchar()) != '\n') {
    while((c = getchar()) != " "){
      if(tolower(c) =='a' || tolower(c) =='e' || tolower(c) =='i' || tolower(c) =='o' || tolower(c) =='u') vowels++;
    }
    printf("%d", vowels);
  }
}

然而,这会导致语法错误,我无法弄清楚我的错误。

第6行:

while ((c = getchar()) != '\n') {

我是否正确地采用了这种方式,或者我应该采取不同的方法?

2 个答案:

答案 0 :(得分:1)

您的错误在下一行。它应该是while ((c = getchar()) != ' '),带有单个引号(撇号),因为你想要一个字符文字而不是字符串文字。

答案 1 :(得分:0)

#include <stdio.h>
#include <ctype.h>

int main() {
    int c, vowels = 0;

    for(;;){
        c = tolower(getchar());
        if(c=='a' || c=='e' || c=='i' || c=='o' || c=='u') {
            ++vowels;
        } else if(isspace(c)){
            printf("%d ", vowels);
            if(c == '\n')
                break;
            vowels = 0;
        }
    }
    printf("\n");
    return 0;
}