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");
}
}