本帖最后由 张海龙重新起航 于 2014-4-5 20:53 编辑
- /*编程实现对键盘输入的英文名句子进行加密。用加密方法为:当内容为英文字母时,用26字母中的其后三个字母代替该字母,若为其它字符时不变。比如245a95n加密后是245bcd95opq。(C语言)
- 思路:
- 1,输入的英文字母为前23个字母时,用其后的3个字母来代替;
- 2,输入的英文字母为x时,用yzz来代替,X时用YZZ来代替;
- 3,输入的英文字母为y、z时,用zzz来代替,Y、Z时用ZZZ来代替;
- 4,输入其他字符时不变;
- */
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char str1[1024],str2[1024];
- int i=0,j=0;
- printf("请输入一串字符:");
- scanf("%s",str1);
- while(str1[i]!='\0')
- {
- if((str1[i]>='a'&&str1[i]<='z')||(str1[i]>='A'&&str1[i]<='Z')) { //输入的英文字母为前23个字母时,用其后的3个字母来代替;
- if((str1[i]>='a'&&str1[i]<='w')||(str1[i]>='A'&&str1[i]<='W'))
- {
- for (int k=1; k<4; k++)
- {
- str2[j]=str1[i]+k;
- j++;
- }
-
- }
- //输入的英文字母为x时,用yzz来代替,X时用YZZ来代替;
- else if((str1[i]=='x')|(str1[i]=='X'))
- {
- for (int k=1;k<3; k++)
- {
- str2[j]=str1[i]+k;
- j++;
- }
- str2[j]=str1[i]+2;
- j++;
- }
- //输入的英文字母为y时,用zzz来代替,Y时用ZZZ来代替;
- else if((str1[i]=='y')||(str1[i]=='Y'))
- {
- for (int k=1;k<4; k++)
- {
- str2[j]=str1[i]+1;
- j++;
- }
- }
- //输入的英文字母为z时,用zzz来代替,Z时用ZZZ来代替;
- else
- {
- for (int k=1;k<4; k++)
- {
- str2[j]=str1[i];
- j++;
- }
- }}
- //输入其他时不变;
- else
- {
- str2[j]=str1[i];
- j++;
- }
- i++;
- }
- printf("加密后的字符串为%s\n",str2);
- }
复制代码
为什么代码输出结果不对呢?求帮助,谢谢!(不考虑思路错误的前提下)
|