当前位置: 首页 > news >正文

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暴露&#xff0c;不然父组件用ref是获取不到的&#xff01;&#xff01;&#xff01; <script setup> import { ref } from "vue"; const sonNum ref(1); const changeSon () > {sonNum.…...

Haskell添加HTTP爬虫ip编写的爬虫程序

下面是一个简单的使用Haskell编写的爬虫程序示例&#xff0c;它使用了HTTP爬虫IP&#xff0c;以爬取百度图片。请注意&#xff0c;这个程序只是一个基本的示例&#xff0c;实际的爬虫程序可能需要处理更多的细节&#xff0c;例如错误处理、数据清洗等。 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 在线轨迹生成功能的各种方法&#xff1a; 1. 在线程脚本内使用单个阻塞函数&#xff08;红色&#xff09; 2. 在线程脚本中使用多个非阻塞函数&#xff08;黄色&#xff09; 3. 在非线程脚本中使用多个非阻塞函数&#xff08;…...

LeetCode 面试题 16.22. 兰顿蚂蚁

文章目录 一、题目二、C# 题解 一、题目 一只蚂蚁坐在由白色和黑色方格构成的无限网格上。开始时&#xff0c;网格全白&#xff0c;蚂蚁面向右侧。每行走一步&#xff0c;蚂蚁执行以下操作。 (1) 如果在白色方格上&#xff0c;则翻转方格的颜色&#xff0c;向右(顺时针)转 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&#xff0c;安装Java环境 4.3、Docker安装redis&#…...

科研学习|研究方法——Python计量Logit模型

一、离散选择模型 莎士比亚曾经说过&#xff1a;To be, or not to be, that is the question&#xff0c;这就是典型的离散选择模型。如果被解释变量时离散的&#xff0c;而非连续的&#xff0c;称为“离散选择模型”。例如&#xff0c;消费者在购买汽车的时候通常会比较几个不…...

灵活运用Vue指令:探究v-if和v-for的使用技巧和注意事项

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、作…...

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主页&#xff1a;醋溜马桶圈_C语言进阶,初始C语言,数据结构-CSDN博客 Gitee主页&#xff1a;mnxcc (mnxcc) - Gitee.com 专栏&#xff1a;数据结构_醋溜马桶圈的博客-CSDN博客 目录 1.认识单链表 2.创建单链表 3.单链表的操作 3.1打印单链表 3.2开辟新空间 3.3尾插 3.4头插…...

【python】面向对象(类型定义魔法方法)

目录 一、引言 二、类型定义 1、什么是类型的定义&#xff1f; 2、案例 三、魔法方法 1、什么是魔法方法 2、基础部分 3、比较操作 4、容器类型 5、属性管理 6、封装 7、方法拓展 8、继承 9、多态 一、引言 Python是一种面向对象的语言&#xff0c;它支持类&#…...

1.微服务与SpringCloud

微服务和SpringCloud 文章目录 微服务和SpringCloud1.什么是微服务2.SpringCloud3. 微服务 VS SpringCloud4. SpringCloud 组件5.参考文档6.版本要求 1.什么是微服务 微服务是将一个大型的、单一的应用程序拆分成多个小型服务&#xff0c;每个服务实现特定的业务功能&#xff…...

【2023全网最全最火】Selenium WebDriver教程(建议收藏)

在本教程中&#xff0c;我将向您介绍 Selenium Webdriver&#xff0c;它是当今市场上使用最广泛的自动化测试框架。它是开源的&#xff0c;可与所有著名的编程语言&#xff08;如Java、Python、C&#xff03;、Ruby、Perl等&#xff09;一起使用&#xff0c;以实现浏览器活动的…...

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问题解决&#xff08;生产环境慎用&#xff09; 问题描述解决方案 问题描述 1.连接超时 2.连接能连上但马上断开并报错 3.提示保护模式什么的 (error) DENIED Redis is running in protected mode because protected mode is enabled链接redis …...

给女朋友开发个小程序低价点外卖吃还能赚钱

前言 今天又是无聊的一天,逛了下GitHub,发现一个库里面介绍美团饿了吗外卖红包外卖优惠券,先领红包再下单。外卖红包优惠券,cps分成,别人领红包下单,你拿佣金。哇靠,那我岂不是可以省钱还可以赚钱,yyds。。。。想想都美好哈哈哈!!! 回到正题,这个是美团饿了么分销…...

外贸客户管理系统是什么?推荐的管理软件?

外贸客户管理系统哪个好用&#xff1f;海洋建站如何选管理系统&#xff1f; 外贸客户管理系统&#xff0c;是一款专为外贸企业设计的客户关系管理系统&#xff0c;旨在帮助外贸企业建立与维护客户关系&#xff0c;提高客户满意度和忠诚度&#xff0c;提升企业业绩。海洋建站将…...

数据挖掘:分类,聚类,关联关系,回归

数据挖掘&#xff1a; 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其sql要学&…...

力扣labuladong一刷day10一网打尽股票买卖问题共6题

力扣labuladong一刷day10股票买卖问题共6题 一、121. 买卖股票的最佳时机 题目链接&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/ 思路&#xff1a;只能买入1次&#xff0c;定义dp[i][0]数组表示第i天持有股票时手中的最大金额 数&#xff0c;…...

别再乱用分支了!Flowable四种网关(排他/并行/包容/事件)实战选型指南

Flowable四大网关实战选型&#xff1a;从混乱到精准的决策艺术当你在设计一个请假审批流程时&#xff0c;是否遇到过这样的困惑&#xff1a;部门经理审批后需要同时通知HR和财务&#xff0c;但某些特殊情况下又需要跳过财务直接归档&#xff1f;这种看似简单的业务需求&#xf…...

Python开发者首次使用Taotoken接入大模型API的完整步骤指南

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Python开发者首次使用Taotoken接入大模型API的完整步骤指南 对于Python开发者而言&#xff0c;接入大模型API进行应用开发已成为一…...

Office RibbonX Editor:让Office界面定制变得像搭积木一样简单

Office RibbonX Editor&#xff1a;让Office界面定制变得像搭积木一样简单 【免费下载链接】office-ribbonx-editor An overhauled fork of the original Custom UI Editor for Microsoft Office, built with WPF 项目地址: https://gitcode.com/gh_mirrors/of/office-ribbon…...

极致精简,功能强大的PDF编辑工具

这是一款功能全面的PDF编辑工具 你只需要导入一份PDF格式文件 就可以快速的对它进行插入 批注编辑保护转换等各种操作 而且无需登录 也可以直接使用 在插入选项中可以进行插入文字图片 页面页眉页脚页码文档背景水印视频音频等 在批注选项中可以管理批注隐藏批注 高亮显示 文本…...

告别FTP龟速:用NTFS-3G在CentOS7上直连移动硬盘拷贝200G大文件

告别FTP龟速&#xff1a;用NTFS-3G在CentOS7上直连移动硬盘拷贝200G大文件当面对数百GB的设计素材、日志文件或数据库备份需要迁移时&#xff0c;传统的FTP传输往往会成为效率瓶颈。我曾在一个视频处理项目中&#xff0c;需要将230GB的4K原始素材从移动硬盘导入服务器&#xff…...

‌2026智慧校园规划必读:如何在预算吃紧下选到高性价比方案‌

✅作者简介&#xff1a;合肥自友科技 &#x1f4cc;核心产品&#xff1a;智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…...

电容损坏深度诊断,从外观到 ESR精准区分容衰与漏电

在 PCB 故障中&#xff0c;电容损坏占比超 40%&#xff0c;是当之无愧的 “头号杀手”。很多工程师仅靠 “鼓包漏液” 判断电容好坏&#xff0c;殊不知80% 的电容损坏是隐性的—— 外观平整但容值衰减、ESR 升高、轻微漏电&#xff0c;导致供电不稳、系统重启、噪声增大&#x…...

基于Arduino与nRF24L01+的无线传感器平台设计与部署指南

1. 项目概述与设计思路如果你和我一样&#xff0c;喜欢在阳台或者小院子里种点蔬菜瓜果&#xff0c;那你肯定也遇到过这样的烦恼&#xff1a;出门几天&#xff0c;心里总惦记着家里的番茄苗是不是缺水了&#xff0c;小温室里的温度会不会太高。传统的温湿度计只能让你在现场读数…...

Unity事件系统实战:用事件驱动重构你的金币拾取逻辑(告别硬编码)

Unity事件系统实战&#xff1a;用事件驱动重构你的金币拾取逻辑&#xff08;告别硬编码&#xff09;在游戏开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;玩家拾取金币后&#xff0c;需要更新UI、播放音效、解锁成就、保存数据……如果把这些逻辑全部写在金币拾取的代…...

Adobe-GenP 3.0:轻松激活Adobe全家桶的完整指南

Adobe-GenP 3.0&#xff1a;轻松激活Adobe全家桶的完整指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP 3.0是一款专为Adobe Creative Cloud系列软件…...