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编辑过]
----------------解决方案--------------------------------------------------------
前提是不用库函数吗??
这样也许行吧?我是新手,写的也不规范,大概就这个意思吧!
int small, larger;
char c;
c=getchar();
if(c>=65&&c<=90)c=90-(90-c+25);
else if(c>=97&&c<=122)c=122-(122-c+25);
puchar(c);
----------------解决方案--------------------------------------------------------
main()
{
char a;
while(a!='\n')
{
a=getchar();
if(a<=90&&a>=65)a=65+(90-a);
if(a>=97&&a<=122)a=97+(122-a);
putchar(a);}
}
----------------解决方案--------------------------------------------------------
//有一行密码电文: //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编辑过]
----------------解决方案--------------------------------------------------------
你们是什么大学呀 比我们么强多了
----------------解决方案--------------------------------------------------------
也可以是这样:
#include "string.h"
main()
{
char a[100], *dw=a;
gets(dw);
while(*dw!='\0')
{
if(*dw>='a' && *dw<='z')
*dw='z'-(*dw-'a');
if(*dw>='A' && *dw<='Z')
*dw='Z'-(*dw-'A');
dw++;
}
dw=a;
printf("%s",dw);
printf("\n");
}
----------------解决方案--------------------------------------------------------
杭州电子科技大学啊
哈哈
见笑了!
----------------解决方案--------------------------------------------------------