⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 caeser.cpp

📁 本源码可以用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 + -