C++实验课指针笔记2
照旧,最后两道题需要记录一下
文章目录
- 【id:16】【20分】D. 动态矩阵(指针与堆内存分配)
- 【id:18】【20分】E. 密钥加密法(指针应用## 1.引入库
- 总结
【id:16】【20分】D. 动态矩阵(指针与堆内存分配)
题目描述
未知一个整数矩阵的大小,在程序运行时才会输入矩阵的行数m和列数n
要求使用指针,结合new方法,动态创建一个二维数组,并求出该矩阵的最小值和最大值,可以使用数组下标法。
不能先创建一个超大矩阵,然后只使用矩阵的一部分空间来进行数据访问、
创建的矩阵大小必须和输入的行数m和列数n一样
输入
第一行输入t表示t个测试实例
第二行输入两个数字m和n,表示第一个矩阵的行数和列数
第三行起,连续输入m行,每行n个数字,表示输入第一个矩阵的数值
依次输入t个实例
输出
每行输出一个实例的最小值和最大值
输入样例
2
2 3
33 22 11
66 88 55
3 4
19 38 45 14
22 65 87 31
91 35 52 74
输出样例
11 88
14 91
实现思路:创建二维指针(类似二维数组),第一个维度存每一行的首地址,第二个维度存每一列元素,然后找出最大最小值。重点在于记住动态矩阵的建立和操作运算方法。
#include<iostream>
using namespace std;int main()
{int t;cin >> t;while (t--){//每行每列int row;int col;cin >> row >> col;//创造一个二维指针int** p = new int* [row];//每一行初始col列for (int i = 0; i < row; i++){p[i] = new int[col];}//存入每一个数for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){cin >> p[i][j];}}//初始化最大值和最小值(令他等于第一个元素)int min = p[0][0];int max = p[0][0];//逐一比较,找出最大最小值for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){if (p[i][j] > max){max = p[i][j];}if (p[i][j] < min){min = p[i][j];}}}cout << min << " " << max << endl;}//system("pause");return 0;
}
【id:18】【20分】E. 密钥加密法(指针应用## 1.引入库
题目描述
有一种方式是使用密钥进行加密的方法,就是对明文的每个字符使用密钥上对应的密码进行加密,最终得到密文
例如明文是abcde,密钥是234,那么加密方法就是a对应密钥的2,也就是a偏移2位转化为c;明文b对应密钥的3,就是b偏移3位转化为e,同理c偏移4位转化为g。这时候密钥已经使用完,那么又重头开始使用。因此明文的d对应密钥的2,转化为f,明文的e对应密钥的3转化为h。所以明文abcde,密钥234,经过加密后得到密文是cegfh。
如果字母偏移的位数超过26个字母范围,则循环偏移,例如字母z偏移2位,就是转化为b,同理字母x偏移5位就是转化为c
要求:使用三个指针p、q、s分别指向明文、密钥和密文,然后使用指针p和q来访问每个位置的字符,进行加密得到密文存储在指针s指向的位置。
除了变量定义和输入数据,其他过程都不能使用数组下标法,必须使用三个指针来访问明文、密钥和密文。
提示:当指针q已经移动到密钥的末尾,但明文仍然没有结束,那么q就跳回密钥头
输入
第一行输入t表示有t个测试实例
第二行输入一个字符串,表示第一个实例的明文, 字符串的最大长度不超过20
第三行输入一个数字串,表示第一个实例的密钥,数字串的最大长度不超过20
依次输入t个实例
输出
每行输出加密后的密文
输入样例
2
abcde
234
XenOS
56
输出样例
cegfh
CksUX
实现思路:按照题目要求,开辟了三块内存空间,分别用来存放明文、密钥 (密钥也设置成字符数组存储,因为要逐个数字操作,到时候再强制类型转换成整型。记录一些方便一点的小技巧)和密文。然后分别计算出明文和密钥的字符串长度。按照题目要求计算每一个字符的密文(注:i % len2.起到了到尽头时自动换到字符串头的作用),将结果存入密文s中,输出密文。
#include<iostream>
using namespace std;int main()
{int t = 0;cin >> t;while (t--){//p是明文,q是密钥,s是密文char* p = new char[20];char* q = new char[20];char* s = new char[20];//分别计算出明文和密钥的字符长度int len1 = 0;int len2 = 0;cin >> p;cin >> q;for (int i = 0; p[i] != '\0'; i++){len1++;}for(int i=0;q[i]!='\0';i++){len2++;}for (int i = 0; i < len1; i++){//计算字符的ASCAL码值int num = int(*(p + i)) + (int(*q + i % len2) - '0'); //i % len2实现数字回到开头//再用字符形式存入s中if (num > 'Z' && num < 'a' || num>'z'){s[i]= char(num - 26);}else{s[i] = char(num);}}int j = 0;//输出密文while (j < len1){cout << *s;s++;j++;}cout << endl;}//system("pause");return 0;
}
总结
一句话,还是不够熟练啊,唉。
C++实验课指针笔记2相关推荐
- EDA实验课课程笔记(五)——NC-verilog的介绍与使用(一)
EDA实验课课程笔记(五)--NC-verilog的介绍与使用(一) NC简介 NC内部文件结构 NC-verilog的两种启动方式 图形界面方式演示视频 简介:简单介绍NC及其精要的总结,防止以后忘 ...
- EDA实验课课程笔记(六)——NC-verilog的介绍与使用(二)
EDA实验课课程笔记(六)--NC-verilog的介绍与使用(二) 图形界面的基本步骤回顾 命令行界面多步仿真 0,准备文件的建立 首先是新建cds.lib文件 其次是hdl.var文件的建立 1, ...
- EDA实验课课程笔记(四)——TCL脚本语言的学习2
EDA实验课课程笔记(四)--TCL脚本语言的学习2 控制流 if 循环命令 while for foreach break和continue命令 switch source 过程(procedure ...
- EDA实验课课程笔记(三)——TCL脚本语言的学习1
本文参考资料为<Tcl语言教程>,感谢作者的分享,这里仅仅作为简单常用语法的入门,若有需要后期对本文进行添加补充. EDA实验课课程笔记(三)--TCL脚本语言的学习 前言(TCL综述) ...
- EDA实验课课程笔记(一)——linux操作系统及linux下的基本指令
EDA实验课课程笔记(一)--linux操作系统及linux下的基本指令 实验目标 1,了解Linux系统的基本特点 2,掌握Linux的常用命令 3,掌握Linux的命令输入技巧 实验内容 1,基本 ...
- EDA实验课课程笔记(七)——DC(Design Compiler)的简介及其图像化使用(一)
本博文用于记录DC的基本知识及一些相关的最基本概念.然后配合演示视频,对DC有一个最初步的认识.参考学校老师的PPT讲解,以及实验指导书中的内容. Design Compiler的简介及其图像化使用 ...
- EDA实验课课程笔记(八 )——PT(Prime Time)简介(附录静态时序分析)
这里的部图片引用尤老师时序分析公开课,B站可以找到. PT(Prime Time)简介 PT简介 相关概念 时钟偏斜(Clock Skew) 时钟抖动(Clock Jitter) 输入输出延时 建立时 ...
- EDA实验课课程笔记(二)——Vim编辑器
移动光标的方法 指令 解释 h 或 向左箭头键(←) 光标向左移动一个字符 j 或 向下箭头键(↓) 光标向下移动一个字符 k 或 向上箭头键(↑) 光标向上移动一个字符 l 或 向右箭头键(→) 光 ...
- C++实验课任务(多态--容器--算法)
C++实验课任务(多态–容器–算法) 题目的基本实现 代码如下(具体细节处的分析见代码中/**/里的部分): #pragma once #include <string> #include ...
最新文章
- 【redis】2.redis可视化工具安装使用
- 记录Pandas处理数据的两个小技巧
- 【STM32】SPI简介
- 程序片上(内)执行-nandFlash-norFlash
- poj 2255 Tree Recovery 解题报告
- sourceforge.net cvs sample
- android本地socket正常,【报Bug】Android 本地打包 websocket 出错
- JAVA学习-JAVA数组的使用示例
- Swift 5新特性详解:ABI 稳定终于来了!
- 在Ubuntu18.04上安装Nvidia驱动
- php 取一条数据,php 读取txt 每次固定输出一条数据用什么方法实现?
- 转)Ubuntu安装teamviewer
- .Net软件设计新思维
- 离散数学蕴含等值式前件为假时命题为真的理解
- 6. php 基本语法
- Java输出字符串格式问题 .UnknownFormatConversionException
- Arduino蓝牙无线自动下载程序 Arduino无线下载
- 【AI芯片】中国AI芯片爆发,架构创新迫在眉睫
- 托福考试前你需要知道哪些事情
- 【随便说说】|| 老师用腾讯会议开直播,实在忍不住了,我......