照旧,最后两道题需要记录一下

文章目录

  • 【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相关推荐

  1. EDA实验课课程笔记(五)——NC-verilog的介绍与使用(一)

    EDA实验课课程笔记(五)--NC-verilog的介绍与使用(一) NC简介 NC内部文件结构 NC-verilog的两种启动方式 图形界面方式演示视频 简介:简单介绍NC及其精要的总结,防止以后忘 ...

  2. EDA实验课课程笔记(六)——NC-verilog的介绍与使用(二)

    EDA实验课课程笔记(六)--NC-verilog的介绍与使用(二) 图形界面的基本步骤回顾 命令行界面多步仿真 0,准备文件的建立 首先是新建cds.lib文件 其次是hdl.var文件的建立 1, ...

  3. EDA实验课课程笔记(四)——TCL脚本语言的学习2

    EDA实验课课程笔记(四)--TCL脚本语言的学习2 控制流 if 循环命令 while for foreach break和continue命令 switch source 过程(procedure ...

  4. EDA实验课课程笔记(三)——TCL脚本语言的学习1

    本文参考资料为<Tcl语言教程>,感谢作者的分享,这里仅仅作为简单常用语法的入门,若有需要后期对本文进行添加补充. EDA实验课课程笔记(三)--TCL脚本语言的学习 前言(TCL综述) ...

  5. EDA实验课课程笔记(一)——linux操作系统及linux下的基本指令

    EDA实验课课程笔记(一)--linux操作系统及linux下的基本指令 实验目标 1,了解Linux系统的基本特点 2,掌握Linux的常用命令 3,掌握Linux的命令输入技巧 实验内容 1,基本 ...

  6. EDA实验课课程笔记(七)——DC(Design Compiler)的简介及其图像化使用(一)

    本博文用于记录DC的基本知识及一些相关的最基本概念.然后配合演示视频,对DC有一个最初步的认识.参考学校老师的PPT讲解,以及实验指导书中的内容. Design Compiler的简介及其图像化使用 ...

  7. EDA实验课课程笔记(八 )——PT(Prime Time)简介(附录静态时序分析)

    这里的部图片引用尤老师时序分析公开课,B站可以找到. PT(Prime Time)简介 PT简介 相关概念 时钟偏斜(Clock Skew) 时钟抖动(Clock Jitter) 输入输出延时 建立时 ...

  8. EDA实验课课程笔记(二)——Vim编辑器

    移动光标的方法 指令 解释 h 或 向左箭头键(←) 光标向左移动一个字符 j 或 向下箭头键(↓) 光标向下移动一个字符 k 或 向上箭头键(↑) 光标向上移动一个字符 l 或 向右箭头键(→) 光 ...

  9. C++实验课任务(多态--容器--算法)

    C++实验课任务(多态–容器–算法) 题目的基本实现 代码如下(具体细节处的分析见代码中/**/里的部分): #pragma once #include <string> #include ...

最新文章

  1. 【redis】2.redis可视化工具安装使用
  2. 记录Pandas处理数据的两个小技巧
  3. 【STM32】SPI简介
  4. 程序片上(内)执行-nandFlash-norFlash
  5. poj 2255 Tree Recovery 解题报告
  6. sourceforge.net cvs sample
  7. android本地socket正常,【报Bug】Android 本地打包 websocket 出错
  8. JAVA学习-JAVA数组的使用示例
  9. Swift 5新特性详解:ABI 稳定终于来了!
  10. 在Ubuntu18.04上安装Nvidia驱动
  11. php 取一条数据,php 读取txt 每次固定输出一条数据用什么方法实现?
  12. 转)Ubuntu安装teamviewer
  13. .Net软件设计新思维
  14. 离散数学蕴含等值式前件为假时命题为真的理解
  15. 6. php 基本语法
  16. Java输出字符串格式问题 .UnknownFormatConversionException
  17. Arduino蓝牙无线自动下载程序 Arduino无线下载
  18. 【AI芯片】中国AI芯片爆发,架构创新迫在眉睫
  19. 托福考试前你需要知道哪些事情
  20. 【随便说说】|| 老师用腾讯会议开直播,实在忍不住了,我......

热门文章

  1. 硕博生到底该不该参加学术会议
  2. java se7 新特性_Java SE7新特性之try-with-resources语句
  3. 物理cpu数,逻辑cpu数,cpu核数
  4. KeilIAR生成库及库的说明与使用
  5. IDEA中用java实现简单记事本(保姆级)
  6. python基础实例教程 微课版-从零开始学Python(微课视频版)
  7. Android 动画(二) 实战演示——仿网易新闻安卓端菜单栏动画
  8. 新媒体运营,微博运营简介与操作
  9. AI鸟类识别实现自然生态环境数字化监测
  10. Android集成腾讯信鸽推送SDK