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

实验题目:

一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:
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);
}

运行结果:

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值