C/CPP基础练习题多维数组,矩阵转置,杨辉三角详解
多维数组
1. 矩阵转置
输入一个数字构成的矩形, 将矩形的值进行转置后打印
输入:
第一行 正整数n(1<n<10), 表示矩阵的边长
随后输入一个矩阵
输出:
转置后的矩阵
样例输入:
3
1 2 3
4 5 6
7 8 9
样例输出:
1 4 7
2 5 8
3 6 9
2. 颈椎病治疗
最近云海学长一直对着电脑改bug, 颈椎不舒服, 希望各位小伙伴帮云海学长治治
提供一张图片, 将图片旋转后再发给云海学长, 这样学长看图的时候就需要歪着脖子, 时间久了, 颈椎病就治好了
输入一个数字构成的矩形, 将矩形的值进行90度旋转后打印
输入:
第一行 正整数n(1<n<10), 表示矩阵的边长
随后输入一个矩阵
输出:
90度旋转后的矩阵
样例输入:
3
1 2 3
4 5 6
7 8 9
样例输出:
7 4 1
8 5 2
9 6 3
3. 杨辉三角
输入n(1<n<10), 打印高度为n的杨辉三角
样例输入: 5
样例输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
*4. 包围圈
东东哥在一场军事演练中, 需要对一片正方形森林进行排查,
为了防止被包围, 东东哥需要先排查外围才能进一步深入
输入: 正整数n(1<n<10), 表示森林的边长
输出: 东东哥排查森林的顺序
样例输入:
4
样例输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
解答
1.矩阵转置
#include<iostream>
using namespace std;
const int N = 10;
//按数字顺序生成二维数组
void FuZhi(int n,int a[][10])
{int k = 0; for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){k++;a[i][j] = k;}}
}
//转置,行和列互换
void ZhuanZ(int n,int a[][N])
{for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (i > j){int t = a[i][j];a[i][j] = a[j][i];a[j][i] = t;}}}
}
//打印
void Print(int n,int a[][10])
{for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){cout<<a[i][j];}cout << endl;}
}
int main()
{int n; cin >> n;if (n > 1 && n <= N) {int a[N][N];FuZhi(n, a);Print(n, a);cout << "转置后:" << endl;ZhuanZ(n, a);Print(n, a);}
system("pause"); return 0;
}
// 矩阵转置
void Demo61() {//--变量声明--// 矩阵边长, 矩阵本身, 转置后数组int size, arr[10][10], result[10][10];//--接收输入--scanf_s("%d", &size);for (int i = 0; i < size; i++) {for (int j = 0; j < size; j++) {scanf_s("%d", &arr[i][j]);}}//--数据处理--for (int i = 0; i < size; i++) {for (int j = 0; j < size; j++) {result[j][i] = arr[i][j];}}
//--输出--for (int i = 0; i < size; i++) {for (int j = 0; j < size; j++) {printf("%d ", result[i][j]);}printf("\n");}
}
2.矩阵90°转置
// 颈椎病
void Demo62() {//--变量声明--// 矩阵边长, 矩阵本身, 转置后数组int size, arr[10][10], result[10][10];//--接收输入--scanf_s("%d", &size);for (int i = 0; i < size; i++) {for (int j = 0; j < size; j++) {scanf_s("%d", &arr[i][j]);}}
//--数据处理--for (int i = 0; i < size; i++) {for (int j = 0; j < size; j++) {result[j][size - i - 1] = arr[i][j];}}
//--输出--for (int i = 0; i < size; i++) {for (int j = 0; j < size; j++) {printf("%d ", result[i][j]);}printf("\n");}
}
详细分析:
//数组下标变化:假设size为30 1 2 0 1 2 31 4 5 6 2 7 8 9->0 1 2 0 7 4 11 8 5 2 2 9 6 3x1 y y x2
[0][0]->[0][2]
[0][1]->[1][2]
[1][2]->[2][1]
[2][1]->[1][0]//规律:
x转y ,y转x
x转y时 size - x = y,由于下标开始值为0,所以size - 1 - x = y
y转x时 y = x
如上,y下标原封替换x坐标,但是x下标需要被size - 1 减后才能作为新数组的y下标。
3.杨辉三角
#include<iostream>
using namespace std;
void Print(int n, int a[][10]);
void YH(int n)
{int a[10][10];//计算杨辉三角, 以下三角矩阵的形式存放在二维数组for (int i = 0; i < n; i++) {a[i][0] = 1;a[i][i] = 1;for (int j = 1; j < i; j++)a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; //i不可能取值为0导致地址越界 }Print(n,a);
}
void Print(int n,int a[][10])
{for (int i = 0; i < n; i++) {for (int j = 1; j <= n - 1 - i; j++) //打印每行开始的空格 cout << " ";for (int j = 0; j <= i; j++) //每行打印的数据个数cout << a[i][j] << " ";cout << endl;}
}
int main() {int n; cin >> n;YH(n);system("pause"); return 0;
}
// 杨辉三角
void Demo63() {//--变量声明--// 杨辉三角的高度int n;// 存储用数组, 注意杨辉三角只会占用一半的空间, 所以这里可以用malloc动态分配来避免空间浪费int arr[10][10];//--接收输入--scanf_s("%d", &n);arr[0][0] = 1;
//--数据处理--// 左右两侧数据直接填充即可for (int i = 1; i < n; i++) {arr[i][0] = arr[i][i] = 1;for (int j = 1; j < i; j++) {arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}}//--输出--for (int i = 0; i < n; i++) {for (int j = 0; j <= i; j++) {printf("%d ", arr[i][j]);}printf("\n");}
}
4.包围圈
// 包围圈
void Demo64() {//--变量声明--int size, tree[10][10];// 当前坐标xy, 移动方向toward 0左 1下 2右 3上, 填充数// 注意 由于第一次探查前会先移动 x++ 所以x需要修正为-1int x = -1, y = 0, toward = 0, num = 0;// 一个方向的移动步数int s;
//--接收输入--scanf_s("%d", &size);s = size;
//--数据处理--// 移动规律 如果是4 则是4+3+3+2+2+1+1 = 16 同理 如果是5 5+4+4+3+3+2+2+1+1// 外部循环: 每奇数次循环, 最大步数-1. 一个方向移动完后 对方向进行修改// 内部循环: 循环(步数)次, 每次移动根据方向对xy进行修改
for (int i = 0; num<size*size; i++) {// 奇数次循环 最大步数-1if (i % 2 == 1) s--;for (int j = 0; j < s; j++) {// 获取方向并移动switch (toward) {case 0:x++;break;case 1:y++;break;case 2:x--;break;case 3:y--;break;}tree[y][x] = ++num;}
// 改变方向 注意 当toward为3 也就是向上时, 需要取模操作 也就是变为0// (1+1) %4 = 2 (3+1) %4=0toward = (toward + 1) % 4;}
//--输出--for (int i = 0; i < size; i++) {for (int j = 0; j < size; j++) {printf("%d ", tree[i][j]);}printf("\n");}
}
相关文章:
C/CPP基础练习题多维数组,矩阵转置,杨辉三角详解
多维数组 1. 矩阵转置 输入一个数字构成的矩形, 将矩形的值进行转置后打印 输入: 第一行 正整数n(1<n<10), 表示矩阵的边长 随后输入一个矩阵 输出: 转置后的矩阵 样例输入: 3 1 2 3 4 5 6 7 8 9 样例输出: 1 4 7 2 5 8 3 6 9 2. 颈椎病治疗 最近云海学长一…...
父组件用ref获取子组件数据
子组件 Son/index.vue 子组件的数据和方法一定要记得用defineExpose暴露,不然父组件用ref是获取不到的!!! <script setup> import { ref } from "vue"; const sonNum ref(1); const changeSon () > {sonNum.…...
Haskell添加HTTP爬虫ip编写的爬虫程序
下面是一个简单的使用Haskell编写的爬虫程序示例,它使用了HTTP爬虫IP,以爬取百度图片。请注意,这个程序只是一个基本的示例,实际的爬虫程序可能需要处理更多的细节,例如错误处理、数据清洗等。 import Network.HTTP.Cl…...
MySQL 社区开源备份工具 Xtrabackup 详解
文章目录 前言1. Xtrabackup 介绍1.1 物理备份与逻辑备份区别1.2 Xtrabackup 系列版本 2. Xtrabackup 部署2.1 下载安装包2.2 二进制部署2.3 程序文件介绍2.4 备份需要的权限 3. Xtrabackup 使用场景3.1 本地全量备份3.2 本地压缩备份3.3 全量流式备份3.3.1 备份到远程主机3.3.…...
【仿真】ruckig在线轨迹生成器示例
该场景说明了使用 CoppeliaSim 中提供的 Ruckig 在线轨迹生成功能的各种方法: 1. 在线程脚本内使用单个阻塞函数(红色) 2. 在线程脚本中使用多个非阻塞函数(黄色) 3. 在非线程脚本中使用多个非阻塞函数(…...
LeetCode 面试题 16.22. 兰顿蚂蚁
文章目录 一、题目二、C# 题解 一、题目 一只蚂蚁坐在由白色和黑色方格构成的无限网格上。开始时,网格全白,蚂蚁面向右侧。每行走一步,蚂蚁执行以下操作。 (1) 如果在白色方格上,则翻转方格的颜色,向右(顺时针)转 90 度…...
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
目录 一、从空白系统中克隆Centos7系统 二、使用xshell连接docker_tigerhhzz虚拟机编辑 三、在CentOS7基础上安装Docker容器 四、在Docker中进行安装Portainer 4.1、在Docker中安装MySQL 4.2、在Docker中安装JDK8,安装Java环境 4.3、Docker安装redis&#…...
科研学习|研究方法——Python计量Logit模型
一、离散选择模型 莎士比亚曾经说过:To be, or not to be, that is the question,这就是典型的离散选择模型。如果被解释变量时离散的,而非连续的,称为“离散选择模型”。例如,消费者在购买汽车的时候通常会比较几个不…...
灵活运用Vue指令:探究v-if和v-for的使用技巧和注意事项
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 专栏简介 📘 文章引言 一、作…...
nvidia-docker部署pytorch服务【GPU工作站】
文章目录 一、安装 Docker二、安装 NVIDIA Container Toolkit三、宿主机安装 cuda 和 nvidia-driver四、测试一、安装 Docker 可以参考这篇文章 https://blog.csdn.net/weixin_43721000/article/details/124237932 二、安装 NVIDIA Container Toolkit 参考nvidia官方 https:/…...
单链表的实现
CSDN主页:醋溜马桶圈_C语言进阶,初始C语言,数据结构-CSDN博客 Gitee主页:mnxcc (mnxcc) - Gitee.com 专栏:数据结构_醋溜马桶圈的博客-CSDN博客 目录 1.认识单链表 2.创建单链表 3.单链表的操作 3.1打印单链表 3.2开辟新空间 3.3尾插 3.4头插…...
【python】面向对象(类型定义魔法方法)
目录 一、引言 二、类型定义 1、什么是类型的定义? 2、案例 三、魔法方法 1、什么是魔法方法 2、基础部分 3、比较操作 4、容器类型 5、属性管理 6、封装 7、方法拓展 8、继承 9、多态 一、引言 Python是一种面向对象的语言,它支持类&#…...
1.微服务与SpringCloud
微服务和SpringCloud 文章目录 微服务和SpringCloud1.什么是微服务2.SpringCloud3. 微服务 VS SpringCloud4. SpringCloud 组件5.参考文档6.版本要求 1.什么是微服务 微服务是将一个大型的、单一的应用程序拆分成多个小型服务,每个服务实现特定的业务功能ÿ…...
【2023全网最全最火】Selenium WebDriver教程(建议收藏)
在本教程中,我将向您介绍 Selenium Webdriver,它是当今市场上使用最广泛的自动化测试框架。它是开源的,可与所有著名的编程语言(如Java、Python、C#、Ruby、Perl等)一起使用,以实现浏览器活动的…...
dimp 导入dmp文件报错:无效的模式名(DM8:达梦数据库)
dimp 导入dmp文件报错:无效的模式名-DM8:达梦数据库 环境介绍1 搭建A1 数据库52361.1 A1数据库5236创建模式名,表,测试数据1.2 从A1数据库5236导出dmp文件 2 搭建A2数据库52372.1 创建 数据用户ABC2311152.2 在A2 数据库5237 导入DMP(报错无效的模式名)2.3 使用REMAP_SCHEMAABC…...
宿主机无法连接docker里的redis问题解决(生产环境慎用)
宿主机无法连接docker里的redis问题解决(生产环境慎用) 问题描述解决方案 问题描述 1.连接超时 2.连接能连上但马上断开并报错 3.提示保护模式什么的 (error) DENIED Redis is running in protected mode because protected mode is enabled链接redis …...
给女朋友开发个小程序低价点外卖吃还能赚钱
前言 今天又是无聊的一天,逛了下GitHub,发现一个库里面介绍美团饿了吗外卖红包外卖优惠券,先领红包再下单。外卖红包优惠券,cps分成,别人领红包下单,你拿佣金。哇靠,那我岂不是可以省钱还可以赚钱,yyds。。。。想想都美好哈哈哈!!! 回到正题,这个是美团饿了么分销…...
外贸客户管理系统是什么?推荐的管理软件?
外贸客户管理系统哪个好用?海洋建站如何选管理系统? 外贸客户管理系统,是一款专为外贸企业设计的客户关系管理系统,旨在帮助外贸企业建立与维护客户关系,提高客户满意度和忠诚度,提升企业业绩。海洋建站将…...
数据挖掘:分类,聚类,关联关系,回归
数据挖掘: 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学&…...
力扣labuladong一刷day10一网打尽股票买卖问题共6题
力扣labuladong一刷day10股票买卖问题共6题 一、121. 买卖股票的最佳时机 题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/ 思路:只能买入1次,定义dp[i][0]数组表示第i天持有股票时手中的最大金额 数,…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...
大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...
