2026年3月GESP真题及题解(C++一级):数字替换

题目描述
Alice 不喜欢 4,喜欢 8,她想把 4 全换成 8,若无 4 则不修改。
输入格式
输入一行,一个整数 A,表示替换前的数。
输出格式
输出一行,包含一个整数 B,表示替换后的数。
样例
样例 1:
输入:
8459045
输出:
8859085
样例 2:
输入:
123
输出:
123
数据范围
- 0 ≤ A ≤ 10 9 0 \leq A \leq 10^9 0≤A≤109
思路分析1(一级考纲思路分析)
-
输入与变量:
- 输入一个整数
a(范围 0 ≤ a ≤ 10⁹)。 - 定义三个变量:
b:存储替换后的结果,初始为 0。t:a的副本,用于逐位分解。p:当前位的权重(个位为 1,十位为 10,百位为 100......),初始为 1。
- 输入一个整数
-
逐位处理:
- 使用
while循环,条件为t > 0(当a = 0时循环不执行,直接输出 0)。 - 在循环中:
- 取出
t的最低位:d = t % 10。 - 判断
d是否为 4,若是则改为 8。 - 将当前位的值乘以权重后累加到结果:
b = b + d * p。 - 更新权重准备处理更高位:
p = p * 10。 - 去掉已处理的最低位:
t = t / 10。
- 取出
- 使用
-
输出结果:
- 循环结束后,
b中保存的就是替换后的数,直接输出。
- 循环结束后,
AC代码1(一级考纲思路代码)
cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int a; // 原数
cin >> a;
int b = 0; // 结果
int t = a; // 临时变量
int p = 1; // 当前位的权重
while (t > 0) {
int d = t % 10; // 取出最低位
if (d == 4) { // 如果是4,改为8
d = 8;
}
b = b + d * p; // 按权重累加
p = p * 10; // 权重升级
t = t / 10; // 去掉最低位
}
// 如果a=0,循环不执行,b保持0,输出0
cout << b << endl;
return 0;
}
思路分析2(使用字符串)
题目要求将整数中的数字 4 全部替换为 8,如果原数中没有 4 则保持不变。
我们可以采用字符串处理的方式:
- 将输入的整数以字符串形式读入,这样可以方便地逐位检查每个字符。
- 遍历字符串的每一位,如果当前字符是
'4',就将其修改为'8'。 - 最后输出修改后的字符串。
AC代码2(使用字符串)
cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
string s; // 用字符串存储输入的数
cin >> s; // 读入整数(以字符串形式)
// 遍历字符串的每一个字符
for (char &c : s) { // 使用引用,直接修改原字符
if (c == '4') { // 如果当前字符是 '4'
c = '8'; // 替换为 '8'
}
}
cout << s << endl; // 输出替换后的字符串
return 0;
}
各种学习资料,助力大家一站式学习和提升!!!
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"########## 一站式掌握信奥赛知识! ##########";
cout<<"############# 冲刺信奥赛拿奖! #############";
cout<<"###### 课程购买后永久学习,不受限制! ######";
return 0;
}
【秘籍汇总】(完整csp信奥赛C++学习资料):
1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):
https://edu.csdn.net/lecturer/7901 点击跳转

2、CSP信奥赛C++竞赛拿奖视频课:
https://edu.csdn.net/course/detail/40437 点击跳转

3、csp信奥赛高频考点知识详解及案例实践:
CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转
CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转
信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转
4、csp信奥赛冲刺一等奖有效刷题题解:
CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新): https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转
信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转
5、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转
· 文末祝福 ·
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"跟着王老师一起学习信奥赛C++";
cout<<" 成就更好的自己! ";
cout<<" csp信奥赛一等奖属于你! ";
return 0;
}
