当前位置: 代码迷 >> C语言 >> 关于大写字母转换成小写字母的程序
  详细解决方案

关于大写字母转换成小写字母的程序

热度:368   发布时间:2008-02-06 21:57:18.0
关于大写字母转换成小写字母的程序
下面这是大小写字母转换程序:
{char ch;
ch=getchar();
if(ch>='A'&&ch<='Z') putchar('a'+ch-'A')
}
if(ch>='A'&&ch<='Z')这语句可以理解,但是后面这个('a'+ch-'A')什么意思,为什么这样能转换大小写?能不能举个通俗易懂的例子?
搜索更多相关的解决方案: 字母  小写  

----------------解决方案--------------------------------------------------------
这个是将大写转换为小写
是通过阿斯科码进行的转换
----------------解决方案--------------------------------------------------------
或许写成这样会更容易理解些ch-'A'+'a'
把‘A’后第几个变成‘a’后第几个
----------------解决方案--------------------------------------------------------
大写字母和小写字母的ASCII码差32,即 大写字母+32=小写字母,而‘a’-‘A’=32
----------------解决方案--------------------------------------------------------
同意3#的!!!!!!
----------------解决方案--------------------------------------------------------
为何不直接写成   putchar(ch+32)  ?
我是菜鸟,问题太白不要喷我- -
----------------解决方案--------------------------------------------------------
也可以这样写,但是没有上面的方便,不需要记住ASCII的值
----------------解决方案--------------------------------------------------------
转了个小弯,
输入大写B=66 A=65 a=97
结果:(97+66-65)=98=b
----------------解决方案--------------------------------------------------------
明白了,谢谢大家哈!
----------------解决方案--------------------------------------------------------
int fun(int ch)
{
    if(ch >= 'A' && ch <= 'Z')
        ch = ch - 'A' + 'a';
    return ch;
}

/* 如果 ch 为 'A' 则,
        ch - 'A' == 0
        0 + 'a' == a  (即 ch - 'A' + 'a')

因为字母在ASCII表中是连续的,所以:
    ch 为 'B'时,
    ch - 'A' + 'a' == 'b'  即 ('A' + 1) - 'A' + 'a' == 1 + 'a'
----------------解决方案--------------------------------------------------------