问题描述:
根据字母对应的文本,对输入的字符串进行加密解密操作
程序代码:
#include <iostream>
#include <stdio.h>
#include <string.h>
#define MaxSize 100
using namespace std;
typedef struct
{
char data[MaxSize];
int length;
} SqString;
SqString A,B;
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;
}
}
SqString encrypt(SqString p)
{
int i=0,j;
SqString q;
while(i<=p.length)
{
for(j=0; p.data[i]!=A.data[j]&&j<A.length; j++);
if(j>=A.length)
q.data[i]=p.data[i];
else
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<B.length; j++);
if(j>=B.length)
p.data[i]=q.data[i];
else
p.data[i]=A.data[j];
i++;
}
p.length=q.length;
return p;
}
int main()
{
SqString p,q;
char str[MaxSize];
StrAssign(A,"abcdefghijklmnopqrstuvwxyz");
StrAssign(B,"ngzqtcobmuhelkpdawxfyivrsj");
cout<<"输入要操作的字符串:"<<endl;
gets(str);
StrAssign(p,str);
cout<<"加密解密过程如下:"<<endl;
cout<<"用户输入的字符串为:"<<endl;
DispStr(p);
q=encrypt(p);
cout<<"加密后的字符串为:"<<endl;
DispStr(q);
p=Unencrypt(q);
cout<<"解密后的字符串为:"<<endl;
DispStr(p);
return 0;
}
运行结果:
心得体会:
1.加密解密操纵其实就是对输入的字符串在给定的文本里查找,