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;
}
相关推荐
愚者游世2 小时前
template学习大纲
开发语言·c++·程序人生·面试·visual studio
宵时待雨2 小时前
C++笔记归纳10:继承
开发语言·数据结构·c++·笔记·算法
小温冲冲2 小时前
QML vs Qt Widgets:深度对比与选型实战指南
开发语言·c++·qt
smchaopiao2 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
一叶落4382 小时前
LeetCode 21. 合并两个有序链表(C语言详解 | 链表经典题)
c语言·数据结构·c++·算法·leetcode·链表
挠头猴子3 小时前
c++中常用的运算符优先级
java·开发语言·c++
Yupureki3 小时前
《C++实战项目-高并发内存池》5.PageCache构造
c语言·开发语言·c++·单例模式·github
Qt学视觉3 小时前
AI3-PaddleOCR搭建环境1
c++·人工智能·opencv·ocr·paddlepaddle
0 0 03 小时前
洛谷P4427 [BJOI2018] 求和 【考点】:树上前缀和
开发语言·c++·算法·前缀和