C语言编程:大小写互换

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

可以看出,大小写互换,只要一次性“异或0x20”即可,不必先区分大小写。
下列程序经过试验,符楼主要求。
#include <stdio.h>
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值