数据结构第四章上机实验

来源:互联网 发布:数据交易是指什么 编辑:程序博客网 时间:2024/05/20 09:06

题目:

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

abcdefghijklmnopqrstuvwxyz

ngzqtcobmuhelkpdawxfyivrsj

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

代码:

#include <iostream>#include <cstring>#include <stdio.h>using namespace std;#define MaxSize 27char ch1[27]="abcdefghijklmnopqrstuvwxyz";char ch2[27]="ngzqtcobmuhelkpdawxfyivrsj";typedef struct{    char data[MaxSize];    int length;} SqString;void StrAssign(SqString &s,char cstr[]){    int i;    for(i=0; cstr[i]!='\0'; i++)        s.data[i]=cstr[i];    s.length=i;}bool jiami(SqString &s){    int k=0;    for(int i=0; i<s.length; i++)    {        if(ch1[i]==s.data[k])        {            s.data[k]=ch2[i];            k++;            i=-1;        }    }    if(k!=s.length)        return false;    return true;}bool jiemi(SqString &s){    int k=0;    for(int i=0; i<s.length; i++)    {        if(ch2[i]==s.data[k])        {            s.data[k]=ch1[i];            k++;            i=-1;        }    }    if(k!=s.length)        return false;    return true;}void DispStr(SqString s){    int i;    if(s.length>0)    {        for(i=0; i<s.length; i++)            cout<<s.data[i];        cout<<endl;    }}int main(){    SqString s;    char a[26];    int i=0;    cout<<"输入原文串:";    gets(a);    cout<<endl;    StrAssign(s,a);    cout<<"加密解密如下:"<<endl;    cout<<"  原文串:";    puts(a);    cout<<"  加密串:";    if(jiami(s))        DispStr(s);    else        cout<<"无法找到加密码!"<<endl;    cout<<"  解密串:";    if(jiemi(s))        DispStr(s);    else        cout<<"无法找到解密码!"<<endl;    return 0;}


0 0
原创粉丝点击