C语言编程:大小写互换

从键盘输入一个字符串,将其中的大写字母变小写,小写变大写,其它字符不变。
悬赏分:0 - 离问题结束还有 10 天 7 小时
//----------------------------------------------------------------------
分析:
大写字母的ASCII码从41H开始,小写字母的ASCII码从61H开始,大小写字母ASCII码相差20H。
大写变小写加20H,小写变大写减20H。
用逻辑运算:
针对某个字母,“与”上1101 1111,可变换成大写;
针对某个字母,“或”上0010 0000,可变换成小写;
针对某个字母,“异或”上0010 0000,可进行大小写互换。

可以看出,大小写互换,只要一次性“异或0x20”即可,不必先区分大小写。
下列程序经过试验,符楼主要求。
#include
void main(void)
{
    char i = 0, temp[100];
    scanf("%s", temp);
    while(temp[i] != '\0') {
      if(((temp[i] >= 'A') && (temp[i] <= 'Z')) || ((temp[i] >= 'a') && (temp[i] <= 'z')))
        temp[i] ^= 0x20;
      i++;
    }
    printf("\n%s\n", temp);
    getch();
}

回答者: 做而论道 - 十四级   2010-11-19 21:03
//----------------------------------------------------------------------
原题网址:http://zhidao.baidu.com/question/199079437.html

你可能感兴趣的:(C语言)