#include "stdio.h"
#include "string.h"
#include "conio.h"
#include<stdlib.h>
void dec(char *s,int m);
void enc(char *s,int m);
int menu()
{
int p;
printf("\t\t 文本加解密程序\n");
printf("\t\t\t0:退出\n");
printf("\t\t\t1:加密\n");
printf("\t\t\t2:解密\n");
scanf("%d",&p);
return p;
}
int main(){
int ch,m;
char s[100];
while(1)
{
system("cls");
ch=menu();
if(ch==0)
break;
printf("请输入偏移量:\n");
scanf("%d",&m);
fflush(stdin);
printf("请输入文字段落:\n");
fflush(stdin);
gets(s);
switch(ch)
{
case 1:enc(s,m);
break;
case 2:dec(s,m);
break;}
printf("处理后的文字段落:\n");
puts(s);
fflush(stdin);
getch();
}
}
void dec(char *s,int m)
{
int i,n;
n=m%26;
for(i=0;i<strlen(s);i++)
{
if(*(s+i)>=’a’&&*(s+i)<=’z’-n)
*(s+i)+=n;
else if (*(s+i)>=’Z’-n&&*(s+i)<=’Z’)
*(s+i)=*(s+i)-’Z’+’A’+(n-1);
}
}
void enc(char *s,int m)
{
int i,n;
n=m%26;
for(i=0;i<=strlen(s);i++)
{
if(*(s+i)>=’a’+n&&*(s+i)<=’z’)
*(s+i)-=n;
else if (*(s+i)>=’A’&&*(s+i)<=’A’+n)
*(s+i)=*(s+i)+’Z’-’A’-(n-1);
}
}
计算机汇编语言中的偏移量定义为:把存储单元的实际地址与其所在段的段地址之间的距离称为段内偏移,也称为“有效地址或偏移量”。 |