八(1) 5
来源:互联网 发布:2010年nba科比数据 编辑:程序博客网 时间:2024/06/04 00:48
问题及描述:
/* 烟台大学计算机学院 文件名称:aaa.cpp 作者:李金朴 完成日期:2017年10月25日 问题描述:一个文本串可用事先编制好的字符映射表进行加密 输入描述:无 输出描述:实现加密、解密算法,将输入的文本进行加密后输出,然后进行解密并输出。 */ [cpp] view plain copy<pre name="code" class="cpp">#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<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; } 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; }</pre><br> <span style="color:rgb(63,63,63); font-family:'microsoft yahei'; font-size:15px; line-height:24px">下面的解决有bug,出错原因在于,for循环中的比较,没有考虑找不到时会越界(见注释)</span><br> <pre></pre> <pre name="code" class="cpp"><span style="color: rgb(63, 63, 63); font-family: 'microsoft yahei'; font-size: 15px; line-height: 24px;"></span><pre name="code" class="cpp">#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++); //循环条件少加了&&j<A.length 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++);//循环条件少加了&&j<B.length 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; }
阅读全文
0 0
- 八(1) 5
- 八(1) 5
- 八皇后问题1
- 八皇后问题1
- 八项目1
- 八---内存管理1
- 课程设计1:八皇后
- 八(1) 2
- Response-1(八)
- 八
- 八
- 八
- 八皇后问题求解1
- 第七、八周作业(1)
- 八种基本排序(1)
- “神舟八号”飞船将瞄准11月1日5时58分发射
- 练习八:使用递归求和2/1+3/2+5/3+...前20项
- JAVA学习(八)__Spring2.5+JUnit4单元测试
- 毛竹千颗卖出200万,90后小伙回乡“种”酒惊诧众人
- Netlink通信机制
- Linux设置大内存页解决kswapd0进程过渡消耗CPU的问题
- centos7挂载问题
- 第十一周项目3 — 图遍历算法实现 (1)深度优先遍历
- 八(1) 5
- window下启动mysql服务
- 【第八周】项目3(2)-压缩存储的对称矩阵的运算
- centos7.2安装堡垒机Jumpserver V3
- 水晶报表的属性
- 回首Java——泛型的那些事
- 求 1/1
- Spring、Spring MVC、MyBatis整合文件配置详解
- Missing artifact net.sf.json-lib:json-lib:jar:2.4:compile