此博客链接:https://www.cnblogs.com/ping2yingshi/p/12292840.html
统计元音字母 (50min)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2027
Problem Description
统计每个元音字母在字符串中出现的次数。
Input
输入数据首先包括一个整数n,表示测试实例的个数,然后是n行长度不超过100的字符串。
Output
对于每个测试实例输出5行,格式如下:
a:num1
e:num2
i:num3
o:num4
u:num5
多个测试实例之间由一个空行隔开。
请特别注意:最后一块输出后面没有空行:)
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
题解:
思路:定于一个字符数组,从控制台接收一串字符串,然后判断其中元音字母,此题需要注意的是:scanf()遇到空格会结束程序,所以本题不能用scanf()接收数组,这里用的gets()从控制台接收的字符串。不过这里还需要注意两点:1.在刚开始输入整数n后,使用scanf() 后按回车,下面接收字符串用gets()时,程序会直接结束,原因是:gets()遇到回车会结束输入,所以在使用scanf() 后,需要多加一个gtechar().接收回车,再用gets()接收输入字符串。2.因为每个示例之间有一个空格,但是最后一个示例没有空格,这里需要多加一个判断条件,判断是否是最后一个示例。
代码如下:
#include<stdio.h> #include<math.h> #include<stdlib.h> #include<string.h> int main(void) { int t; scanf("%d",&t); getchar(); while(t>0) { int a=0; int e=0; int i=0; int o=0; int u=0; int str=0; int k; char c[100]; gets(c); str=strlen(c); for(k=0;k<str;k++) { if(c[k]=='a') a++; else if(c[k]=='e') e++; else if(c[k]=='i') i++; else if(c[k]=='o') o++; else if(c[k]=='u') u++; } printf("a:%d ",a); printf("e:%d ",e); printf("i:%d ",i); printf("o:%d ",o); printf("u:%d ",u); t--; if(t!=0) printf(" "); } return 0; }