2026年6月GESP真题及题解(C++三级):字符转换
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
现在小杨同学想把这串字符变一变,规则如下:
- 如果是大写字母,就变成对应的小写字母;
- 如果是小写字母,就变成对应的大写字母;
- 如果是数字,就变成
*。
请你按照这个规则,帮小杨把整串字符转换好。
输入格式
输入一共有 2 2 2 行。
第一行:一个整数,表示这串字符一共有多少个字符。
第二行:一串连续的字符,中间没有空格。
输出格式
输出转换后的字符。
注意:输出时字符之间不要加空格。
输入输出样例 #1
输入 #1
5
aBc98
输出 #1
AbC**
说明/提示
原来的字符是:
aBc98
从左到右一个一个看:
- a a a 是小写字母,所以变成 A A A;
- B B B 是大写字母,所以变成 b b b;
- c c c 是小写字母,所以变成 C C C;
- 9 9 9 是数字,所以变成
*; - 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;
}
功能分析
-
输入处理:
cin >> n >> s读取长度和字符串,因为字符串无空格,故可完整读入。 -
字符判断:利用 ASCII 码范围区分大写、小写、数字。
-
转换操作:
- 大写→小写:
s[i] - 'A' + 'a'(例如'B'66 - 65 + 97 = 98 →'b') - 小写→大写:
s[i] - 'a' + 'A'(例如'c'99 - 97 + 65 = 67 →'C') - 数字→
'*':直接赋值。
- 大写→小写:
-
输出:按顺序输出修改后的字符串。
各种学习资料,助力大家一站式学习和提升!!!
#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;
}

更多推荐
所有评论(0)