文章

【GESP】C++三级练习 luogu-B2109 统计数字字符个数

GESP三级练习,字符串练习(C++三级大纲中6号知识点,字符串),难度★✮☆☆☆。

luogu-B2109 统计数字字符个数

题目要求

题目描述

输入一行字符,统计出其中数字字符的个数。

输入格式

一行字符串,总长度不超过 $255$。

输出格式

输出为 $1$ 行,输出字符串里面数字字符的个数。

输入输出样例 #1

输入 #1

1
Today is 2021-03-27

输出 #1

1
8

题目分析

解题思路

  1. 观察题目特点
    • 输入一行字符串
    • 需要统计数字字符的个数
    • 字符串长度不超过255
    • 字符串可能包含任意字符
  2. 分析解题思路
    • 遍历字符串的每个字符
    • 判断字符是否为数字(0-9)
    • 累计数字字符的个数
    • 输出统计结果
  3. 实现方案
    • 使用string存储输入字符串
    • 使用getline读取一整行
    • 遍历字符串统计数字
    • 输出计数结果
  4. 代码实现要点
    • 使用string类型存储输入
    • 使用getline读取含空格的字符串
    • 判断字符是否为数字:ch >= ‘0’ && ch <= ‘9’
    • 使用计数器统计数字个数
  5. 复杂度分析
    • 时间复杂度:O(n),n为字符串长度
    • 空间复杂度:O(1)
  6. 注意事项
    • 输入字符串可能包含空格
    • 需要统计所有数字字符,包括重复的
    • 只统计0-9的数字字符
    • 字符串长度限制255


示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>

int main() {
    // 定义字符串变量存储输入
    std::string str;
    // 读取一整行输入到字符串中
    std::getline(std::cin, str);
    // 定义计数器,用于统计数字字符的个数
    int count = 0;
    // 遍历字符串中的每个字符
    for (int i = 0; i < str.size(); i++) {
        // 判断当前字符是否为数字(ASCII码在'0'到'9'之间)
        if (str[i] >= '0' && str[i] <= '9') {
            // 如果是数字字符,计数器加1
            count++;
        }
    }
    // 输出统计结果
    std::cout << count << std::endl;
    // 程序正常结束
    return 0;
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页

luogu-”系列题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

bcqm-”系列题目可在编程启蒙题库进行在线评测。

本文由作者按照 CC BY 4.0 进行授权