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

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(一级考纲思路分析)

  1. 输入与变量

    • 输入一个整数 a(范围 0 ≤ a ≤ 10⁹)。
    • 定义三个变量:
      • b:存储替换后的结果,初始为 0。
      • ta 的副本,用于逐位分解。
      • p:当前位的权重(个位为 1,十位为 10,百位为 100......),初始为 1。
  2. 逐位处理

    • 使用 while 循环,条件为 t > 0(当 a = 0 时循环不执行,直接输出 0)。
    • 在循环中:
      • 取出 t 的最低位:d = t % 10
      • 判断 d 是否为 4,若是则改为 8。
      • 将当前位的值乘以权重后累加到结果:b = b + d * p
      • 更新权重准备处理更高位:p = p * 10
      • 去掉已处理的最低位:t = t / 10
  3. 输出结果

    • 循环结束后,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 则保持不变。

我们可以采用字符串处理的方式:

  1. 将输入的整数以字符串形式读入,这样可以方便地逐位检查每个字符。
  2. 遍历字符串的每一位,如果当前字符是 '4',就将其修改为 '8'
  3. 最后输出修改后的字符串。

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;
}
相关推荐
·薯条大王8 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
hansang_IR13 小时前
【题解】LC:倍增 / 区间并查集(Range Parallel Unionfind)
c++·算法·并查集
东东最爱敲键盘13 小时前
day7.c++继承
c++
沫璃染墨14 小时前
《从零入门Linux系统篇(十五):系统工具篇·六——GDB调试器详解:从程序执行控制到高级调试技巧》
linux·运维·服务器·c语言·c++
吃着火锅x唱着歌14 小时前
Effective C++ 学习笔记 条款40 明智而审慎地使用多重继承
c++·笔记·学习
醉城夜风~14 小时前
(超详细)C++ STL list容器详解:从使用方法到双向链表底层原理全面解析
c++·windows
烟花落o15 小时前
C++ 从 C 到进阶 ②:引用、inline 、nullptr
c++·引用·inline·nullptr·c++入门
liulilittle15 小时前
MOE路由:路由(logits: top-k/8)
c++·人工智能·算法·机器学习·llm
旖旎夜光15 小时前
LeetCode 11:盛最多水的容器(双指针问题) —— 题解
数据结构·c++·算法·leetcode·双指针
我不会插花弄玉17 小时前
15.map,set下:AVL树,红黑树和map,set的封装【由浅入深-C++】
c++·stl