2026年6月GESP真题及题解(C++三级):字符转换

在这里插入图片描述

题目描述

小杨同学有一串字符,里面可能有:

  • 大写字母,比如 A A A B B B C C C
  • 小写字母,比如 a a a b b b c c c
  • 数字,比如 0 0 0 1 1 1 2 2 2

现在小杨同学想把这串字符变一变,规则如下:

  1. 如果是大写字母,就变成对应的小写字母;
  2. 如果是小写字母,就变成对应的大写字母;
  3. 如果是数字,就变成 *

请你按照这个规则,帮小杨把整串字符转换好。

输入格式

输入一共有 2 2 2 行。

第一行:一个整数,表示这串字符一共有多少个字符。

第二行:一串连续的字符,中间没有空格。

输出格式

输出转换后的字符。

注意:输出时字符之间不要加空格。

输入输出样例 #1
输入 #1
5
aBc98
输出 #1
AbC**
说明/提示

原来的字符是:

aBc98

从左到右一个一个看:

  1. a a a 是小写字母,所以变成 A A A
  2. B B B 是大写字母,所以变成 b b b
  3. c c c 是小写字母,所以变成 C C C
  4. 9 9 9 是数字,所以变成 *
  5. 8 8 8 是数字,所以变成 *

所以最后输出:

AbC**
数据范围

字符个数不会超过 1000 1000 1000 个。

每个字符只会是大写字母、小写字母或数字。

思路分析

题目要求按规则转换字符:大写→小写,小写→大写,数字→*
为避免直接使用 ASCII 码数值(如 +32),我们改用字符偏移计算:

  • 大写转小写:s[i] = s[i] - 'A' + 'a';
    原理:将字符相对 'A' 的偏移量,加上 'a' 的 ASCII 值。
  • 小写转大写:s[i] = s[i] - 'a' + 'A';
    原理:将字符相对 'a' 的偏移量,加上 'A' 的 ASCII 值。
  • 数字直接赋值为 '*'

其他处理逻辑不变:读入长度 n 和字符串,遍历前 n 个字符,判断类型并修改,最后输出整个字符串。


代码实现

#include <bits/stdc++.h>
using namespace std;
int n;
string s;

int main() {
    cin >> n >> s;// 读入长度和字符串
    for (int i = 0; i < n; i++) {  // 逐个处理
        if (s[i] >= 'A' && s[i] <= 'Z') // 大写字母
            s[i] = s[i] - 'A' + 'a'; 
        else if (s[i] >= 'a' && s[i] <= 'z')// 小写字母
            s[i] = s[i] - 'a' + 'A';           
        else if (s[i] >= '0' && s[i] <= '9')// 数字
            s[i] = '*';   
    }
    cout << s;     
    return 0;
}

功能分析

  1. 输入处理cin >> n >> s 读取长度和字符串,因为字符串无空格,故可完整读入。

  2. 字符判断:利用 ASCII 码范围区分大写、小写、数字。

  3. 转换操作

    • 大写→小写:s[i] - 'A' + 'a'(例如 'B' 66 - 65 + 97 = 98 → 'b'
    • 小写→大写:s[i] - 'a' + 'A'(例如 'c' 99 - 97 + 65 = 67 → 'C'
    • 数字→'*':直接赋值。
  4. 输出:按顺序输出修改后的字符串。


各种学习资料,助力大家一站式学习和提升!!!

#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 点击跳转
在这里插入图片描述
https://edu.csdn.net/course/detail/41081 点击跳转
在这里插入图片描述

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信奥赛冲刺一等奖有效刷题题解:

信奥赛C++普及组CSP-J一等奖通关刷题题单及题解:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新):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 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>
using namespace std;
int main(){
	cout<<"跟着王老师一起学习信奥赛C++";
	cout<<"    成就更好的自己!       ";
	cout<<"  csp信奥赛一等奖属于你!   ";
	return 0;
}

在这里插入图片描述

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐