比较字符和数组

时间:2016-06-29 22:39:23

标签: c arrays

我想制作一个程序来计算用户输入的句子中的元音。 为了比较一个利用元音排列大写的字符,但是虽然它们没有引起错误,但是不要输入正确的输出。

#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;
}

2 个答案:

答案 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