[PTA]习题8-9 分类统计各类字符个数

Spring-_-Bear 的 CSDN 博客导航

本题要求实现一个函数,统计给定字符串中的大写字母、小写字母、空格、数字以及其它字符各有多少。

函数接口定义:

void StringCount( char *s );

其中 char *s 是用户传入的字符串。函数 StringCount 须在一行内按照

大写字母个数 小写字母个数 空格个数 数字个数 其它字符个数

的格式输出。

裁判测试程序样例:

#include <stdio.h>
#define MAXS 15

void StringCount( char *s );
void ReadString( char *s ); /* 由裁判实现,略去不表 */

int main()
{
    char s[MAXS];

    ReadString(s);
    StringCount(s);

    return 0;
}

/* Your function will be put here */

输入样例:

aZ&*?
093 Az

输出样例:

2 2 1 3 4

来源:

来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/12/exam/problems/343

提交:

在这里插入图片描述

题解:

#include<ctype.h>

/*
 * 分类统计各类字符个数
 */
void StringCount(char *s) {
    int capital = 0;
    int minuscule = 0;
    int blank = 0;
    int digit = 0;
    int other = 0;

    for (int i = 0; s[i] != '\0'; i++) {
        if (isupper(s[i])) {
            // 大写字母
            capital++;
        } else if (islower(s[i])) {
            // 小写字母
            minuscule++;
        } else if (isblank(s[i])) {
            // 空格
            blank++;
        } else if (isdigit(s[i])) {
            // 数字            
            digit++;
        } else {
            other++;
        }
    }

    printf("%d %d %d %d %d\n", capital, minuscule, blank, digit, other);
}
### 回答1: 实现思路: 1. 遍历字符串的每一个字符 2. 对每一个字符进行判断: - 如果是大写字母,则累加大写字母的计数器 - 如果是小写字母,则累加小写字母的计数器 - 如果是空格,则累加空格的计数器 - 如果是数字,则累加数字的计数器 - 如果是其他字符,则累加其它字符的计数器 3. 返回每一个计数器的结果 代码实现可以使用C++、Java等编程语言,请根据需要自行实现。 ### 回答2: 本题要求实现一个函数,可以通过遍历给定字符串并对每一个字符进行分类判断的方式来实现。具体来说,可以使用一个长度为5的整型数组来分别记录大写字母小写字母空格数字以及其它字符出现的次数。在遍历字符串时,对每一个字符进行分类判断并将相应的计数器加1即可。 下面是一个基于Java语言的函数实现: ```java public static void countChars(String str) { int[] count = new int[5]; for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); if (ch >= 'A' && ch <= 'Z') { count[0]++; } else if (ch >= 'a' && ch <= 'z') { count[1]++; } else if (ch == ' ') { count[2]++; } else if (ch >= '0' && ch <= '9') { count[3]++; } else { count[4]++; } } System.out.println("大写字母:" + count[0] + "个"); System.out.println("小写字母:" + count[1] + "个"); System.out.println("空格:" + count[2] + "个"); System.out.println("数字:" + count[3] + "个"); System.out.println("其它字符:" + count[4] + "个"); } ``` 在上面的代码,我们首先定义了一个长度为5的整型数组count来分别记录大写字母小写字母空格数字以及其它字符出现的次数。然后,我们遍历给定字符串str的每个字符,对每个字符进行分类判断。如果该字符大写字母,则将计数器count[0]加1;如果是小写字母,则将计数器count[1]加1;如果是空格,则将计数器count[2]加1;如果是数字,则将计数器count[3]加1;如果是其它字符,则将计数器count[4]加1。最后,我们使用System.out.println()函数将每一种字符出现的次数打印出来。 对于上面的代码,我们还可以进行一些优化,比如使用一个HashMap来动态记录每一种字符出现的次数,或者将计数器count改成一个长度为26的数组来记录每个字母(包括大小写)出现的次数。总之,统计给定字符串的不同类型字符的方法有多种,关键在于对每个字符进行分类判断并进行相应的计数。 ### 回答3: 实现一个统计字符串各种字符函数,可以使用ASCII码表字符编码的方式进行判断。假设给定字符串为str,使用一个长度为5的数组count来保存统计结果,对应数组的下标分别为0-4,分别代表大写字母小写字母空格数字、其他字符。下面是具体的实现方式: 1. 将字符串的每一个字符逐个取出: for (int i = 0; i < strlen(str); i++) { //将字符串的每个字符逐个取出并保存在变量c char c = str[i]; } 2. 使用字符编码来判断字符的类型: if (c >= 'A' && c <= 'Z') { //计算大写字母个数 count[0]++; } else if (c >= 'a' && c <= 'z') { //计算小写字母个数 count[1]++; } else if (c == ' ') { //计算空格个数 count[2]++; } else if (c >= '0' && c <= '9') { //计算数字个数 count[3]++; } else { //计算其他字符个数 count[4]++; } 3. 最后将统计结果输出即可: printf("大写字母个数为:%d\n", count[0]); printf("小写字母个数为:%d\n", count[1]); printf("空格个数为:%d\n", count[2]); printf("数字个数为:%d\n", count[3]); printf("其他字符个数为:%d\n", count[4]); 这样就可以实现一个统计字符串各种字符函数。当然,上述方法仅适用于英文字母和数字统计,如果需要处理其他语言的字符或者特殊的符号,需要更复杂的处理方式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春天熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值