题目背景
在 GESP 一级考试中,字符串处理与基础逻辑判断是常见考点。这道题考察的是对整数中特定数字的识别与替换。
问题描述
Alice 不喜欢数字 4,偏爱数字 8。给定一个整数 A,要求将其中的所有 4 替换为 8,如果没有 4 则保持原样。
输入输出格式
输入: 一行,包含一个整数 A。
输出: 一行,包含替换后的整数 B。
样例演示
样例 1: 输入:
8459045
输出:
8859085
样例 2: 输入:
123
输出:
123
数据范围
- 0 ≤ A ≤ 10^9
解题思路
虽然题目给出的是整数,但在 C++ 中处理这种'按位替换'的需求时,直接读取为字符串往往比数学取模运算更直观且不易出错。
我们可以把输入的整数当作字符串读入,然后遍历每一个字符。如果发现当前字符是 '4',就把它改成 '8'。最后直接输出修改后的字符串即可。这种方法避免了处理大整数时的边界情况,代码也简洁易读。
代码实现
#include <iostream>
#include <string>
using namespace std;
int main() {
// 优化 I/O 操作速度
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
if (cin >> s) {
// 遍历字符串中的每个字符
for (char &c : s) {
// 如果字符是 '4',替换为 '8'
if (c == '4') {
c = '8';
}
}
cout << s << endl;
}
return 0;
}


