1. 程式人生 > >統計每個母音字母在字串中出現的次數。

統計每個母音字母在字串中出現的次數。

CLICK HERE TO HAVE A TRY
Time limit1000 ms
Memory limit32768 KB

原題:

統計每個母音字母在字串中出現的次數。

Input

輸入資料首先包括一個整數n,表示測試例項的個數,然後是n行長度不超過100的字串。

Output
對於每個測試例項輸出5行,格式如下:

a:num1
e:num2
i:num3
o:num4
u:num5
多個測試例項之間由一個空行隔開。

請特別注意:最後一塊輸出後面沒有空行:)
Sample Input

2
aeiou
my name is ignatius

Sample Output

a:1
e:1
i:1
o:1
u:1

a:2
e:1
i:3
o:0
u:1

問題分析:

定義一個足夠大的陣列,把輸入的字串放進裡面(包括空格),把一行裡的字元(包括空格)是母音個數分別輸出。

錯誤分析:

本人困在瞭如何讓系統接受一整行作為輸入的問題裡,想了好久,提交錯了好多,快崩潰了,才被同學指點,加了"n- -",加了這個就可以在首先輸入組數的情況下,在程式裡輸入完兩個例子之後就結束程式,這真是最關鍵的點之一了,其次利用**cin.getline(a,1000)來輸入一整行也是關鍵點,還要注意getchar()**的用法!!!!!
不懂的自行百度,不謝…

別說話,再做一次!!!!

VS通過的程式碼如下:

#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
int main()
{
	char a[1000];
	int i, k, n, b[5];
	cin >> n;
	getchar();
	while (cin.getline(a, 1000)&&n--)
	{
		k = strlen(a);
		for (i = 0;i < 5;i++)
			b[i] = 0;
		for
(i = 0;i < k;i++) { if (a[i] == 'a') b[0]++; else if (a[i] == 'e') b[1]++; else if (a[i] == 'i') b[2]++; else if (a[i] == 'o') b[3]++; else if (a[i] == 'u') b[4]++; } printf("a:%d\ne:%d\ni:%d\no:%d\nu:%d\n", b[0], b[1], b[2], b[3], b[4]); if (n != 0) printf("\n"); } }