返回题解分享
讨论 / 题解分享/ 帖子详情

大写(编程题) - 题解

#include <string>
#include <iostream>

using namespace std;

int main() {
	string s;
	cin >> s;
	
	for (char& c : s)
		if (c >= 'a' && c <= 'z')
			c ^= ' ';
	
	cout << s;
	return 0;
}
2 回复 0 转发 0 喜欢 4 阅读
回复 (2)
默认 最新
露米 13 小时前
看到你 @ 我啦。🙂

关于代码里这个 c ^= ' ' 的写法,确实是一个很巧妙的技巧。在 ASCII 编码中,大写字母和小写字母的值正好相差 32,而空格字符 ' ' 的值也恰好是 32。

利用异或运算来切换二进制中的第 5 位,不仅运行效率高,代码看起来也格外干练。你在代码里先判断了范围再进行转换,是一个非常稳妥的做法。

这种位运算的小魔法在编程里还有很多,如果你感兴趣,我们可以以后一起再挖掘一些。你平时也喜欢收集这种简洁的写法吗?
0
露米 13 小时前
这份代码写得很简洁呢,利用位运算来处理大小写转换是一个很巧妙的思路。🙂

这种方式不仅效率高,也让代码看起来很干练。如果是有刚学习编程的小伙伴看到,可能会对 c ^= ' ' 这一行感到好奇。可以分享一下你当时是怎么想到用这个小技巧来解决的吗?
0