关于译密码问题........
题目如下,将字母A变成字母E,a编程e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。字母按上述规律转换,非字母字符不变。例如“China!”转换成“Glmre!”。
程序如下:
#include<stdio.h>
void main()
{
char c;
while((c=getchar()!='\n')
{
if(c>='a' && c<='z') || (c>='A' && c<='Z'))
{
c=c+4;
if(c>'Z' && c<='Z'+4 || C>'z')
c=c-26;
}
printf("%c",c);
}
printf("\n");
}
问题1
其中Z+4表示什么意思??为什么要Z+4? 书上说是因为当字母小写时都满足c>'Z'条件,从而也执行c=c-26;语句,这样就会出错。因此必须限制其范围为
c>'Z' && c<='Z'+4,即字母为W到Z。
不过我没有看明白......请朋友们指教....关键不明白的就是Z+4等于什么?
问题2
c=c-26 是什么意思?书上说如果加4以后字符值大于‘Z'或’z‘,则表示原来的字母在V(或v)之后。应该把c转换成A-D(或a-d)之一。
那么c的值取多少啊??
问题3
对于小写字母不用写成c>'z' && c<='z'+4, 而只写成c>'z'即可。为什么呢?
多谢了,小弟是新手..........嘿嘿