我學習C,所以我做不同的C編程中的元音和重複最多的元音的字符串輸入和打印數量的挑戰,其中之一是這個節目。 WAP接受來自用戶的字符串輸入並打印編號。元音和字符串中最重複的元音。C程序接受字符串
我能夠計算和打印元音的數量,但我無法弄清楚如何計算字符串中最重複的元音,儘管我可以直接在輸出屏幕上打印出最重複的元音只需在內部循環內輸入vowels[i]
的打印語句即可。但我想計算程序本身中最重複的元音,然後纔能有效地打印它。我嘗試了不同的東西,但沒有奏效。另外,我想保持代碼小巧高效。有沒有辦法呢?
這是我做過什麼,到目前爲止:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX 150
int main()
{
char Statement[MAX];
char vowels[] = {'a', 'e', 'i', 'o', 'u'};
int i, j;
puts("Enter a simple statement.");
fgets(Statement, 150, stdin);
printf("\nYou entered: %s\n", Statement);
for(i=0; i<=strlen(Statement); i++){
//Converting uppercase input to lowercase
Statement[i] = tolower((unsigned char)Statement[i]);
}
//Calling the function to print no. of
NumberOfVowels(Statement, vowels); vowels
return 0;
}
int NumberOfVowels(char Statement[], char vowels[])
{
int i, j, vowelsAmount = 0, count = 0;
for(i=0; i<5; i++){ //outer loop
for(j=0; j<=strlen(Statement); j++){ //inner loop
if(vowels[i] == Statement[j]){
vowelsAmount++;
printf("%c - ", vowels[i]);
}
}
}
printf("\nTotal number of vowels = %d", vowelsAmount);
return vowelsAmount;
}
建議:創建一個計數器陣列,每個字母一個。 c字符串中最多隻有256個。將它們全部初始化爲'0'並且增加相應的一個'counter [vowel [i]] ++'或類似的。最後你可以計算出最大值和最小值。 – Serge
最容易理解的是創建第二個數組來保存每個元音的數量。另一種方法是讓你的'元音'數組2D保持每個元音的數量。 – DigitalNinja
@Serge我試過在內部循環中包含一個計數器,它對'元音[0]'工作正常,但是在每個'元音[i]'結束內部循環後,我都無法提取計數器的值。因爲這樣它會爲'元音[0]'輸出正確的值,但是它會在'i> 0'後繼續添加。 –