题目要求
任务描述
现给定一个加/解密指令(e/d) 一个密钥(0~9)和一系列的学生成绩(个数未知),请将它们拼接在一起并使用以下规则进行加密:
数字 1 被 key=5 加密之后变成6; 数字 5 被 key=5 加密之后变成0。 单个数字加密之后仍是单个数字。 解密规则与加密规则对称。
编程要求
根据提示,在右侧编辑器补充代码,完成成绩加解密。
测试说明
输入说明: 指令 密钥 成绩列表
输出说明: 处理后的成绩列表。
平台会对你编写的代码进行测试:
测试输入: e 1 85 84 83 78 89 45 90 88 12 41 99 100 预期输出: 96 95 94 89 90 56 01 99 23 52 00 211
代码实现
#include <stdio.h>
//=======begin=======
int main()
{
char order;
int key;
scanf("%c%d", &order, &key);
getchar(); // 读取并丢弃指令和密钥之间的空白字符
// 如果指令是解密,则密钥取反
if (order == 'd')
key = -key;
char ch;
// 循环读取字符,直到遇到文件结束符
while ((ch = getchar()) != EOF)
{
// 检查字符是否是数字字符
if (ch >= '0' && ch <= '9')
{
// 加密或解密数字字符
int digit = ch - '0';
ch = ((digit + key + 10) % 10) + '0';
}
// 打印字符
printf("%c", ch);
}
// 如果解密后的数字是两位数(如211),需要处理超出单个字符范围的输出
// 但由于题目说明中只提到了单个数字加密后仍是单个数字,这里不处理两位数的情况
return 0;
}
//========end========

特别注意:这段代码局限性非常大,加密和解密方式都是用已知的来做,仅仅用于通过此关卡,在后期课程设计的代码合并中需要另外根据数据长度另外写代码 ,课程设计中可能需要读者自己输入加密方式和解密方式,这里不做代码还需要读者自己写,并且因为各关卡不是同一段时间写的,前几关结构体定义不一样呀,课程设计合并代码时需要重新统一结构体和定义全局变量。
成绩加解密算法
8208

被折叠的 条评论
为什么被折叠?



