因为后面有特殊情况,你没考虑周全,这是一个完整的代码
- //编程实现对键盘输入的英文名句子进行加密。用加密方法为:
- //当内容为英文字母时,用26字母中的其后三个字母代替该字母,若为其它字符时不变
- #include <stdio.h>
- int main()
- {
- char c;
- printf("please input a string:");
- //每次从缓冲区读取一个字符,然后赋给c,!='\n'则进入循环
- while((c=getchar())!='\n')
- {
- //获取字母使其+1,编程下一个字母
- if(c>='A'&&c<='Y'||c>='a'&&c<='y')
- {
- c=c+1;
- }
- else if(c=='Z'||c=='z')
- {
- c=c-25;
- }
- //输出改变字母后的字符串
- printf("%c",c);
- //针对字符串内的字母进行处理,并输出
- if(c>='B'&&c<='X'||c>='b'&&c<='x')
- {
- char a[2] = {c+1,c+2};
- for(int i = 0;i<2;i++)
- printf("%c",a[i]);
- }
-
- else
- {
- //针对字符串内的特殊的字母进行处理,并输出
- if(c=='Y'||c=='y')
-
- {
- char b[2] = {c+1,(c+2)-26};
- for(int i = 0;i < 2; i++)
- {
- printf("%c",b[i]);
- }
- }
- else
- if(c=='Z'||c=='z')
-
- {
- char b[2] = {(c+1)-26,(c+2)-26};
- for(int i = 0;i < 2; i++)
- {
- printf("%c",b[i]);
- }
- }
- else if(c=='A'||c=='a')
-
- {
- char b[2] = {c+1,c+2};
- for(int i = 0;i < 2; i++)
- {
- printf("%c",b[i]);
- }
- }
- }
- }
- printf("\n");
- return 0;
- }
复制代码 |