关于大写字母转换成小写字母的程序
下面这是大小写字母转换程序:{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'
----------------解决方案--------------------------------------------------------