原题链接:STIPC-001_E.小郭刚学字符串
E.小郭刚学字符串
题目背景
小郭刚刚学会字符串的基本操作,现在,他的好朋友小马为了验证他的知识水平,给他出了一道简单的字符串问题。
题目描述
给定一个字符串 a a a ,保证该字符串只出现英文字母。之后将字符串 a a a 中所有的奇数位大写,偶数位小写,将该字符串记作 b b b 。最后,将 b b b 中有出现元音 ( a 、 e 、 i 、 o 、 u 、 A 、 E 、 I 、 O 、 U ) (a、e、i、o、u、A、E、I、O、U) (a、e、i、o、u、A、E、I、O、U)的字母后面加上 j i b e n c a o z u o jibencaozuo jibencaozuo 后输出。
输入格式
输入一行字符串
输出格式
按题目要求输出一行字符串
输入输出样例
样例一:
输入:
a a a
输出:
A j i b e n c a o z u o Ajibencaozuo Ajibencaozuo
样例二:
输入:
a h U i s H D x a ahUisHDxa ahUisHDxa
输出:
A j i b e n c a o z u o h U j i b e n c a o z u o i j i b e n c a o z u o S h D x A j i b e n c a o z u o AjibencaozuohUjibencaozuoijibencaozuoShDxAjibencaozuo AjibencaozuohUjibencaozuoijibencaozuoShDxAjibencaozuo
样例二解释:
第一步:将 a h U i s H D x a ahUisHDxa ahUisHDxa 的奇数位改为大写,偶数位改成小写,得到字符串 a a a 为 A h U i S h D x A AhUiShDxA AhUiShDxA ;
第二步:将字符串 a a a 中出现元音的字母后面加上 j i b e n c a o z u o jibencaozuo jibencaozuo ,得到 A j i b e n c a o z u o h U j i b e n c a o z u o i j i b e n c a o z u o S h D x A j i b e n c a o z u o AjibencaozuohUjibencaozuoijibencaozuoShDxAjibencaozuo AjibencaozuohUjibencaozuoijibencaozuoShDxAjibencaozuo
数据范围:
1 ≤ a , b ≤ 100 , 000 , 000 1 \le a,b \le 100,000,000 1≤a,b≤100,000,000。
题目解析:
本题只需要将输入的字符串中所有的奇数位改成大写,偶数位改成小写,再将元音位(大小写)后加上 j i b e n c a o z u o jibencaozuo jibencaozuo 即可。
详细步骤:
第一步:将输入的字符串 a [ i ] a[i] a[i] 中所有的奇数位改成大写,偶数位改成小写。这里只需遍历一遍字符串的每个字符,然后判断,如果是奇数位且是小写,那么改成大写;如果是偶数位且是大写,那么改成小写。大小写的 A S C I I ASCII ASCII 码的差值为 32 32 32,因此大写改小写只需要将 a [ i ] a[i] a[i]加去 32 32 32同理,小写改大写只需将 a [ i ] a[i] a[i] 减去 a [ i ] a[i] a[i] (ASCII 码表详见附录)
第二步:再遍历一遍字符串 a [ i ] a[i] a[i] ,输出字符。当遇到字符为元音时,输出 j i b e n c a o z u o jibencaozuo jibencaozuo 即可。
AC代码(C++):
#include<iostream>
#include<string>
using namespace std;
int main() {
string a;
cin >> a;
for (int i = 0; i < a.length(); i++) { //遍历字符串的每个字符
if (a[i] >= 'A' && a[i] <= 'Z') { //判断是不是大写
if (i % 2 == 1) //如果大写是奇数位
a[i] += 32; //则改为小写,(大写的ASCII码加上32为小写)
}
else {
if (i % 2 == 0) //如果小写是偶数位
a[i] -= 32; //则改为大写,(小写的ASCII码减去32为大写)
}
}
for (int i = 0; i < a.length(); i++) {
cout << a[i];
if (a[i] == 'a' || a[i] == 'e' || a[i] == 'i' || a[i] == 'o' || a[i] == 'u' || a[i] == 'A' || a[i] == 'E' || a[i] == 'I' || a[i] == 'O' || a[i] == 'U') { //判断是不是元音
cout << "jibencaozuo"; //是的话输出jibencaozuo
}
}
return 0;
}