从键盘输入一个4位整数(学号后四位),按如下规则加密后输出。加密规则:每位数字都加7,然后用和除以10的余数取代该数字;然后将第一位数与第三位数互换,第二位与第四位数互换。
时间: 2024-10-21 08:11:09 浏览: 92
要实现这个加密规则,你可以使用Matlab的`input`函数获取用户的输入,然后进行相应的加密操作。这里是一个简单的步骤:
```matlab
% 获取用户输入的4位整数
student_id = input('请输入一个4位的整数(学号后四位): ');
% 将字符串转换为整数
student_id_num = str2num(student_id);
% 加密规则:每位数字加7并取余10
encrypted_nums = mod(student_id_num + 7, 10);
% 交换位置:第一位与第三位互换,第二位与第四位互换
encrypted_nums([1 3]) = encrypted_nums([3 1]);
encrypted_nums([2 4]) = encrypted_nums([4 2]);
% 将加密后的数字重新组合成字符串显示
encrypted_string = num2str(encrypted_nums);
disp(['加密后的学号后四位为: ' encrypted_string]);
```
运行这段代码,用户输入一个4位数后,程序会按照指定规则加密并显示结果。
相关问题
用for循环编写从键盘输入一个4位整数(学号后四位),按如下规则加密后输出。加密规则:每位数字都加7,然后用和除以10的余数取代该数字;然后将第一位数与第三位数互换,第二位与第四位数互换。
当然,我们可以使用`for`循环配合模运算来实现这个加密规则。首先,我们需要获取用户的输入并存储为一个字符串,因为原始输入可能是四位数的文本形式。然后我们将每一位转换成数字,进行相应的加密处理,最后再转换回字符并重新组合。
以下是一个简单的Matlab代码示例:
```matlab
% 获取用户输入
input_str = input('请输入一个4位整数(例如:1234):', 's');
% 检查输入是否为4位数
if numel(input_str) ~= 4 || ~isnumeric(double(input_str))
error('输入必须是4位整数');
end
% 将字符串转换为数值
num = str2double(input_str);
% 加密过程
encrypted_num = mod(num + 7, 10); % 对每位数字加7并取余
[decrypted_first, decrypted_third] = deal(encrypted_num(1), encrypted_num(3)); % 保存第一位和第三位
encrypted_num(1:2) = encrypted_num(2:4); % 交换位置
encrypted_num(3:4) = decrypted_first; % 插入原第一位
encrypted_num(1) = decrypted_third; % 插入原第三位
% 把加密后的数字转换回字符串并输出
encrypted_str = num2str(encrypted_num);
disp(['加密后的结果是:' encrypted_str]);
```
写一个命令行交互式C语言程序。该程序需要实现下述菜单功能: 1. 数据存储。 你需要将一系列的学生期末考试信息进行存储(学生人数不会超过100)。每个学生的信息包括:姓名 (由first name 和last name 两部分组成,例如Jingyu LI,first_name = "Jingyu" last_name = "LI") ;学号(12位数字组成,开头4位为2022、2021、2020);C语言成绩(一个大于等于零的整数);重 修信息(学号2022………为否,其余为是);GPA等级(A+, A, B+, B, C+, C, D, F );班级排名(成绩相 同需并列)。其中,姓名,学号,成绩为输入数据,其余数据需要你计算。 同时,你需要添加一些维护数据库的功能 Add(name, id, score): 新增一个学生的信息; Delete(id): 根据学号删除某个学生的信息; Search(id):根据学号查找某个学生的信息。 2. 数据处理。 Sort_by_score(): 生成根据分数由高到低顺序排列学生信息的表格 3. 数据加密和解密 char* encrypt(int key): 加密学生成绩并返回 char* decrypt(int key, char *str): 解密学生成绩并返回 加密规则:把所有学生的成绩拼接成一个只包含数字的字符串,然后依据整数key对其进行加密。例 如:数字1被key=5加密之后变成6;数字5被key=5加密之后变成0。单个数字加密之后仍是单个数字。 解密规则与加密规则对称。 4. 数据分析 根据GPA对学生成绩进行考情分析:A+多少人,A多少人,以此类推。GPA等级参考SZTU评分等级。 5. 用户界面 实现一个菜单,以供用户决定要使用哪个功能。
好的,我可以提供一些思路和代码示例,帮助您完成这个命令行交互式C语言程序。以下是一些基本的代码框架:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 定义学生信息结构体
struct Student {
char first_name[20];
char last_name[20];
char id[13];
int score;
int retake;
char gpa[3];
int rank;
};
// 定义学生数组和计数器
struct Student students[100];
int count = 0;
// 函数声明
void add_student();
void delete_student();
void search_student();
void sort_by_score();
char* encrypt(int key);
char* decrypt(int key, char* str);
void analyze_gpa();
void print_menu();
int main() {
int choice;
print_menu();
scanf("%d", &choice);
while (choice != 0) {
switch (choice) {
case 1:
add_student();
break;
case 2:
delete_student();
break;
case 3:
search_student();
break;
case 4:
sort_by_score();
break;
case 5:
printf("Enter an encryption key: ");
int key;
scanf("%d", &key);
char* encrypted = encrypt(key);
printf("Encrypted scores: %s\n", encrypted);
free(encrypted); // 释放动态分配的内存
break;
case 6:
printf("Enter an encryption key: ");
scanf("%d", &key);
printf("Enter the encrypted scores: ");
char str[100];
scanf("%s", str);
char* decrypted = decrypt(key, str);
printf("Decrypted scores: %s\n", decrypted);
free(decrypted); // 释放动态分配的内存
break;
case 7:
analyze_gpa();
break;
default:
printf("Invalid choice.\n");
break;
}
print_menu();
scanf("%d", &choice);
}
return 0;
}
void add_student() {
// TODO: 实现添加学生信息的功能,包括输入姓名、学号、成绩等信息
}
void delete_student() {
// TODO: 实现删除学生信息的功能,根据学号查找并删除对应的学生
}
void search_student() {
// TODO: 实现查找学生信息的功能,根据学号查找并输出对应的学生
}
void sort_by_score() {
// TODO: 实现按照成绩排序的功能,将学生信息按照成绩从高到低输出
}
char* encrypt(int key) {
// TODO: 实现加密学生成绩的功能,返回动态分配的字符串指针
}
char* decrypt(int key, char* str) {
// TODO: 实现解密学生成绩的功能,返回动态分配的字符串指针
}
void analyze_gpa() {
// TODO: 实现按照GPA等级分析学生成绩的功能,统计每个等级的人数并输出
}
void print_menu() {
printf("Menu:\n");
printf("1. Add student\n");
printf("2. Delete student\n");
printf("3. Search student\n");
printf("4. Sort by score\n");
printf("5. Encrypt scores\n");
printf("6. Decrypt scores\n");
printf("7. Analyze GPA\n");
printf("0. Exit\n");
printf("Enter your choice: ");
}
```
需要注意的是,每个功能需要自己实现的部分都有 `TODO` 标记,需要根据具体需求进行编写。另外,其中涉及到动态分配内存的部分需要注意在使用完后释放内存,避免内存泄漏。
阅读全文
相关推荐
















