Problem Description
统计每个元音字母在字符串中出现的次数。
Input
输入数据首先包括一个整数n,表示测试实例的个数,然后是n行长度不超过100的字符串。
Output
对于每个测试实例输出5行,格式如下:
a:num1
e:num2
i:num3
o:num4
u:num5
多个测试实例之间由一个空行隔开。
Example Input
2 aeiou my name is ignatius
Example Output
a:1 e:1 i:1 o:1 u:1 a:2 e:1 i:3 o:0u:1
正确答案:
#include <iostream> #include <cctype> #include <cstring> #include <cstdio> using namespace std; int main() { void change(char str[], int str2[], int m); int n, m, str2[5]; char str1[5] = {'a', 'e', 'i', 'o', 'u'}; char str[100]; cin >> n; while (n--) { gets(str); if(str[0] == '\0') gets(str);//这里耽误了很多时间,如果没有这两行代码,输入n的值后,回车键会读入字符数组str中。加判断的意义在于第二次及以后循环时不用再输入n值,此时输入的字符串直接存入字符数组就好,该输入不需要。 memset(str2, 0, sizeof(str2)); m = strlen(str); change(str, str2, m); for (int i = 0; i < 5; i++) { cout << str1[i] << ":" << str2[i] << endl; } if(n != 0) cout << endl; } return 0; } void change(char str[], int str2[], int m) { for (int i = 0; i < m; i++) { if(str[i] == 'a') str2[0]++; else if(str[i] == 'e') str2[1]++; else if(str[i] == 'i') str2[2]++; else if(str[i] == 'o') str2[3]++; else if(str[i] == 'u') str2[4]++; } }