B4556 [GESP202606 三级] 字符转换 题解
·
题目描述
小杨同学有一串字符,里面可能有:
- 大写字母,比如 A、B、C
- 小写字母,比如 a、b、c
- 数字,比如 0、1、2
现在小杨同学想把这串字符变一变,规则如下:
- 如果是大写字母,就变成对应的小写字母;
- 如果是小写字母,就变成对应的大写字母;
- 如果是数字,就变成
*。
请你按照这个规则,帮小杨把整串字符转换好。
输入格式
输入一共有 2 行。
第一行:一个整数,表示这串字符一共有多少个字符。
第二行:一串连续的字符,中间没有空格。
输出格式
输出转换后的字符。
注意:输出时字符之间不要加空格。
输入输出样例
输入 #1复制
5 aBc98
输出 #1复制
AbC**
说明/提示
原来的字符是:
aBc98
从左到右一个一个看:
- a 是小写字母,所以变成 A;
- B 是大写字母,所以变成 b;
- c 是小写字母,所以变成 C;
- 9 是数字,所以变成
*; - 8 是数字,所以变成
*。
所以最后输出:
AbC**
数据范围
字符个数不会超过 1000 个。
每个字符只会是大写字母、小写字母或数字。
AC代码
#include<bits/stdc++.h>
using namespace std;
char a[1005],b[1005];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
if(a[i]>='a'&&a[i]<='z'&&b[i]==0){
a[i]-=32;
b[i]=1;
}
if(a[i]>='A'&&a[i]<='Z'&&b[i]==0){
a[i]+=32;
b[i]=1;
}
if(a[i]>='0'&&a[i]<='9'){
a[i]='*';
}
}
for(int i=1;i<=n;i++){
cout<<a[i];
}
return 0;
}
注释版
#include<bits/stdc++.h>
using namespace std;
char a[1005],b[1005];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
if(a[i]>='a'&&a[i]<='z'&&b[i]==0){//b[i]的作用:防止进行二次转换
a[i]-=32;//小写转大写
b[i]=1;//代表已经转换过了
}
if(a[i]>='A'&&a[i]<='Z'&&b[i]==0){
a[i]+=32;//大写转小写
b[i]=1;
}
if(a[i]>='0'&&a[i]<='9'){
a[i]='*';
}
}
for(int i=1;i<=n;i++){
cout<<a[i];
}
return 0;
}
更多推荐




所有评论(0)