问题描述:

  一个文本串可用事先编制好的字符映射表进行加密。例如,设字符映射表为:

<code class="hljs  has-numbering"><strong>abcdefghijklmnopqrstuvwxyz
ngzqtcobmuhelkpdawxfyivrsj</strong></code>

   则字符串“lao he jiao shu ju jie gou”被加密为“enp bt umnp xby uy umt opy”。
   设计一个程序,实现加密、解密算法,将输入的文本进行加密后输出,然后进行解密并输出。

  本程序头文件使用了之前建设的顺序串算法库,详情可自行翻阅。

  主函数部分:

#include <stdio.h>
#include "sqString.h"
SqString A,B; //用于存储字符映射表
SqString EnCrypt(SqString p)
{
int i=0,j;
SqString q;
while (i<p.length)
{
for (j=0; p.data[i]!=A.data[j]; j++);
if (j>=p.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++);
if (j>=q.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;
}
int main()
{
SqString p,q;
StrAssign(A,"abcdefghijklmnopqrstuvwxyz");  //建立A串
StrAssign(B,"ngzqtcobmuhelkpdawxfyivrsj");  //建立B串
char str[MaxSize];
printf("\n");
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;
}

*第八周*数据结构实践项目四【字符串加密】相关推荐

  1. 第八周实践项目4 字符串加密

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目- 一个文本串可用事先编制好的字符映射表进行加密.例如,设字符映 ...

  2. 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度

    20135307 张嘉琪 第八周读书笔记 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有 ...

  3. [数据结构实践项目]变态的停车场管理系统

    [数据结构实践项目]变态的停车场管理系统 项目简介 设停车场是一个可以停放 n 辆汽车的南北方向的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在 ...

  4. 数据结构实践项目——图的基本运算及遍历操作

    本文是针对[数据结构基础系列(7):图]中第1-9课时的实践项目. 0701 图结构导学 0702 图的定义 0703 图的基本术语 0704 图的邻接矩阵存储结构及算法 0705 图的邻接表存储结构 ...

  5. 数据结构 实践项目——数据结构、算法、程序设计

    [项目1 - C/C++语言中函数参数传递的三种方式] C语言提供了两种函数参数传递的方式:传值和传地址.在C++中,又拓展了引用方式.通过本项目,确认自己已经掌握了这三种方式的原理,为后续学习做好准 ...

  6. 第八周——重载运算符——项目一(1)实现复数的+-*/

    问题及代码: /* *Copyright (c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:lily.cpp *作者:李莉 *完成日期:2015年4月2日 ...

  7. 第十六周上机实践—项目2—大数据集上排序算法性能的体验

    /* *Copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:林莉 *完成日期:2015年12月18日 *版本:v1 ...

  8. 第十二周上机实践项目 项目1-实现复数类中的运算符重载 (2)

    问题及代码: [项目-实现复数类中的运算符重载] (1)请用类的成员函数,定义复数类重载运算符+.-.*./,使之能用于复数的加减乘除 class Complex { public:Complex() ...

  9. 数据结构实践项目:校园路线导航图

    题目: 23.校园路线导游系统 1.问题描述 用无向网表示东莞理工学院的校园景点平面图,图中顶点表示主要景点(要求包 含学校的大部分景点信息,包括教学楼,体育馆,食堂,学生宿舍,图书馆等信息), 存放 ...

  10. 第八周拓展实践4 年龄几何

    问题及代码: /*Copyright(c)2016,烟台大学计算机学院 all rights reserved. 作者:曹欣宇 完成日期:2016年10月22日 版本号:v1.0题目描述有四个人的年龄 ...

最新文章

  1. python中算法(sklearn)的最优超参数寻优:skopt贝叶斯搜索
  2. ev3dev:设置自动登录wifi
  3. PyTorch 可视化特征
  4. python安装包-安装 Python 模块
  5. 【原】a.class与a .class的区别
  6. 领域驱动设计最佳实践
  7. C++按位异或运算符
  8. MySQL数据库学习资料(一)
  9. 《Flash MX从入门到精通》内容简介
  10. 安装VS之后,excel每次启动都会配置Visual Studio的解决办法
  11. 蛋白质二级结构预测-Chou-Fasman预测方法
  12. win7开启uasp协议_Windows To Go安装使用手记
  13. POI2011 同谋者 Conspiracy
  14. 中兴换头;任正非表态中美差距还有 50 年;Google 回应隐私丑闻 | CSDN 极客头条...
  15. 记录一次docker基础操作错误Error response from daemon: You cannot remove a running container
  16. 【软件质量保障笔记】软件质量保障
  17. CMOS图像传感器的曝光及读取时序
  18. 垃圾邮件分类(trec06c数据集)特征分词、特征向量化、模型训练
  19. 手势识别(一) - 项目概述与简单应用介绍
  20. 商品流通的中间环节该如何面对互联网+

热门文章

  1. 程序员为什么要使用Markdown
  2. UNIX环境高级编程之第5章:标准I/O库-习题
  3. Illustrator 教程,如何在 Illustrator 中裁剪、分割和修剪作品?
  4. iOS开发之模拟器(simulator)的复制粘贴
  5. Duplicate File Finder pro如何查找删除相似照片
  6. 矢量图形设计工具Artboard快捷键汇总
  7. Upgrade to Spring Boot 1.4
  8. Spring Data Jpa 查询返回自定义对象
  9. eclipse tomcat maven热部署
  10. Oracle数据的导入导出