基于方向键实现矩阵选择

目录

  • 4*3
  • 3*4

4*3

要实现上下左右OK五个按键来操作一个4x3矩阵,您可以按照类似的思路进行编程。以下是一个示例代码:

#include <stdio.h>#define ROWS 4
#define COLS 3int matrix[ROWS][COLS] = {{1, 2, 3},{4, 5, 6},{7, 8, 9},{10, 11, 12}
};void printMatrix() {for (int i = 0; i < ROWS; i++) {for (int j = 0; j < COLS; j++) {printf("%-2d ", matrix[i][j]);}printf("\n");}printf("\n");
}void moveUp() {int temp[COLS];for (int j = 0; j < COLS; j++) {temp[j] = matrix[0][j];}for (int i = 0; i < ROWS - 1; i++) {for (int j = 0; j < COLS; j++) {matrix[i][j] = matrix[i + 1][j];}}for (int j = 0; j < COLS; j++) {matrix[ROWS - 1][j] = temp[j];}
}void moveDown() {int temp[COLS];for (int j = 0; j < COLS; j++) {temp[j] = matrix[ROWS - 1][j];}for (int i = ROWS - 1; i > 0; i--) {for (int j = 0; j < COLS; j++) {matrix[i][j] = matrix[i - 1][j];}}for (int j = 0; j < COLS; j++) {matrix[0][j] = temp[j];}
}void moveLeft() {int temp[ROWS];for (int i = 0; i < ROWS; i++) {temp[i] = matrix[i][0];}for (int i = 0; i < ROWS; i++) {for (int j = 0; j < COLS - 1; j++) {matrix[i][j] = matrix[i][j + 1];}}for (int i = 0; i < ROWS; i++) {matrix[i][COLS - 1] = temp[i];}
}void moveRight() {int temp[ROWS];for (int i = 0; i < ROWS; i++) {temp[i] = matrix[i][COLS - 1];}for (int i = 0; i < ROWS; i++) {for (int j = COLS - 1; j > 0; j--) {matrix[i][j] = matrix[i][j - 1];}}for (int i = 0; i < ROWS; i++) {matrix[i][0] = temp[i];}
}void pressOK() {int sum = 0;for (int i = 0; i < ROWS; i++) {for (int j = 0; j < COLS; j++) {sum += matrix[i][j];}}printf("Sum: %d\n", sum);
}int main() {int choice;while (1) {printMatrix();printf("Press 1: Up, 2: Down, 3: Left, 4: Right, 5: OK\n");printf("Enter your choice: ");scanf("%d", &choice);switch (choice) {case 1:moveUp();break;case 2:moveDown();break;case 3:moveLeft();break;case 4:moveRight();break;case 5:pressOK();break;default:printf("Invalid choice!\n");}printf("\n");}return 0;
}

这个示例与之前的示例非常相似,只是调整了矩阵的行和列的顺序,以适应4x3的矩阵。移动操作的实现也有一些微调。

3*4

要实现上下左右OK五个按键来操作一个3x4矩阵,您可以使用一个二维数组来表示该矩阵,并利用按键输入来进行矩阵操作。以下是一个示例代码:

#include <stdio.h>#define ROWS 3
#define COLS 4int matrix[ROWS][COLS] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}
};void printMatrix() {for (int i = 0; i < ROWS; i++) {for (int j = 0; j < COLS; j++) {printf("%-2d ", matrix[i][j]);}printf("\n");}printf("\n");
}void moveUp() {int temp = matrix[0][0];for (int i = 0; i < ROWS - 1; i++) {for (int j = 0; j < COLS; j++) {matrix[i][j] = matrix[i + 1][j];}}for (int j = 0; j < COLS; j++) {matrix[ROWS - 1][j] = temp;}
}void moveDown() {int temp = matrix[ROWS - 1][0];for (int i = ROWS - 1; i > 0; i--) {for (int j = 0; j < COLS; j++) {matrix[i][j] = matrix[i - 1][j];}}for (int j = 0; j < COLS; j++) {matrix[0][j] = temp;}
}void moveLeft() {int temp = matrix[0][0];for (int i = 0; i < ROWS; i++) {for (int j = 0; j < COLS - 1; j++) {matrix[i][j] = matrix[i][j + 1];}}for (int i = 0; i < ROWS; i++) {matrix[i][COLS - 1] = temp;}
}void moveRight() {int temp = matrix[0][COLS - 1];for (int i = 0; i < ROWS; i++) {for (int j = COLS - 1; j > 0; j--) {matrix[i][j] = matrix[i][j - 1];}}for (int i = 0; i < ROWS; i++) {matrix[i][0] = temp;}
}void pressOK() {int sum = 0;for (int i = 0; i < ROWS; i++) {for (int j = 0; j < COLS; j++) {sum += matrix[i][j];}}printf("Sum: %d\n", sum);
}int main() {int choice;while (1) {printMatrix();printf("Press 1: Up, 2: Down, 3: Left, 4: Right, 5: OK\n");printf("Enter your choice: ");scanf("%d", &choice);switch (choice) {case 1:moveUp();break;case 2:moveDown();break;case 3:moveLeft();break;case 4:moveRight();break;case 5:pressOK();break;default:printf("Invalid choice!\n");}printf("\n");}return 0;
}

在这个示例中,我们定义了一个3x4矩阵matrix,以及相应的按键操作函数。printMatrix函数用于打印矩阵。moveUpmoveDownmoveLeftmoveRight函数分别实现了上、下、左、右按键的移动操作,将矩阵按指定方向进行移动。pressOK函数用于计算矩阵中所有元素的和。

main函数中,我们通过一个循环来接受用户的按键输入,并根据选择调用相应的按键操作函数或打印矩阵的和。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/198243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DCMTK 目录结构

DCMTK 目录结构 经过编译后的DCMTK包含许多文件&#xff0c;在使用的时候我们需要将这些文件包含到对应的项目中&#xff0c;源码编译得到的文件如下&#xff1a; 如果你还没有成功编译&#xff0c;可以参考 dcmtk编译失败后的解决思路&#xff08;附带编译后文件下载&#x…

cloudflare Tunnel完整

下载和安装 curl -L ‘https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64’ -o ./cloudflared-linux-amd64 280 chmod x ./cloudflared-linux-amd64 281 ./cloudflared-linux-amd64 282 mv cloudflared-linux-amd64 cloudflared …

【生物医学信号处理及其MATLAB应用】Chapter 1 生物医学信号概述

Chapter 1 生物医学信号概述 第一章 生物医学信号概述一、信号二、生物医学信号三、生物医学信号处理的内容三、处理生物医学信号的目的 第一章 生物医学信号概述 一、信号 ​ 信号&#xff1a;携带信息的物理量 ​ 来自于真实世界的信号各不相同&#xff0c;但大致可分为四…

【Linux】编译器-gcc/g++与调试器-gdb的使用

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.gcc/g语法 2.gcc的使用及…

Linux设备与STM32 USB串口通讯

保证STM32 USB串口虚拟成功。 lsusb 如果STM32单片机通过USB连接到计算机&#xff0c;你应该能够在输出中看到类似以下的行&#xff1a; Bus XXX Device YYY: ID 0483:5740 STMicroelectronics 查看USB更多信息 sudo dmesg | grep tty 增加了下面类似信息&#xff1a; c…

tomcat容器是如何创建servlet类实例?用到了什么原理?

Tomcat容器创建Servlet类实例的过程主要涉及到以下几个步骤&#xff1a; 加载类&#xff1a;Tomcat容器首先需要加载你的Servlet类。这通常通过在web.xml文件中配置Servlet的class属性来完成。实例化&#xff1a;一旦Servlet类被加载&#xff0c;Tomcat容器就会创建一个该类的…

【教程】苹果推送证书的创建和使用流程详解

​ 摘要 本篇博客主要介绍了苹果推送证书的使用流程。首先&#xff0c;在苹果开发者中心创建推送证书&#xff0c;然后在应用程序中使用该证书进行消息推送。文章详细说明了创建推送证书的步骤&#xff0c;并提供了在应用程序中注册推送服务、发送推送消息以及处理推送消息的相…

Databend 开源周报第 122 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 支持链式函数调…

PWN学习之LLVM入门

一、基本流程 ①找到runOnFunction函数时如何重写的&#xff0c;一般来说runOnFunction都会在函数表最下面,找PASS注册的名称&#xff0c;一般会在README文件中给出&#xff0c;若是没有给出&#xff0c;可通过对__cxa_atexit函数"交叉引用"来定位&#xff1a; ②通…

GEE:Sobel算子卷积和Roberts算子卷积对比

作者:CSDN @ _养乐多_ 本文介绍了Sobel算子卷积和Roberts算子卷积操作的代码,并进行了图像对比,可以观察到两个算子的细微差异。 文章目录 一、Sobel算子和Roberts算子对比二、完整代码三、代码链接一、Sobel算子和Roberts算子对比 详细介绍介绍参考《遥感数字图像处理教程…

uniapp搭建内网映射测试https域名

搭建Https域名服务器 使用github的frp搭建&#xff0c;使用宝塔申请免费https证书&#xff0c;需要先关闭宝塔nginx的反向代理&#xff0c;申请完域名后再开启反向代理即可。 教程 新版frp搭建教程 启动命令 服务器端 sudo systemctl start frps本地 cd D:\软件安装包\f…

MySQL笔记-第03章_基本的SELECT语句

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第03章_基本的SELECT语句1. SQL概述1.1 SQL背景知识1.2 SQL语言排行榜1.3 SQL 分类 2. SQL语言的规则与规范2.1 基本规则2.2 SQL大小写规范 …

连接MySQL提示“Public Key Retrieval is not allowed“问题解决方式

解决方法 有多种方法可用于解决此问题&#xff08;请选择最适合您的一种&#xff09; 在 MySQL 中启用并正确实施 SSL创建一个数据库用户并将其配置为使用 mysql_native_password 身份验证插件。将以下参数添加到 JDBC URL&#xff1a;useSSLfalse&allowPublicKeyRetrieva…

算法-02-排序-冒泡插入选择排序

一般最经典的、最常用的&#xff1a;冒泡排序、插入排序、选择排序、归并排序、快速排序、计数排序、基数排序、桶排序。那么我们如何分析一个"排序算法"呢&#xff1f; 1-分析排序算法要点 时间复杂度&#xff1a;具体是指最好情况、最坏情况、平均情况下的时间复杂…

算法-滑动窗口

一、滑动窗口思想 概念 在数组双指针里&#xff0c;我们介绍过 "对撞型" 和 "快慢型" 两种方式&#xff0c;而滑动窗口思想就是快慢型的特例。 实际使用 计算机网络中有滑动窗口协议&#xff08;Sliding Window Protocol&#xff09;&#xff0c;该协议…

10、pytest通过assert进行断言

官方实例 # content of test_assert1.pydef f():return 3def test_function():assert f() 4def test_assert_desc():a f()# assert a % 2 0assert a % 2 0, "value was odd, should be even"解读与实操 pytest允许你使用标准python断言来验证测试中的期望和值&…

NodeJS(二):npm包管理工具、yarn、npx、pnpm工具等

目录 (一)npm包管理工具 1.了解npm 2.npm的配置文件 常见的配置属性 scripts属性*** 依赖的版本管理 3.npm安装包的细节 4.package-lock文件 5.npm install原理** 6.npm的其他命令 (二) 其他包管理工具 1.yarn工具 基本指令 2.cnpm工具 3.npx工具 (1)执行本地…

SAP中的新旧事务码

SAP中的新旧事务码 SAP随着新版本的发布&#xff0c;我们知道sap已经更新了很多的程序和TCODE。sap提供了很多新的TCODE来替换旧的TCODE&#xff0c;新TCODE有很多的新特性和新功能。在这个这种情况下&#xff0c;很多旧TCODE就会被废弃。我们如何查找这个替换呢&#xff1f; …

state_dict使用详解

在PyTorch中&#xff0c;state_dict是一个非常重要的概念&#xff0c;它是一个包含模型参数的字典对象。每个模型的state_dict都包含了该模型的所有参数&#xff08;权重和偏置等&#xff09;&#xff0c;用于在训练和推理过程中重现模型的内部状态. pytorch 中的 state_dict 是…

NetApp E5700 广泛应用于企业级 SAN 应用程序环境,例如大数据分析、技术计算、视频监控以及备份和恢复

主要优势 1、极致性能 • 利用最适合现代企业级应用&#xff08;例如&#xff0c;大数据分析、技术计算、视频监控以及备份和恢复&#xff09;的混合系统提高性能、IOPS 和密度。 2、无与伦比的价值 • 定制配置采用三个不同磁盘系统架、多种驱动器类型和一套齐备的 SAN 接口&…