标题:大小写字母问题
只看楼主
x乌鱼
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2006-7-1
 问题点数:0 回复次数:3 
大小写字母问题

#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 
2007-02-11 16:05
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
得分:0 
把字母看成线段就好理解了
这是一个加密字母程序
A变C
当超出A-Z这个线段就减去线段的总长度,得到加密后字符
2007-02-11 16:11
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
得分:0 

如上图
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编辑过]



gMy0Xq7T.jpg (4.44 KB)
2007-02-11 16:18
x乌鱼
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2006-7-1
得分:0 

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


2007-02-11 19:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-120640-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.877158 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved