以下不能将变量C中的大写字母转换成对应小写字母的语句是?

问题描述:

以下不能将变量C中的大写字母转换成对应小写字母的语句是?
已知大写字母A的ASCII码是65,小写字母a的ASCII码是97.以下不能将变量c中的大写字母转换成对应小写字母的语句是()
为什么c=('A'+C)%26-'a'是对的?c=(c-'A')%26+'a'不对?
还有,如果用islower是不是也可以?

c=(c-'A')%26+'a'是对的
c=('A'+C)%26-'a'不对
大小写字母在ASCII表中是位置都是连续的
所以 'x'-'a'=='X'-'A',就是说某个大写字母与'A'的差值等于其对应的小写字母与'a'的差值
上式将'a'移到右侧,等于 'x'='X'-'A'+'a';
即c=(c-'A')+'a'; //%26可不用
而c=('A'+C)%26-'a'显然是没有道理的.
islower只是判断是否是小写字母,并不能转变
可用函数tolower,功能是把字符转换成小写字母,非字母字符不做出处理 头文件:在VC6.0可以是ctype.h或者stdlib.h,常用ctype.h
使用方法:c=tolower(c).谢谢你啊,回答得很好的。我就是还想问一下,那按照'x'='X'-'A'+'a',是不是,答案也应该是c=('C'-'A')+'a'啊?又区别没?还有,%26是什么意思?为什么可以不用?c=(c-'A')+'a'的意思是:将(c-'A')+'a'的值赋给c,其中c是变量就是说当c等于任何一个大写字母时,执行上面这一句之后c值都变成了对应的小写字母。%26是对26取余数,得到的是除以26的余数。比如1%16==1;25%26==25;26%26==0;27%26==1;因为如果变量c是大写字母,c-'A'就肯定小于26,小于26的数对26取余等于它自己,所以是否%26都一样。除非c不是大写字母。