【GESP】C++三级练习 luogu-B2109 统计数字字符个数
GESP三级练习,字符串练习(C++三级大纲中6号知识点,字符串),难度★✮☆☆☆。
luogu-B2109 统计数字字符个数
题目要求
题目描述
输入一行字符,统计出其中数字字符的个数。
输入格式
一行字符串,总长度不超过 $255$。
输出格式
输出为 $1$ 行,输出字符串里面数字字符的个数。
输入输出样例 #1
输入 #1
1
Today is 2021-03-27
输出 #1
1
8
题目分析
解题思路
- 观察题目特点
- 输入一行字符串
- 需要统计数字字符的个数
- 字符串长度不超过255
- 字符串可能包含任意字符
- 分析解题思路
- 遍历字符串的每个字符
- 判断字符是否为数字(0-9)
- 累计数字字符的个数
- 输出统计结果
- 实现方案
- 使用string存储输入字符串
- 使用getline读取一整行
- 遍历字符串统计数字
- 输出计数结果
- 代码实现要点
- 使用string类型存储输入
- 使用getline读取含空格的字符串
- 判断字符是否为数字:ch >= ‘0’ && ch <= ‘9’
- 使用计数器统计数字个数
- 复杂度分析
- 时间复杂度:O(n),n为字符串长度
- 空间复杂度:O(1)
- 注意事项
- 输入字符串可能包含空格
- 需要统计所有数字字符,包括重复的
- 只统计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 进行授权