头歌c语言学生系统第七关Encrypt & Decrypt

成绩加解密算法

题目要求

任务描述

现给定一个加/解密指令(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========

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值