当前位置: 代码迷 >> C语言 >> 字母变密码
  详细解决方案

字母变密码

热度:322   发布时间:2007-07-20 22:48:34.0
字母变密码

这个程序是书上的,它的作用是,输入一个字母,然后把它转化成其后的第四个字母!
其中W变成A,……z变成d,这样首尾相联,且区分大小写!

大家看看:我有一行想不明白:


#include"stdio.h"
main()
{ char c;
while(( c=getchar())!='\n')
{ if(( c>='a' && c<='z')||( c>='A' && c<='Z'))
{ c=c+4;
if( c>'z'||c>'Z'&&c<='Z'+4)c=c-26;
}
printf("%c",c);
}
getch();
return(0);
}

红色的那一行!IF ( c>'z'||c>'Z'&&c<='Z'+4)c=c-26它说这是字母在V或者V之后就转化成A--D
为什么呢?它明明写的是'Z'啊?
还有,为什么是减26呢?不是22呢?这一句到底怎么理解?

搜索更多相关的解决方案: 字母  密码  

----------------解决方案--------------------------------------------------------
建议你查一下ASCII码表

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

感觉没有交叉的部分???

码表:
http://jszx.qdu.edu.cn/CWeb/book/f1.htm


----------------解决方案--------------------------------------------------------
我看明白了,不好意思,我笨 [IMG]http://bbs.bc-cn.net/Skins/Default/emot/em03.gif[/IMG] !

abcdefghijklmnopqrstuvwxyz


if(( c>='a' && c<='z')||( c>='A' && c<='Z'))
{ c=c+4;
if( c>'z'||c>'Z'&&c<='Z'+4)c=c-26; //如果输入c是v(或V)之后的字母,c=c+4后,c就会超过z(或Z); -26,是因为有26个字母。
}
printf("%c",c);

顺便说一句:学编程,数学要好

----------------解决方案--------------------------------------------------------
说得不好,见谅!
----------------解决方案--------------------------------------------------------

废话!
我看的这本书后面就有A码表!你以为我没看过?
还有啊,你当我不知道英语字母有26个? 不用思考的吗?

你也不想一下!比如说输入的是:z,其A码多少?再减26是多少?查出来是多少?


----------------解决方案--------------------------------------------------------
我感觉你确实没有思考! 先+4 然后在-26
不就是你说的-22的意思吗 你是不是忘了他+4了
----------------解决方案--------------------------------------------------------
还有你对楼上帮你解答问题的朋友 说话的语气是不是有点不对哦
人家可是热心帮你哦! 我看他把题讲的满细的
----------------解决方案--------------------------------------------------------
如果刚输入的是v后面的,那么加4后便大于z了,当然要跟z比了,if( c>'z'||c>'Z'&&c<='Z'+4)c=c-26;
这个语句就是判断是否超过范围,因为有26个字母,看一下ASCII码是减26
----------------解决方案--------------------------------------------------------
你也不想一下!比如说输入的是:z,其A码多少?再减26是多少?查出来是多少?

帮你做一下这道题目:如果输入z,A码是122。加4后是126,大于z的A码,要减26,
等于100,对应字母d

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