HDU 2027

统计元音

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 73252 Accepted Submission(s): 29055

Problem Description
统计每个元音字母在字符串中出现的次数。

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

Author
lcy

Source
C语言程序设计练习(四)

试题分析:
这道题虽然简单,但是有一个地方一定要注意,scanf(“%d”,&n)后面的getchar()不能省略,否则会直接跳到下一个输入,导致程序出错。scanf()函数输入后会在缓存区留下回车键,如果第二个输入函数是scanf(“%c”,…或者gets()函数,那么他们会自动从从缓存区取走剩余的’\n’;scanf(“%s”,…可以正常运行,这是因为编译器对字符串的处理是:从第一个字符不为空格、换行、回车才开始的,因此会自动删除回车符,这样就保证了取到第一个有效的字符,scanf(“%c”,…或者gets()函数后面加上getchar()是为了排除’\n’的影响。

代码如下:

#include<stdio.h>
#include<string.h>
int main()
{
    int n,k,a,e,i,o,u,length,j;
    char ch[100];
    scanf("%d",&n);
    getchar();
    for(k=0;k<n;k++)
    {
        a=0;e=0;i=0;o=0;u=0;
        gets(ch);
        length=strlen(ch);
        for(j=0;j<length;j++)
            if(ch[j]=='a')a++;
            else if(ch[j]=='e')e++;
            else if(ch[j]=='i')i++;
            else if(ch[j]=='o')o++;
            else if(ch[j]=='u')u++;
        printf("a:%d\n",a);
        printf("e:%d\n",e);
        printf("i:%d\n",i);
        printf("o:%d\n",o);
        printf("u:%d\n",u);
        if(k<n-1)printf("\n");
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值