想了很久很久,改了很多次,但没想到问题出在哪里
/*加密(Encryption) 已知的最古⽼的⼀种加密技术是凯撒加密(得名于 Julius caesar)。该⽅法把⼀条消息中的每个字⺟⽤字⺟表中固定距离之后的那个字⺟来替代。(如果越过了字⺟Z,会绕回到字⺟表的起始位置。例如,如果每个字⺟都⽤字⺟表中两个位置之后的字⺟代替,那么Y就被替换为A,Z就被替换为B。)
编写程序⽤凯撒加密⽅法对消息进⾏加密。⽤户输⼊待加密的消息和移位计数(字⺟移动的位置数⽬):
Enter message to be encrypted: Go ahead, make my day.
Enter shift amount (1-25): 3
Encrypted message: Jr dkhdg, pdnh pb gdb.
注意,当⽤户输⼊26与移位计数的差值时,程序可以对消息进⾏解密:
Enter message to be encrypted: Jr dkhdg, pdnh pb gdb.
Enter shift amount (1-25): 23
Encrypted message: Go ahead, make my day
不是字⺟的那些字符不要改动。此外,加密时不要改变字⺟的⼤⼩写。
输出范例:
Enter message to be encrypted: Hello, world!
Enter shift amount (1-25): 3
Encrypted message: Khoor, zruog!
Enter message to be encrypted: Khoor, zruog!
Enter shift amount (1-25): 23
Encrypted message: Hello, world!
*/
#include<stdio.h>
int main() {
printf("Enter message to be encrypted :");
char str[100];
int amount;
scanf("%[^\n]", &str);
printf("Enter shift amount(1 - 25) :");
scanf("%d",&amount);
int i,z,p;
int q,m,t;
if (amount<=12){
for (i = 0; i < 100; i++) {
z = str[i];
p = z + amount;
if(z<'A'||z>'z'){//转换其他字符1
printf("%c",(char)z);
}else if(z<'a'&&z>'Z'){//转换其他字符2
printf("%c",(char)z);
}else if(z>='A'&&z<='Z'&&p<='Z'){//转换大写字母
printf("%c",(char)p);
}else if(z>='a'&&z<='z'&&p<='z'){//转换小写字母
printf("%c",(char)p);
}else if (z>='A'&&z<='Z'&&p>'Z'){//转换过大的大写字母
int rea1;
rea1=p-90+64;
printf("%c",(char)rea1);
}else if(z>='a'&&z<='z'&&p>'z'){//转换过大的小写字母
int rea2;
rea2=p-122+96;
printf("%c",(char)rea2);
}//变量q,m,t
}} else if (amount>12){
int fact;
fact=26-amount;//向前移位fact
for (q = 0; q < 20; q++) {//从a[0]开始计算
m = str[q];
t = m - fact;
if(m<'A'||m>'z'){//转换其他字符1
printf("%c",(char)m);
}else if(m<'a'&&m>'Z'){//转换其他字符2
printf("%c",(char)m);
}else if(m>='A'&&m<='Z'&&t>='A'){
printf("%c",(char)t);//转换大写字母
}else if(m>='a'&&m<='z'&&t>='a'){//转换小写字母
printf("%c",(char)t);
}else if(m>='A'&&m<='Z'&&t<'A'){//转换过小的大写字母
int rea3;
rea3=t-65+91;
printf("%c",(char)rea3);
}else if(z>='a'&&z<='z'&&p<'a'){//转换过小的小写字母
int rea4;
rea4=t-97+123;
printf("%c",(char)rea4);
}
}}
return 0;
}
输出的结果是这样的