我想制作一个程序来计算用户输入的句子中的元音。 为了比较一个利用元音排列大写的字符,但是虽然它们没有引起错误,但是不要输入正确的输出。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
//Program EJER004
int main(){
char vowels[5] = {'A','E','I','O','U'};
int count;
char letter;
count = 0;
printf("Enter a phrase, ending with a point\n");
do{
letter=getchar();
if (toupper(letter) == vowels[5]) /*attempt ask if is a vowel the letter introduced*/
count++;
}while (letter != '.');
printf("\n");
printf("\n");
printf("The number of vowels in the phrase introduced is% d", count);
getch();
return 0;
}
答案 0 :(得分:0)
它认为问题是比较toupper(letter) == vowels[5]
?元音[5]总是不在数组中,但是没有检查其他元音。
你需要添加一个循环:
char upr=toupper(letter);
for(int i=0; i<5; i++)
if(vowels[i]==c)
{ cont++;
break;
}
答案 1 :(得分:0)
您应该为此比较编写一个小函数
int checkforVowels(char tobechecked)
{
//this only get vowels in CAPSLOCK tho... so dont forget toupper
char vowels[5] = {'A','E','I','O','U'};
int hasvowel = 0;
for(int i = 0; i < 5; i++)
{
if(tobechecked == vowels[i])
{
hasvowel = 1;
break;
}
}
return hasvowel;
}
所以你可以像那样
if(checkforVowels(toupper(letter))
HTH