2016-07-03 2 views
-2

プログラムは、ユーザが入力した文に現れる母音の数を言う必要がある。あなたはポイントで終わらなければなりません。 問題は、配列が宣言されているときに間違ったステートメントがあることです。文章中に現れる母音の数を言う。

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

/*Program EJ004*/ 

const char vowels[11] = {'A','E','I','O','U',' ','‚','¡','ó','£',''}; 
char letgoods[93]= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9', 
    ' ','.',',',':',';','(',')','-','¿',' ','‚','¡','ó','£', 
    ' ','?',"",'!','"','%','/','<','>'}; 

//then the program is correct 

char letter; 
char phrase[80]; 
int n, t; 

int main(){ 
    int index, numvowels; 
    printf("Write your phrase, and ends with a point."); 
    index = 0; 
    numvowels = 0; 
    do{ 
     letter = getchar(); 
     for (t=0; t<93;t++){ 
      if (letter == letgoods[t]) 
      { 
//to not save special characters. 

index++; 
       printf("%c",letter); 

       phrase[index] = letter; 
       for (n=0; n<11;n++){ 
        if (toupper(letter) == vowels[n]) { numvowels++; 
        } 
       } 
      } 
     } 
    }while ((index < 80) || (letter != '.')); 
    printf("\n\n"); 
    printf("The phrase has %d vowels.",numvowels); 
    getch(); 
    return 0; 
} 

答えて

2

コードには次のような問題があります。

const char vowels[11] = {'A','E','I','O','U',' ','‚','¡','ó','£',''}; 

あなたは''を使用することはできません - それは空だ、とあなたは、char値を初期化するために、空を使用することはできません。あなたはここには文字がそこにいるしないことを示すために0を使用することができます。

const char vowels[11] = {'A','E','I','O','U',' ','‚','¡','ó','£',0}; 

あなたは文字の配列を反復処理するときに、この配列は、2つの二重引用符

char letgoods[93]= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9', 
    ' ','.',',',':',';','(',')','-','¿',' ','‚','¡','ó','£', 
    ' ','?', 
//What was intended here? 
"", 
//"" 
'!','"','%','/','<','>'}; 

を持っている、あなたは<=代わりの<を使用して、どのCの配列は0から始まるインデックスが付けられているので、配列を渡すことになります。あなたがする必要があります。

for (t=0; t<93;t++) 
.... 
while ((index < 80) || (letter != '.')) 
関連する問題