北京航空航天大学某年的保研上机题
发布时间
阅读量:
阅读量
**反序加密(非文件)
问题描述
输入说明
输出要求
示例
解释
【评分标准】共有5个测试点。提交程序名为example2.c
#include <stdio.h>
#include <string.h>
int main ()
{
char ch, words[50], secret_key[50], str[100];
char alphabet[27] = {"abcdefghijklmnopqrstuvwxyz"};
int i, j, k, len;
i = 0;
/* ch = getchar();
while (ch != '\n')
{
words[i] = ch;
ch =getchar();
i ++;
}
words[i] = '\0';
19. i = 0;
ch = getchar();
while (ch != '\n')
{
str[i] = ch;
ch =getchar();
i ++;
}
str[i] = '\0';
*/
gets(words);
gets(str);
len = strlen(words);
for (i = 0; i < len; i ++)//去掉密钥单词中的重复字母
{
for (j = i + 1; j < len; j ++)
{
if (words[i] == words[j])
{
for (k = j ; k < len; k ++)
{
words[k] = words[k + 1];
len --;
}
}
}
}
//得到密钥串
for (i = len - 1, j = 0; i >= 0; i --, j ++)
{
secret_key[j] = words[i];
}
i = len;
j = 25;
while (i < 26 && j >= 0)
{
for (k = 0; k < len; k ++)//看字母在密钥串中已存在
{
if (secret_key[k] == alphabet[j])//若存在,则不保存,跳过该字母
{
j --;
break;
}
}
if (k == len)//若不存在,则保存该字母
{
secret_key[i] = alphabet[j];
i ++;
j --;
}
}
//加密部分
for (i = 0; str[i] != '\0'; i ++)
{
if (str[i] >= 'a' && str[i] <= 'z')
{
len = str[i] - 'a';
putchar(secret_key[len]);
}
else
putchar(str[i]);
}
putchar('\n');
return 0;
}
全部评论 (0)
还没有任何评论哟~
