求助!!我们老师难以解答~高手来帮忙!!~!
题目:请设计一个加密程序,首先输入一个整型数据作为密钥,然后,该程序可将键盘上输入的以@作为结束符的文本进行加密,加密的算法是以整型密钥为转换间隔,将字母转换为字母表中后面的字母,如果转换后超过’z’则自动跳转到开头。要求加密后大小写保持原格式,标点符号不变。以下是我设计的程序,但是结果都被执行两次——就是每个if语句都进入两次
比如输入5 a, 则得到ff
这是为什么呢?~!?~!?如有高手能解答,不胜感谢~!!!!!!
#include <stdio.h>
void main()
{
int k;
char x,r,s;
scanf("%d",&k);
while((x=getchar())!='@')
{
if (x>='a' && x<='z'){
if (x>='a' && x<='z'-k)
r=x+k;
else r = 'a'+ (x+k-'z');
putchar(r);
}
else if (x>='A' && x<='Z'){
if (x>='A' && x<='Z'-k)
r=x+k;
else r = 'A'+ (x+k-'Z');
putchar(r);
}
else r = x;
putchar(r);
}
}