给出一个句子,我希望能够计算每个单词中有多少个元音。
示例输入:
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') {
我是否正确地采用了这种方式,或者我应该采取不同的方法?
答案 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;
}