/*
*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 字符串加密相关推荐

  1. 第八周实践项目 5 计数的模式匹配

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目- 采用顺序结构存储串,编写一个算法计算指定子串在一个字符串中出 ...

  2. 第八周实践项目9 算法库——广义表

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目9- *作 者:邵雪源 *完成日期:2017年12月14日 *版 ...

  3. 第八周实践项目7 对称矩阵的压缩存储及基本运算

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目7- *作 者:邵雪源 *完成日期:2017年12月14日 *版 ...

  4. 第八周实践项目6 猴子选大王(数组版)

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目6-一群猴子,编号是1,2,3 -m,这群猴子(m个)按照1-m ...

  5. 第八周实践项目3 顺序串一些算法操作

    sqString.h #define MaxSize 100 //最多的字符个数 typedef struct { char data[MaxSize]; //定义可容纳MaxSize个字符的空间in ...

  6. 第八周实践项目10 稀疏矩阵的十字链表表示

    #include <stdio.h> #include <malloc.h> #define M 3 //矩阵行 #define N 3 //矩阵列 #define Max ( ...

  7. 第八周实践项目8 稀疏矩阵的三元组表示的实现及应用

    #include <stdio.h> #define M 6 #define N 7 #define MaxSize 100 //矩阵中非零元素最多个数 typedef int ElemT ...

  8. 2015级C++第14周实践项目 模板

    [项目1-排序函数模板] 已知 void Sort(int a[],int size); void Sort(double a[],int size); 是一个函数模板的两个实例,其功能是将数组a中的 ...

  9. 第七周实践项目4 队列数组

    创建10个队列,分别编号为0-9(处理为队列数组,编号即下标).输入若干个正整数,以数字0作为结束.设输入的值为x,其个位数字的大小为i,则将x插入到编号为i的队列中.最后输出所有的非空队列. 要求将 ...

最新文章

  1. EasyPHP-2.0b1+ Mantis-1.1.0安装及技巧
  2. 2013-09-11 [美国M198榴弹炮(后期型)--迷彩版]
  3. 建立单链表(头插法)
  4. 高中必背88个数学公式_高中常考的88个数学公式,全部整理给你,赶紧收藏一下!...
  5. linux服务器mysql数据库新建数据库并配置数据库用户
  6. cookie的相关知识
  7. SQL Server物化视图学习笔记
  8. mongodb分片概念和原理-实战分片集群
  9. onclick 源码_精读:手写React框架 解析Hooks源码
  10. 翻翻看 类型html5,3款容易上手的HTML5编辑工具推荐~
  11. 【英语学习】【Level 08】U05 Better option L3 Everything's a click away
  12. 最新消息!Cloudera 全球发行版正式集成 Apache Flink
  13. ps常用快捷键 常用的
  14. linux下解压iso文件
  15. 显卡和CPU的关系像“主仆”,GPU的工作原理是什么
  16. 42V转5V,42V转3.3V,42V转3V的降压芯片和LDO芯片的集合
  17. 硬件基础:台式电脑上的常用的几个接口!
  18. JavaScript 遍历数组 翻转数组与冒泡排序法
  19. (转)WorldQuant :如何缔造量化金融王国
  20. mDNS实现之Bonjour与Avahi(一)——win/linux/arm交叉编译

热门文章

  1. HUD 1043 Eight 八数码问题 A*算法 1667 The Rotation Game IDA*算法
  2. 在新的标签页中代开编辑文件
  3. ubuntu12.04升级后找不到共享目录
  4. 显示android缓存文件,android – 使用ACTION_VIEW在缓存目录中打开文件
  5. 51CTO手機軟件有病毒? 有網絡安全的高手嗎?
  6. ORA-01994 故障一例
  7. Java JDK 学习笔记:File类
  8. 服务器更改IP(公网)地址后,Program Neighborhood客户端无法连接服务器
  9. 域 和 Session 的问题
  10. python实现双向最大匹配法