题目:输入大写字母,输出小写字母;输入小写字母,输出大写字母;若输入其他字符,提示重新输入
解题思路:
A的ASCII值为65,二进制表示为:0100 0001
a的ASCII值为97,二进制表示为:0110 0001
可以发现,大小写字母的二进制的第五位(从0开始数)是不同的,其他的均是相同的,因此,可以通过这个位的相互转换来实现大小写字母的相互转换。
直接上代码:
#include <iostream>
using namespace std;
int main()
{
char ch;
cout << "请输入一个字符 : ";
cin >> ch;
if (ch < 'A' || (ch > 'Z' && ch < 'a') || ch > 'z')
{
cout << "输入错误,请输入一个字母 : ";
cin >> ch;
}
if (ch & 32) { //小写字母
ch = ch & 223; //223的二进制为:1101 1111
} else {
ch = ch | 32; //32的二进制为:0010 0000
}
cout << ch << endl;
system("pause");
return 0;
}