STIPC_编程挑战系列赛第一场(小郭的故事)_E.小郭刚学字符串

原题链接: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) aeiouAEIOU的字母后面加上 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 1a,b100,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;
}
附录:ASCII 表

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Grape_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值