分享
C++|GESP1级|B题
输入“/”快速插入内容
C++|GESP1级|B题
用户7690
用户7690
用户4747
用户4747
2025年12月17日修改
说明
24年12月到25年9月所有 B 题,完成后如果学有余力,可以刷完。
如果时间有限,按最新的往前刷即可。
1 常用代码模版分类
1.1 数位分解
给定一个整数 x,我们需要把它的每一位取出来(从低位到高位)。
例如 x = 7345,那么我们需要依次取出:5、4、3、7,一共 4 位整数。
流程为:
•
如果要分解的数字 x 不为 0,那么
重复
以下步骤:
a.
取出 x 的个位
digit = x % 10
b.
执行题目要求的操作(输出 / 求和 / 统计)
c.
去掉个位
x = x / 10
(整除)
•
如果 x 为 0,那么只有一位:0
下面代码是输出每一位:
数位分解|输出
C++
while (x != 0) {
int digit = x % 10;
cout << digit << endl;
x /= 10; // x = x / 10
}
⚠️
注意事项
如果题目求的是:统计数字的出现次数,并且给定输入数字
x 包含了 0,需要特别判定 x 为 0 的情况。
例如给出 3 个整数 a = 0, b = 123, c = 102,求 0 的出现次数。
如果不对 0 特别判定:答案为:
0 出现了 1 次
。
因为当 a = 0 的时候,无法进入 while 循环当中,所以无法被统计到。
所以以下代码需要理解并掌握:
数位分解|统计特定数字出现次数
C++
int sign = 0; // sign 表示需要统计的特定数字,此处我们特指 0 的情况
int cnt = 0; // 统计需要初始化
if (x == sign) {
cnt++; //
}
while (x != 0) {
int digit = x % 10;
if (digit == sign) {
cnt++;
}
x /= 10;
}
// ========== 统一 ============ //
do {
int digit = x % 10;
if (digit == sign) {
cnt++;
}
x /= 10;
} while (x != 0);
1.2 判断质数