分析解決:此題比較特別,限制嚴格,根據題目要求,排除if else、for、while、do while、switch case、?:外,能使用的語句就只有 =、+=、-=、&、|、^、++、--這些了,想要實現大小寫轉換,只能從這些語句中進行選擇思考,由于字符集為ASCII編碼,且范圍明確為[a-zA-Z],我們知道,a-z對應ASCII值為97-122,A-Z對應ASCII為65-90,觀察這些數字,可以發現97-122都大于96 ,65-90都大于64且小于96,進一步從二進制上考慮,則發現所有小寫字母對應的二進制形式為011XXXXX,大寫字母對應的二進制形式為010XXXXX,一到這里,哈哈,答案就出來了,通過位運算&和|就可實現了。代碼描述如下
1
char toupper(char c)
2
{
3
return c & 0x5F;
4
}
5
6
char tolower(char c)
7
{
8
//c | 0x60也行,但不太好,因為0x60會改變結果的第7位值,根據題目意思,改變第6位值為1,而其它位保持不變就夠了。
9
return c | 0x20;
10
}

2

3

4

5

6

7

8

9

10
