Mapping Cipher
程序员文章站
2022-07-15 13:12:52
...
题目: 输入字母表中所映射的密文, 再将你输入的原文按照对应的密文所转换后输出。(加密)
Mapping Cipher
You are given an alphabetic mapping table to create cipher text. The table is defined
by a string using 26 lower-case alphabets, such as
incpfvztsmbexowhlgkqjyrdau
In the string all characters are different. Using this table to generate cipher text, it
performs the following mapping scheme:
a -> i, A->I
b -> n, B->N
c -> c, C->C
d -> p, D->P
. . . . . . .
y -> a, Y->A
z -> u, Z->U
Any non-alphabetic character are kept unchanged.
Apply the scheme to plain text:
There are 2 dogs and 3 cats.
It rains dogs & cats!
Obtain the following cipher text:
Qtfgf igf 2 pwzk iop 3 ciqk.
Sq gisok pwzk & ciqk!
Input
There are several test cases. Each test case starts with a line of mapping string
described above. Following are plain text enclosed by two lines of string "***".
Your task is to output the cypher text encrypted using the given mapping string. There
is a blank line after each case. Finally, you will reach a line of string "###" which
signals the end of test. Each line in the test case is no more than 1000 characters. Each
line in test cases is no more than 1000 characters.
Output
The cipher text of each test case is prefixed with a cipher text number as shown in the
sample output. Place a blank line between cases.
Sample Input
incpfvztsmbexowhlgkqjyrdau
***
There are 2 dogs and 3 cats.
It rains dogs & cats!
***
xowhlgkqjyrdauincpfvztsmbe
***
There are 2 dogs and 3 cats.
It rains dogs & cats!
***
###
Sample Output
Cypher 1:
Qtfgf igf 2 pwzk iop 3 ciqk.
Sq gisok pwzk & ciqk!
Cypher 2:
Vqlpl xpl 2 hikf xuh 3 wxvf.
Jv pxjuf hikf & wxvf!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int flag=1, test=1;
while(1)
{
char arr[26]={0}; //存取字母映射的密文
char z[10]={0}; //存取密文后的***
char str[1001]={0}; //存取输入的原文
gets(arr);
if(arr[0]=='#' && arr[1]=='#' && arr[2]=='#') break;
gets(z);
if(flag) flag=0;
else printf("\n");
printf("Cypher %d:\n",test++);
while(gets(str))
{
if(str[0]=='*' && str[1]=='*' && str[2]=='*') break;
for(int i=0; i<strlen(str); i++)
{
if(str[i]>='a' && str[i]<='z') printf("%c",arr[str[i]-'a']);
else if(str[i]>='A' && str[i]<='Z') printf("%c",arr[str[i]-'A']+'A'-'a');
else printf("%c",str[i]);
}
printf("\n");
}
scanf("\n");
}
return 0;
}
上一篇: inheritance mapping
下一篇: Local Mapping
推荐阅读
-
详解 hibernate mapping配置
-
ElasticStack学习(七):ElasticSearch之Mapping初探
-
MySQL添加用户错误:ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value解决方法
-
Mybatis映射赋值失败;异常:TypeException: Could not set parameters for mapping
-
详解 hibernate mapping配置
-
【Flask】报错解决方法:AssertionError: View function mapping is overwriting an existing endpoint function: main.user
-
Hibernate 中的 idclass mapping 问题
-
ES 11 - 配置Elasticsearch的映射(mapping)
-
mybatis-generator自动生成dao、mapping、bean配置操作
-
HibernateTools实现pojo类 数据库schma mapping映射的相互转换