数据结构第四章上机实验

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21385857/article/details/51182620

题目:

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

abcdefghijklmnopqrstuvwxyz

ngzqtcobmuhelkpdawxfyivrsj

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

代码:

#include <iostream>
#include <cstring>
#include <stdio.h>
using namespace std;
#define MaxSize 27
char 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;
}


猜你喜欢

转载自blog.csdn.net/qq_21385857/article/details/51182620