数据结构上机4.4字符串映射加密解密
2016-04-12 15:14
471 查看
代码:
#include <iostream> #include<malloc.h> #include<string.h> #include<cstdio> using namespace std; #define MaxSize 100 typedef struct { char data[MaxSize]; int length; } SqString; SqString A,B; void StrAssign(SqString &s,char cstr[]) { int i; for(i=0; cstr[i]!='\0'; i++) s.data[i]=cstr[i]; s.length=i; } void DispStr(SqString s) { int i; if(s.length>0) { for(i=0; i<s.length; i++) printf("%c",s.data[i]); printf("\n"); } } SqString EnCode(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中找到 q.data[i]=p.data[i]; else ///在A中找到 q.data[i]=B.data[j]; i++; } q.length=p.length; return q; } SqString UnCode(SqString p) { int i=0,j; SqString q; while(i<p.length) { for(j=0; p.data[i]!=B.data[j]&&j<B.length; j++);///你之前的一直循环条件少加了&&j<A.length,导致出错 if(j>=B.length)///不在A中找到 q.data[i]=p.data[i]; else ///在A中找到 q.data[i]=A.data[j]; i++; } q.length=p.length; return q; } int main() { SqString p,q; char str[MaxSize]; StrAssign(A,"abcdefghijklmnopqrstuvwxyz"); StrAssign(B,"ngzqtcobmuhelkpdawxfyivrsj"); printf("请输入原来字符串:\n"); gets(str); StrAssign(p,str); printf("原串:\n");///不在A中找到 DispStr(p); q=EnCode(p); printf("加密后:\n"); DispStr(q); p=UnCode(q); printf("解密后:\n"); DispStr(p); return 0; }
你的
相关文章推荐
- HDU 3294 Manacher模版题
- [数据结构]Linked_List
- HDU 4513 Manacher小小变形
- [数据结构-查询区间最小值小结(RMQ问题(Range Minimum Query))]
- [数据结构-树状数组小结]
- [数据结构-划分树小结]
- [数据结构-后缀数组小结]
- [数据结构-hash]CF 7D Palindrome Degree
- POJ 3974 Manacher模版题
- 排序-归并排序
- 链表的创建以及链表节点的增加和删除
- HashMap实现原理分析
- 算法基础
- 大数据就是这么任性第一季数据结构和算法(一线经验、权威资料、知识新鲜、实践性强、全程源码)
- 大数据就是这么任性第一季数据结构和算法(一线经验、权威资料、知识新鲜、实践性强、全程源码)
- 单链表实现集合求并集
- C 数据结构与算法系列 插入排序
- 数据结构-队列
- 数据结构-链表
- 队