提高项目28-字符统计

任务和代码:请分别编制程序,完成下面的处理:
(1)统计字母'A'出现的次数;
(2)统计字符串中(大/小写)字母个数;
(3)统计每一个元音字母个数
(4)统计每一个数字字符出现的次数;
    提示:可以定义一个数组int a[10],保存’0’-’9’在字符串中出现的次数(例a[0]表示字符’0’的个数)

(5)统计每一个字母出现的个数

/*
文件名:main.c
作者:小风景
完成日期:2016.7.7
问题描述:请分别编制程序,完成下面的处理:
(1)统计字母'A'出现的次数;
(2)统计字符串中(大/小写)字母个数;
(3)统计每一个元音字母个数
(4)统计每一个数字字符出现的次数;
    提示:可以定义一个数组int a[10],保存’0’-’9’在字符串中出现的次数(例a[0]表示字符’0’的个数)
(5)统计每一个字母出现的个数
程序输出:
*/

#include <stdio.h>

void count(char str[]);
void countletter(char str[]);
void countaoieu(char srt[]);
void countnumber(char str[]);
void countallletter(char str[]);

int main()
{
    char str[50];
    int i=0,n=0;
    printf("输入字符串:");
    gets(str);
    while(str[i]!='\0')
    {
        if(str[i]>='0'&&str[i]<='9') n++;
        i++;
    }
    printf("其中的数字个数是: %d\n", n);

    count(str);
    countletter(str);
    countaoieu(str);
    countnumber(str);
    countallletter(str);

    return 0;
}

void count(char str[])
{
    int i = 0;
    int n = 0;

    while(str[i] != '\0')
    {
        if(str[i] == 'A')
        {
            n++;
        }
        i++;
    }

    printf("字母'A'出现的次数:%d\n",n);
}

void countletter(char str[])
{
    int i = 0;
    int n = 0;

    while(str[i] != '\0')
    {
        if((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z'))
        {
            n++;
        }
        i++;
    }
    printf("字符串中(大/小写)字母个数:%d\n",n);
}

void countaoieu(char str[])
{
    char letter[6] = {'a','e','i','o','u'};
    int number[5] = {0};
    int i = 0;

    while(str[i] != '\0')
    {
        switch(str[i])
        {
        case 'a':
            number[0]++;
            break;
        case 'e':
            number[1]++;
            break;
        case 'i':
            number[2]++;
            break;
        case 'o':
            number[3]++;
        case 'u':
            number[4]++;
            break;
        default:
            break;
        }
        i++;
    }

    for(i = 0;letter[i] != '\0';i++)
    {
        printf("元音字母%c的个数为:%d\n",letter[i],number[i]);
    }

}

void countnumber(char str[])
{
    char number[10] = {0};
    int i = 0;

    while(str[i] != '\0')
    {
        number[str[i] - '0']+=1;
        i++;
    }

    for(i = 0; i < 10;i++)
    {
        printf("数字字符%d出现的次数:%d\n",i,number[i]);
    }
}

void countallletter(char str[])
{
    int number[26] = {0};
    int i = 0;

    while(str[i] != '\0')
    {
        if(str[i] > 'A' && str[i] < 'Z')
        {
            str[i] += 32;
        }
        if(str[i] > 'a' && str[i] < 'z')
        {
            number[str[i] - 'a']++;
        }
        i++;
    }

    for(i = 0;i < 26;i++)
    {
        printf("字母%c出现的次数是:%d\n",i+97,number[i]);
    }
}


程序运行结果:





总结:这个程序中有一个不足的地方实在统计大小写字符函数中,大小写字符应该分开统计,而不应该一起统计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值