題目:輸入大寫字母,輸出小寫字母;輸入小寫字母,輸出大寫字母;若輸入其他字符,提示重新輸入
解題思路:
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;
}