大学没好好学过数据结构,过了这么多年想再拾回来。前几天看“串”,其中一个简单的应用是文本串加密和解密。书上的两个小错误让我弄了好久……思维迟缓了啊……
源程序如下:
1.c
//Massachusetts 2013-09-17 17:07
#include
#define MaxSize 100
typedef struct
{
char data[MaxSize];
int length;
}SqString;
void StrAssign(SqString &str,char cstr[])
{
int i;
for(i=0;cstr[i]!='\0';i++)
str.data[i]=cstr[i];
str.length=i;
}
void DispStr(SqString s)
{
int i;
if(s.length>0)
{
for(i=0;i
printf("%c",s.data[i]);
printf("\n");
}
}
2.c
//Massachusetts 2013-09-17 17:07
#include
#include
#define MaxSize 100
typedef struct
{
char data[MaxSize];
int length;
}SqString;
extern void StrAssign(SqString &,char[]);
extern void DispStr(SqString);
SqString A,B;
SqString EnCrypt(SqString p)
{
int i=0,j;
SqString q;
while(i
{
for(j=0;p.data[i]!=A.data[j];j++);
if(j>=26)
q.data[i]=p.data[i];
else
q.data[i]=B.data[j];
i++;
}
DispStr(q);
q.length=p.length;
return q;
}
SqString UnEncrypt(SqString q)
{
int i=0,j;
SqString p;
while(i
{
for(j=0;q.data[i]!=B.data[j];j++);
if(j>=26)
p.data[i]=q.data[i];
else
p.data[i]=A.data[j];
i++;
}
p.length=q.length;
return p;
}
void main()
{
SqString p,q;
int ok = 1;
StrAssign(A,"abcdefghijklmnopqrstuvwxyz");
StrAssign(B,"ngzqtcobmuhelkpdawxfyivrsj");
char str[MaxSize];
printf("\n");
printf("输入原文串:");
gets(str);
StrAssign(p,str);
printf("加密解密如下:\n");
printf("原文串:");DispStr(p);
q=EnCrypt(p);
printf("加密串:");DispStr(q);
p=UnEncrypt(q);
printf("解密串:");DispStr(p);
printf("\n");
}
编译环境:Visual C++ 6.0 绿色简体中文版
关于传参的问题:void StrAssign(SqString &,char[])。这种形式里的前一个参数有的人说是C++里的,又有人说C里面有这种,有待进一步验证。
阅读(619) | 评论(0) | 转发(0) |