您的位置:首页 > 理论基础 > 数据结构算法

数据结构 - 串的基本运算实现

2016-06-01 18:04 197 查看

实验题目:

一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:

abcdefghijklmnopqrstuvwxyz

ngzqtcobmuhelkpdawxfyivrsj

则字符串“abc”被加密为“ngz”。设计一个程序exp4-4.cpp将输入的文本串进行加密后输出,然后进行解密并输出。

源码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#define MaxSize 200
using namespace std;

struct SqString
{
char data[MaxSize];
int length;
};
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++)
cout<<s.data[i];
cout<<endl;
}
}
char x_0[]="abcdefghijklmnopqrstuvwxyz";
char y_0[]="ngzqtcobmuhelkpdawxfyivrsj";
void en_string(SqString,int);
void dec_string(SqString,int);
SqString str,x,y;
int main()
{
char input[MaxSize];
cout<<"原文串:";
gets(input);
StrAssign(str,input);
StrAssign(x,x_0);
StrAssign(y,y_0);
en_string(str,str.length);
return 0;
}
void en_string(SqString a,int len)
{
int i,j;
SqString encrypt;
encrypt.length=len;
for(i=0; i<len; i++)
for (j=0; j<26; j++)
if (a.data[i]==x.data[j])
{
encrypt.data[i]=y.data[j];
break;
}
cout<<"加密串:";
DispStr(encrypt);
dec_string(encrypt,len);
}
void dec_string(SqString a,int len)
{
int i,j;
SqString decipher;
decipher.length=len;
for(i=0; i<len; i++)
for (j=0; j<26; j++)
if (a.data[i]==y.data[j])
{
decipher.data[i]=x.data[j];
break;
}
cout<<"解密串:";
DispStr(decipher);
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构