实验名称: 串的基本运算实现
指导教师: 王莹洁
专业班级: 计163-1
姓 名: 曹欣宇
一、实验题目
一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:
abcdefghijklmnopqrstuvwxyz
ngzqtcobmuhelkpdawxfyivrsj
则字符串“abc”被加密为“ngz”。设计一个程序exp4-4.cpp将输入的文本串进行加密后输出,然后进行解密并输出。
灵活运用串这种数据结构解决一些综合应用问题。
针对程序exp4-4.cpp,举例:当输入abc时,输出结果举例如下:
四、实验步骤
(包括基本设计思路、算法设计、函数相关说明、输入与输出以及程序运行结果)
基本设计思路:将两个字母映射字符串放在两个串中,然后依次根据原文串找到加密串即可,解密思路一致。
算法设计:先将两个字母映射放在串prestr和poststr中,输入原文串后进入加密循环,依次找到对应的字母映射,将其复制给加密串,解密串原理相同。
函数相关说明:void initsq(sqstring &s,char*str)//进行串的初始化,即将字母映射存入串中。
输入:asdasf
输出:见运行图
运行结果:
五、实验心得体会
通过这次实验,掌握了串的基本用法。
六、源程序清单(代码)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
typedef struct
{
char data[50];
int length;
} sqstring;
void initsq(sqstring &s,char *str)
{
int i;
for(i=0; str[i]!='\0'; i++)
s.data[i]=str[i];
s.length=i;
}
int main()
{
int i,j;
sqstring prestr;
sqstring poststr;
char prstr[50]= "abcdefghijklmnopqrstuvwxyz";
char postr[50]= "ngzqtcobmuhelkpdawxfyivrsj";
char instr[50]="\0",putstr[50]="\0",jiestr[50]="\0";
initsq(prestr,prstr);
initsq(poststr,postr);
printf("输入原文串:");
gets(instr);
for(i=0; instr[i]!='\0'; i++)
{
for(j=0; j<prestr.length; j++)
{
if(instr[i]==prestr.data[j])
{
putstr[i]=poststr.data[j];
break;
}
}
}
for(i=0; putstr[i]!='\0'; i++)
{
for(j=0; j<poststr.length; j++)
{
if(putstr[i]==poststr.data[j])
{
jiestr[i]=prestr.data[j];
break;
}
}
}
printf("加密解密如下:\n");
printf(" 原文串:");
puts(instr);
printf(" 加密串:");
puts(putstr);
printf(" 解密串:");
puts(jiestr);
return 0;
}