假期编程

此博客链接: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
多个测试实例之间由一个空行隔开。
请特别注意:最后一块输出后面没有空行:)
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;
    
}
原文地址:https://www.cnblogs.com/ping2yingshi/p/12292840.html