Sldwb,uirvmw,evib szkkb fmwvihgzmwrmt veviblmv.R orpv gl ziirev zg x.yx-xm.mvg!
是按下面规律加密
A~Z a~z
B~Y b~y
C~X c~x
` `
` `
` `
即第一字母变成第26个字母,第二个字母变第25个,依次类推,非字母不变。要编程吧密码翻译回原文。
[此贴子已经被作者于2005-4-29 4:22:34编辑过]
//有一行密码电文: //Sldwb,uirvmw,evib szkkb fmwvihgzmwrmt veviblmv.R orpv gl ziirev zg x.yx-xm.mvg!
//是按下面规律加密 //A~Z a~z //B~Y b~y //C~X c~x //` ` //` ` //` ` //即第一字母变成第个26字母,第二个字母变第25个,依次类推,非字母不变。 //要编程吧密码翻译回原文。
#include <stdio.h> #include <ctype.h> #include <string.h> #include <stdlib.h>
#define MAXSIZE 100
static char string[MAXSIZE];
void encryption(); //加密 void translation();//解密
void encryption() { int length; int i; int sign; printf("please enter the text of a telegram.\n"); gets(string); length=strlen(string); for(i=0;i<length;i++) { sign=isupper(string[i]); if(sign!=0) string[i]='Z'-(string[i]-'A'); sign=islower(string[i]); if(sign!=0) string[i]='z'-(string[i]-'a'); } printf("the text of a telegram after encryption is as followings :\n"); puts(string); }
void translating() { int j; int sign; int length; length=strlen(string); for(j=0;j<length;j++) { sign=isupper(string[j]); if(sign!=0) string[j]='Z'-(string[j]-'A'); sign=islower(string[j]); if(sign!=0) string[j]='z'-(string[j]-'a'); } puts("the text of a telegram afte translation is as followings :"); puts(string); }
void main() { encryption(); translating(); }
这不是前两天刚做过的作业题吗? #include <stdio.h> #include <ctype.h> #include <conio.h>
#define UPPER_BASE 65 #define LOWER_BASE 97 #define BUFFER 256
int main() { char alpha[2][27]={{"ABCDEFGHIJKLMNOPQRSTUVWXYZ"}, {"abcdefghijklmnopqrstuvwxyz"}}; char ptrInfo[BUFFER]; register int i=0; puts("<Input a series information for encoding>"); gets(ptrInfo); puts("<The encoded information>"); while(ptrInfo[i]!='\0') { if(!isalpha((int)(ptrInfo[i]))) putchar((int)(ptrInfo[i])); else { if(isupper((int)(ptrInfo[i]))) putchar(alpha[0][26-((int)(ptrInfo[i])-UPPER_BASE)-1]); else if(islower((int)(ptrInfo[i]))) putchar(alpha[1][26-((int)(ptrInfo[i])-LOWER_BASE)-1]); } i++; } getch(); return 1; }
是啊!!我们老师才教到数组,指针都还没有开始讲!!这是课后的练习题! 我自己想的如下: #include "Stdio.h" #include "Conio.h"
main() { int i=0; char a[200]; printf("input word:\n"); gets(a); while(a[i]!='\0') {if(a[i]>='A'&&a[i]<='Z') {a[i]=(2*'A'+25-a[i]); i++; } else if(a[i]>='a'&&a[i]<='z') {a[i]=('a'+26-(a[i]-'a')-1); i++; } else i++; } a[i]='\0'; for(i=0;a[i]!='\0';i++) printf("%c",a[i]); getch(); } 程序在WIN-TC下编译通过。 不知道上面的几位朋友可以成功通过程序翻译密文: “Sldwb,uirvmw,evib szkkb fmwvihgzmwrmt veviblmv.R orpv gl ziirev zg x.yx-xm.mvg!” 吗?
[此贴子已经被作者于2005-4-29 20:55:15编辑过]