当前位置: 代码迷 >> C语言 >> 大小写字母问题
  详细解决方案

大小写字母问题

热度:198   发布时间:2007-02-11 16:05:31.0
大小写字母问题

#include <stdio.h>

main()
{
char c;
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z')
{
c-=30;
if(c>'Z'&&c<='Z'+2)
c-=26;

}
printf("%c",c);
}
}
我一直没明白 这段红色代码的意思, 书上说让我们自己体验下 去掉这段代码的不同,可我体验后发现没什么不同!请达人帮忙看下``谢谢

搜索更多相关的解决方案: 字母  大小写  main  getchar  

----------------解决方案--------------------------------------------------------
把字母看成线段就好理解了
这是一个加密字母程序
A变C
当超出A-Z这个线段就减去线段的总长度,得到加密后字符
----------------解决方案--------------------------------------------------------

如上图
A-Z是字母的范围,看成一个线段,图1
当加密字符是Z时,z+2超出了范围,图2,黄色的一段
这时怎么得到正确的加密字符呢
图3减去A-Z的长度(粗蓝线一段)就得到了红色的一小段
加密后正确字符是B
利用不知是初中还是小学学的线段知识就可以理解了

用画图程序画的图,哈哈,太差了
A-Z有26个字母,可以把图1的线段长度看成26
Z+2,26+2=28把图2的线段总长度看成28
图3,28-26=2 第2个字母是B

[此贴子已经被作者于2007-2-11 16:25:42编辑过]


----------------解决方案--------------------------------------------------------

十分感谢楼上的图型结合解答,经过您的解答我理解了,原来是超过的这一段无法表示出来! 实在感谢你的帮助!


----------------解决方案--------------------------------------------------------
  相关解决方案