博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构实践——字符串加密
阅读量:6763 次
发布时间:2019-06-26

本文共 2826 字,大约阅读时间需要 9 分钟。

本文针对实践项目。

【项目-字符串加密】

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

abcdefghijklmnopqrstuvwxyzngzqtcobmuhelkpdawxfyivrsj

   则字符串“lao he jiao shu ju jie gou”被加密为“enp bt umnp xby uy umt opy”。

   设计一个程序,实现加密、解密算法,将输入的文本进行加密后输出,然后进行解密并输出。

[参考解答](头文件sqstring.h见)

#include 
#include "sqString.h"SqString A,B; //用于存储字符映射表SqString EnCrypt(SqString p){ int i=0,j; SqString q; while (i
=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
=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;}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;}

下面的解决有bug,如一楼徐群壮同学所言,以及所指。出错原因在于,for循环中的比较,没有考虑找不到时会越界(见注释)。

考虑不周害死猫。编程,认真;认真,编程!

#include 
#include "sqString.h"SqString A,B; //用于存储字符映射表SqString EnCrypt(SqString p){ int i=0,j; SqString q; while (i
=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) //在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;}

转载地址:http://vadeo.baihongyu.com/

你可能感兴趣的文章
aliyun.com
查看>>
[LintCode] Gray Code 格雷码
查看>>
保存带有emoji的文本报错解决方案
查看>>
Linux系统各发行版镜像下载(2)
查看>>
Web服务精讲–搭个 Web 服务器(二)
查看>>
git for windows+TortoiseGit客户端的使用
查看>>
zookeeper 4 letter 描述与实践
查看>>
SVN使用教程之-分支/标记 合并 subeclipse
查看>>
maven nexus
查看>>
《软件设计师》——法律法规与标准化知识
查看>>
Laplacian matrix 从拉普拉斯矩阵到谱聚类
查看>>
tensorflow入门指南
查看>>
Hibernate中对象的三个状态解析
查看>>
使用grunt搭建自动化的web前端开发环境
查看>>
c# ftp第三方库FluentFTP
查看>>
利用grep命令查找字符串分析log文件的一次实践
查看>>
vim 小技巧
查看>>
Unity3D之高级渲染-Shader Forge增强版
查看>>
Android逆向——smali复杂类解析
查看>>
不吹不擂,你想要的Python面试都在这里了【315+道题】
查看>>