首页 > 其他分享 >指针--习题

指针--习题

时间:2024-12-09 12:29:29浏览次数:9  
标签:matrix -- 矩阵 ++ 转置 int printf 习题 指针

设计一个指针函数,可以将3×3矩阵转置

transposeMatrix函数

  • h它接收一个指向包含 3 个整数的数组的指针(也就是可以用来表示二维数组的一种指针形式)作为参数,这个参数指向了要进行转置操作的 3×3 矩阵。
  • 通过两层嵌套的for循环,实现了矩阵元素的交换来完成转置操作。内层循环从i + 1开始,是因为矩阵转置只需要交换上三角部分(或下三角部分)和对应的下三角部分(或上三角部分)的元素即可,避免重复交换已经交换过的元素(比如matrix[0][1]matrix[1][0]交换后,如果再去交换一次就又变回原样了)。
  • 在循环内部,使用一个临时变量temp来辅助完成两个元素的交换。

main函数

  • 首先定义并初始化了一个 3×3 的矩阵matrix
  • 然后调用printf函数输出原矩阵的内容,方便查看。
  • 接着调用transposeMatrix函数对矩阵进行转置操作。
  • 最后再次调用printf函数输出转置后的矩阵内容,展示转置后的结果

源代码展示

#include <stdio.h>
//函数声明,用于转置3×3矩阵的指针函数
void transposeMatrix(int (*matrix)[3]); 

int main() {
    int matrix[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    
    printf("原矩阵为:\n");
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
    
    transposeMatrix(matrix);
    
    printf("转置后的矩阵为:\n");
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}

// 定义转置矩阵的函数
void transposeMatrix(int (*matrix)[3]) {
    for (int i = 0; i < 3; i++) {
        for (int j = i + 1; j < 3; j++) {
            // 交换matrix[i][j]和matrix[j][i]的值
            int temp = matrix[i][j];
            matrix[i][j] = matrix[j][i];
            matrix[j][i] = temp;
        }
    }
}

标签:matrix,--,矩阵,++,转置,int,printf,习题,指针
From: https://blog.csdn.net/kangll_/article/details/144344129

相关文章

  • 【产品经理修炼之道】-业财一体化之会计引擎
    大家对于公司或者企业中会计这个岗位是怎么理解的呢?对他们工作内容又了解多少呢?下面可以看看下面这篇文章的笔者整理分享的关于会计引擎的相关内容,特别推荐,刚刚成为成为会计一员的小白阅读哦!在公司里提出财务大家能想到的是什么,是哪个刻板、死守原则、卡报销款的人。其实,那是......
  • 基于51单片机的家用红外防盗及短信报警系统的设计与实现
    一、研究目的和意义由于近年来超大尺寸的集成电路、先进的通讯技术以及先进的单片机,以及公众对于安防的重视程度越来越高,使得使用单片机以及相关的外部元件来进行自动报警变得越来越容易,并且这种新型的系统具备了更少的元件、更加简易的操作、更加完善的功能,从而使得该系统的......
  • Linux中-vvv详细输出命令
    在Shell脚本中,有时会看到某些命令后面加上`-vvv`或类似的选项。这个选项的作用通常与命令的**调试模式**或**详细输出**相关。不同的命令和工具对于选项的解释和处理方式不同,因此`-vvv`的具体含义取决于它所跟随的命令。###一般来说,`-v`和`-vvv`的含义如下:1.*......
  • 城域网与数据中心互联 保姆级讲解(BGP综合选路)的配置过程及验证 HCIP大型网络设计必备
    本实验模拟某市ISP骨干网与两个数据中心互联的网络一、   实验拓扑二、   基础构思规划1.预配置包括:1.1所有设备互联IP已配置,且所有设备都有Loopback0地址。1.2SW1与SW2已创建vlan、划分vlan、并创建vlanif。1.3PC已配置IP和网关。2.在所有设备的系统......
  • 大虫刷题 最新华为考试 部分成绩公布 HCIA HCIP HCIE 附上聊天截图及相应成绩单 有图
                详细情况,可搜索微信小程序《大虫刷题》查看详情。......
  • 基于单片机的自适应光源控制系统设计
    1研究背景与意义现如今中国的能源需求越来越多,但能源数量却很少,供不应求,特别是中国人口基数比较大,在此情况下节约能源是国家应该关注的内容,因此解决全国自适应光源的节能问题变得很重要。在此之前采用的城市照明大多数是低效且高耗的,这极大造成了资源的浪费,为解决资源短缺及......
  • OpenHarmony默认30秒熄屏太麻烦?触觉智能鸿蒙开发板教你轻松取消
    开发板在默认情况下,OpenHarmony系统开机后30秒会自动息屏,自动息屏会让不少用户感到麻烦,触觉智能教大家两招轻松取消自动息屏。使用触觉智能PurplePiOH鸿蒙开发板演示,搭载了瑞芯微RK3566四核处理器,Laval鸿蒙社区推荐开发板,已适配全新OpenHarmony5.0Release系统,SDK源码全开放!S......
  • VLM-OCR-Demo:一个使用VLM用于OCR任务的示例
    https://www.cnblogs.com/mingupupu/p/18594592 前言上一篇文章TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面中我们构建了一个方便使用TesseractOCR的用户界面,今天构建一个类似的界面,使用SemanticKernel接入视觉模型,测试一下用视觉模型做OCR任务的效果。在......
  • Java Playwright 浏览器最大化
    Playwright是一个用于自动化Web应用测试的现代工具,支持多种语言(包括Java)及多个浏览器(如Chromium、Firefox和WebKit)。它提供了一致的API来控制浏览器行为,其中包括窗口操作,如最大化。本文将详细介绍如何在JavaPlaywright中实现浏览器窗口的最大化,并提供详细的代码示例。......
  • 重塑管理新境界:Tita——一体化业务管理平台,驱动企业高效前行
    在快速迭代的商业时代,企业面临的不仅仅是市场竞争的压力,更有内部管理复杂性的挑战。如何高效整合资源,优化业务流程,提升团队协同效率,成为企业可持续发展的关键。Tita,作为一款集OKR管理、经营目标管理、项目管理、绩效考核、CRM客户管理、合同管理、工时管理、工作计划管理以及项目......