📄 caeser.cpp
字号:
#define ERROR 0
#define OK 1
#define LISTINIT 100
#define OVERFLOW -2
typedef int status;
typedef char elemtype;
#include <stdio.h>
#include <malloc.h>
typedef struct {
char *ch;
int length;
}HString;
status InitString(HString &S){
S.ch=(elemtype *)malloc(LISTINIT*sizeof(elemtype));
if(!S.ch) return OVERFLOW;
S.length=0;
return OK;
}
status CreateString(HString &s ){
int i;i=0;
char c;
printf("请输入需要处理的字符(请只输入字符或空格,以#结束)\n");
scanf("%c",&c);
while (c!='#') {
s.ch[i]=c;
i++;
scanf("%c",&c);
}
s.length=i;
return OK;
}
status Encrypt(HString &s,int n){
int i;
for (i=0;i<s.length;i++) {
if(s.ch[i]!=' '){
s.ch[i]=s.ch[i]+n;
if (s.ch[i]>'z')
s.ch[i]=s.ch[i]-'z'+'a';
}
}
return OK;
}
status Decrypt(HString &s,int n){
int i;
for (i=0;i<s.length;i++) {
if(s.ch[i]!=' '){
s.ch[i]=s.ch[i]-n;
if (s.ch[i]<'a')
s.ch[i]=s.ch[i]+'z'-'a';
}
}
return OK;
}
status Show(HString s){
int i;
for (i=1;i<s.length;i++)
putchar(s.ch[i]);
printf("\n");
return OK;
}
void main(){
int shift,flag;
flag=1;
int choice;
HString str;
while (flag) {
if(InitString(str)){
printf("1 : 加密\n");
printf("2 : 解密\n");
printf("3 : 退出\n");
scanf("%d",&choice);
switch(choice) {
case 1 :
CreateString(str);
printf("请输入要移动的位数:\n");
scanf("%d",&shift);
Encrypt(str,shift);
Show(str);
break;
case 2 :
CreateString(str);
printf("请输入要移动的位数:\n");
scanf("%d",&shift);
Decrypt(str,shift);
Show(str);
break;
case 3 : flag=0;
}
}
}
getchar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -