10.消息加密

高老师最近想开发一款聊天软件,但他遇到了一个棘手的问题,他想将聊天消息加密后再发送。 加密方法如下:

创建双字符(假设全部为可见字符,不包含空格)对单字符映射的密码表,比如 “ac”->‘a’,“bc”->‘c’,“ff”->‘z’,“x+”->‘9’。并保证映射均为一一对应,不会出现 “ac”->‘a’,“bc”->‘a’ 或者 “ac”->‘a’,“ac”->‘c’这种情况。按照加密表将消息源码的每个字符加密为双字符,现需要你来实现此消息加密器。

输入

输入包含一组用例
用例第一行包含两个整数 m 和 n,其中 m 代表密码表的条数,n 代表需要加密的消息条数, m 和 n 均不大于 100。
第 2 行开始至第 m + 1 行,每行为 ** * 形式的密码表。
第 m + 2 行至第 m+n+1 行,每行为需要加密的聊天消息,聊天消息不长于 100 个字符。

输出

输出 n 行加密后的消息。

测试用例
in:
26 10
ab c
bc d
cd e
de f
ef g
fg h
gh i
hi j
ij k
jk l
kl m
lm n
mn o
no p
op q
pq r
qr s
rs t
st u
tu v
uv w
vw x
wx y
xy z
yz a
za b
imbit
ilovestudy
studymakesmehappy
goodgoodstudy
daydayup
nozuonodie
whyyoutry
youhavetwodownson
iloveolddrymother
onecarcomeonecargotwocarpengpengonecardied
out:
ghklzaghrs
ghjkmntucdqrrsstbcwx
qrrsstbcwxklyzijcdqrklcdfgyznonowx
efmnmnbcefmnmnbcqrrsstbcwx
bcyzwxbcyzwxstno
lmmnxystmnlmmnbcghcd
uvfgwxwxmnstrspqwx
wxmnstfgyztucdrsuvmnbcmnuvlmqrmnlm
ghjkmntucdmnjkbcbcpqwxklmnrsfgcdpq
mnlmcdabyzpqabmnklcdmnlmcdabyzpqefmnrsuvmnabyzpqnocdlmefnocdlmefmnlmcdabyzpqbcghcdbc

把密码表存在二维数组里面,输出的时候把文章和二维数组对照一下,如果文章中的字母匹配上密码表里面的暗文就输出暗文,否则就输出原来的字符。

#include<stdio.h>
#include<string.h>
int m,n;
char chat[105][105],code[6],vis[200][2]={'\0'};
int main()
{
	scanf("%d%d",&m,&n);
	getchar();
	for(int i=0;i<m;i++)
	{
		scanf("%c%c%c%c%c",&code[0],&code[1],&code[2],&code[3],&code[4]);
		int x=code[3];
		vis[x][0]=code[0];
		vis[x][1]=code[1];
	}
	for(int i=0;i<n;i++)
		scanf("%s",chat[i]);
	for(int i=0;i<n;i++)
	{
		for(int j=0;chat[i][j]!='\0';j++)
		{
			int y=chat[i][j];
			if(vis[y][0]==0)
				printf("%c",chat[i][j]);
			else
				printf("%c%c",vis[y][0],vis[y][1] );
		}
		printf("\n");
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/ArgentumHook/article/details/83050989
10.