Zähle die Anzahl der Vokale in einem Wort Bitte schreibe ein Programm um zu zählen wie viele Vokale ('a', 'e', 'i', 'o', 'u') in einer Liste von Eingabewörtern. Ihr Programm liest die Wörter nacheinander und gibt die Anzahl der Vokale aus, die in jedem Wort vorkommen. Jedes Wort besteht nur aus Alphabeten in gemischten Fällen. Das Programm wiederholt diesen Vorgang bis zum Wort "exit" (Groß-/Kleinschreibung wird nicht beachtet). Beenden Sie in diesem Fall das Programm nach dem Ausdruck der Anzahl der Vokale in "exit". Nach der Beendigung ignoriert das Programm eventuell noch vorhandene Eingaben.Anzahl der Vokale in der Eingabe der gegebenen Wörter
Eingabe: Mehrere Wörter über mehrere Zeilen hinweg. Jedes Wort darf nicht länger als 50 Zeichen sein. Die Wörter sind durch Leerzeichen voneinander getrennt.
Ausgabe: Die Anzahl der Vokale in jedem Eingabewort, getrennt durch Newline. Das ist eine Nummer in einer Zeile.
Sample run #1:
I
1
went
1
apple
2
school
2
by
0
BUS
1
Exit
2
Sample run #2:
I go to school
1
1
1
2
by QQ email
0
0
3
Ai yAh Oooops
2
1
4
um
1
eXiT ignore these please
2
Ich schreibe einen Code für dieses Programm und versuchte diesen Code. Es scheint die korrekte Ausgabe zu geben, gibt aber immer noch keine volle Anerkennung auf meinem Schulcode-Checker. Was scheint das Problem zu sein?
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int isVowel(char c);
int isExit(char* c);
int main(void)
{
char s1[51];
int N, i, v = 0;
int noExit = 1;
while (noExit)
{
fgets(s1, 51, stdin);
N = strlen(s1);
for (i = 0; i < N; i++)
{
if (isExit(&s1[i]))
{
printf("2\n");
noExit = 0;
break;
}
else
{
if (isVowel(s1[i]))
{
v++;
}
else if (s1[i] == ' ' || s1[i] == '\n')
{
printf("%d\n", v);
v = 0;
}
}
}
}
return 0;
}
int isVowel(char c)
{
c = toupper(c);
if (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U' || c == 'a'
|| c == 'e' || c == 'i' || c == 'o' || c == 'u')
return 1;
else
return 0;
}
int isExit(char* c)
{
if ((toupper(c[0]) == 'E') && (toupper(c[1]) == 'X')
&& (toupper(c[2]) == 'I') && (toupper(c[3]) == 'T'))
{
return 1;
}
else
{
return 0;
}
}
Jedes * Wort * kann bis zu 50 Zeichen lang sein. Zeilen können länger sein und der gebuchte Code behandelt längere Zeilen nicht korrekt. –
Sie haben 'c = toupper (c);' geschrieben, aber Sie überprüfen immer noch Kleinbuchstaben ... – LPs
Außerdem kann 'isExit' das Array außerhalb der Grenzen adressieren, zum Beispiel wenn' c = & s1 [49] ' – LPs