第八周项目四--字符串加密

来源:互联网 发布:xshell mac 代替 编辑:程序博客网 时间:2024/05/23 12:54

问题及代码

/*  Copyright (c)2016,烟台大学计算机与控制工程学院  All rights reserved.  文件名称:项目4.cbp  作    者:陈迪 完成日期:2016年10月20日  版 本 号:v1.0      问题描述:一个文本串可用事先编制好的字符映射表进行加密。例如,设字符映射表为:                        abcdefghijklmnopqrstuvwxyz            ngzqtcobmuhelkpdawxfyivrsj       则字符串“lao he jiao shu ju jie gou”被加密为“enp bt umnp xby uy umt opy”。      设计一个程序,实现加密、解密算法,将输入的文本进行加密后输出,然后进行解密并输出。  输入描述:无  程序输出:测试数据  */    
头文件及功能函数详见顺序串算法库

#include "sqstring.h"        SqString A,B; //用于存储字符映射表        SqString EnCrypt(SqString p)    {        int i=0,j;        SqString q;        while (i<p.length)        {            for (j=0; p.data[i]!=A.data[j]; j++);            if (j>=p.length)            //在A串中未找到p.data[i]字母                q.data[i]=p.data[i];            else                        //在A串中找到p.data[i]字母                q.data[i]=B.data[j];            i++;        }        q.length=p.length;        return q;    }        SqString UnEncrypt(SqString q)    {        int i=0,j;        SqString p;        while (i<q.length)        {            for (j=0; q.data[i]!=B.data[j]; j++);            if (j>=q.length)            //在B串中未找到q.data[i]字母                p.data[i]=q.data[i];            else                    //在B串中找到q.data[i]字母                p.data[i]=A.data[j];            i++;        }        p.length=q.length;        return p;    }        int main()    {        SqString p,q;        StrAssign(A,"abcdefghijklmnopqrstuvwxyz");  //建立A串        StrAssign(B,"ngzqtcobmuhelkpdawxfyivrsj");  //建立B串        char str[MaxSize];        printf("\n");        printf("输入原文串:");        gets(str);                                  //获取用户输入的原文串        StrAssign(p,str);                           //建立p串        printf("加密解密如下:\n");        printf("  原文串:");        DispStr(p);        q=EnCrypt(p);                               //p串加密产生q串        printf("  加密串:");        DispStr(q);        p=UnEncrypt(q);                         //q串解密产生p串        printf("  解密串:");        DispStr(p);        printf("\n");        return 0;    }    


运行结果

知识点总结
对串有了新的认识。
学习心得
要对串有更深的理解。

0 0