第八周实践项目4 字符串加密
/*
*Copyright (c) 2017,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:项目-
一个文本串可用事先编制好的字符映射表进行加密。例如,设字符映射表为:
abcdefghijklmnopqrstuvwxyz
ngzqtcobmuhelkpdawxfyivrsj
*作 者:邵雪源
*完成日期:2017年12月14日
*版 本 号:v1.0
*/
#include <stdio.h>
#define MaxSize 100 //最多的字符个数
typedef struct
{ char data[MaxSize]; //定义可容纳MaxSize个字符的空间int length; //标记当前实际串长
} SqString;
SqString A,B; //用于存储字符映射表
void StrAssign(SqString &s,char *cstr) //s为引用型参数
{ int i;for (i=0;cstr[i]!='\0';i++)s.data[i]=cstr[i];s.length=i;
}SqString EnCrypt(SqString p)
{int i=0,j;SqString q;while (i<p.length){for (j=0; p.data[i]!=A.data[j]&&j<A.length; j++);if (j>=A.length) //在A串中未找到p.data[i]字母q.data[i]=p.data[i];else //在A串中找到p.data[i]字母q.data[i]=B.data[j];i++;}q.length=p.length;return q;
}
SqString UnEncrypt(SqString q)
{int i=0,j;SqString p;while (i<q.length){for (j=0; q.data[i]!=B.data[j]&&j<B.length; j++);if (j>=B.length) //在B串中未找到q.data[i]字母p.data[i]=q.data[i];else //在B串中找到q.data[i]字母p.data[i]=A.data[j];i++;}p.length=q.length;return p;
}
void DispStr(SqString s)
{ int i;if (s.length>0){ for (i=0;i<s.length;i++)printf("%c",s.data[i]);printf("\n");}
}
int main()
{SqString p,q;StrAssign(A,"abcdefghijklmnopqrstuvwxyz"); //建立A串StrAssign(B,"ngzqtcobmuhelkpdawxfyivrsj"); //建立B串char str[MaxSize];printf("输入原文串:");gets(str); //获取用户输入的原文串StrAssign(p,str); //建立p串printf("加密解密如下:\n");printf(" 原文串:");DispStr(p);q=EnCrypt(p); //p串加密产生q串printf(" 加密串:");DispStr(q);p=UnEncrypt(q); //q串解密产生p串printf(" 解密串:");DispStr(p);printf("\n");return 0;
}
第八周实践项目4 字符串加密相关推荐
- 第八周实践项目 5 计数的模式匹配
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目- 采用顺序结构存储串,编写一个算法计算指定子串在一个字符串中出 ...
- 第八周实践项目9 算法库——广义表
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目9- *作 者:邵雪源 *完成日期:2017年12月14日 *版 ...
- 第八周实践项目7 对称矩阵的压缩存储及基本运算
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目7- *作 者:邵雪源 *完成日期:2017年12月14日 *版 ...
- 第八周实践项目6 猴子选大王(数组版)
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目6-一群猴子,编号是1,2,3 -m,这群猴子(m个)按照1-m ...
- 第八周实践项目3 顺序串一些算法操作
sqString.h #define MaxSize 100 //最多的字符个数 typedef struct { char data[MaxSize]; //定义可容纳MaxSize个字符的空间in ...
- 第八周实践项目10 稀疏矩阵的十字链表表示
#include <stdio.h> #include <malloc.h> #define M 3 //矩阵行 #define N 3 //矩阵列 #define Max ( ...
- 第八周实践项目8 稀疏矩阵的三元组表示的实现及应用
#include <stdio.h> #define M 6 #define N 7 #define MaxSize 100 //矩阵中非零元素最多个数 typedef int ElemT ...
- 2015级C++第14周实践项目 模板
[项目1-排序函数模板] 已知 void Sort(int a[],int size); void Sort(double a[],int size); 是一个函数模板的两个实例,其功能是将数组a中的 ...
- 第七周实践项目4 队列数组
创建10个队列,分别编号为0-9(处理为队列数组,编号即下标).输入若干个正整数,以数字0作为结束.设输入的值为x,其个位数字的大小为i,则将x插入到编号为i的队列中.最后输出所有的非空队列. 要求将 ...
最新文章
- EasyPHP-2.0b1+ Mantis-1.1.0安装及技巧
- 2013-09-11 [美国M198榴弹炮(后期型)--迷彩版]
- 建立单链表(头插法)
- 高中必背88个数学公式_高中常考的88个数学公式,全部整理给你,赶紧收藏一下!...
- linux服务器mysql数据库新建数据库并配置数据库用户
- cookie的相关知识
- SQL Server物化视图学习笔记
- mongodb分片概念和原理-实战分片集群
- onclick 源码_精读:手写React框架 解析Hooks源码
- 翻翻看 类型html5,3款容易上手的HTML5编辑工具推荐~
- 【英语学习】【Level 08】U05 Better option L3 Everything's a click away
- 最新消息!Cloudera 全球发行版正式集成 Apache Flink
- ps常用快捷键 常用的
- linux下解压iso文件
- 显卡和CPU的关系像“主仆”,GPU的工作原理是什么
- 42V转5V,42V转3.3V,42V转3V的降压芯片和LDO芯片的集合
- 硬件基础:台式电脑上的常用的几个接口!
- JavaScript 遍历数组 翻转数组与冒泡排序法
- (转)WorldQuant :如何缔造量化金融王国
- mDNS实现之Bonjour与Avahi(一)——win/linux/arm交叉编译
热门文章
- HUD 1043 Eight 八数码问题 A*算法 1667 The Rotation Game IDA*算法
- 在新的标签页中代开编辑文件
- ubuntu12.04升级后找不到共享目录
- 显示android缓存文件,android – 使用ACTION_VIEW在缓存目录中打开文件
- 51CTO手機軟件有病毒? 有網絡安全的高手嗎?
- ORA-01994 故障一例
- Java JDK 学习笔记:File类
- 服务器更改IP(公网)地址后,Program Neighborhood客户端无法连接服务器
- 域 和 Session 的问题
- python实现双向最大匹配法