这是一个C语言示例:输入一个 n 行 n 列的整数矩阵,输出其转置矩阵(2≤n≤100)。

要解决该问题应该清楚什么是矩阵的转置。矩阵的转置就是将原矩阵第 i 行的所有数据,依次放入新矩阵的第 i 列,即原矩阵中第 n 行第 m 列的数据被放在了新矩阵的第 m 行第 n 列中(见图 1)。

图 1:矩阵转置示例

解决矩阵问题时通常都是先将矩阵元素存放在一个二维数组中,使用双重 for 循环语句来遍历这个二维数组,从而实现对矩阵中所有元素数据的操作。例如,我们可以将图 1 中的矩阵存放在二维数组 A(int A[3][3];)中。

仔细观察图 1 转置前后的矩阵可知,转置后矩阵主对角线上的元素 A[1][1]、A[2][2]、A[3][3] 的值并没有发生变化,只是位于对角线右上方的三个元素与位于对角线左下方的三个元素的值进行了交换,即 A[1][2] 和 A[2][1] 进行了交换,A[1][3] 和 A[3][1] 进行了交换,A[2][3] 和 A[3][2] 进行了交换。进一步观察进行交换的两个数组元素,会发现它们的行号和列号互换了。

根据这个发现我们可以设计算法,用双重 for 循环遍历数组 A,找出对角线左下角的元素(行号大于列号),将其值与对角线右上角的对应元素(行号和列号互换后的元素)的值互换,就可以实现矩阵的转置操作。

for(i=0;i

for(j=0;j

{

if(i>j)

{

k = a[i][j];

a[i][j] = a[j][i];

a[j][i] = k;

}

}

代码清单 1:输入一个 n×n 整数矩阵,输出其转置矩阵(2≤n≤100)

#include

#include

int n,a[100][100];

void doubleCycle(int s)

{

int i,j,k;

for(i=0;i

{

for(j=0;j

{

if(s==0) scanf("%d",&a[i][j]); //读入矩阵

if(s==1) printf("%5d",a[i][j]); //输出矩阵

if(s==2 && i>j) //转置

{

k=a[i][j]; a[i][j]=a[j][i]; a[j][i]=k;

}

}

if(s==1) printf("\n"); //输出矩阵行结束符

}

}

int main( )

{

printf("输入一个正整数n(1

scanf("%d",&n);

printf("依次输入%d*%d矩阵所有%d个元素:\n",n,n,n*n);

doubleCycle(0); //调用函数读入矩阵

printf("原始矩阵:\n");

doubleCycle(1); //调用函数输出原矩阵

doubleCycle(2); //调用函数将原矩阵转置

printf("转置以后的矩阵:\n");

doubleCycle(1); //调用函数输出转置结果

system("pause");

return 0;

}

运行结果为:

输入一个正整数n(1

依次输入5*5矩阵所有25个元素:

3 4 2 5 6 6 7 7 7 8 8 3 2 5 4 8 8 4 2 6 1 0 5 7 7

原始矩阵:

3    4    2    5    6

6    7    7    7    8

8    3    2    5    4

8    8    4    2    6

1    0    5    7    7

转置以后的矩阵:

3    6    8    8    1

4    7    3    8    0

2    7    2    4    5

5    7    5    2    7

6    8    4    6    7

c语言存储转置矩阵,C语言实现矩阵转置(附带源码)相关推荐

  1. C语言实现的一个小学生算数自测系统源码分享

    C语言实现的一个小学生算数自测系统源码分享 #include <stdio.h> //标准输入输出 #include <stdlib.h> //用于对程序进行退出操作 #inc ...

  2. C语言期末大作业-学生成绩管理系统(完整源码+设计报告)

    C语言-学生成绩管理系统 一.学生成绩管理系统源码(完整) 二.程序设计报告 1.课程设计目的 2.课程设计任务与要求: 4.课程设计成果(运行截图) 5.课程设计心得 一.学生成绩管理系统源码(完整 ...

  3. C语言打印字符串的所有排列组合(附完整源码)

    C语言打印字符串的所有排列组合 字符串的所有排列问题 C语言打印字符串的所有排列组合的完整源码(定义,实现,main函数测试) 字符串的所有排列问题 示例:ABC的排列是ABC,ACB,BCA,BAC ...

  4. 国际多语言出海商城返佣产品自动匹配订单源码

    国际多语言出海商城返佣产品自动匹配订单源码 8国多语言出海拼单商城 此网站是很多巴西客户定制的原型,已投放运营符合当地本地化 多语言商城返利返佣投资理财派单自带余额宝, 采取全新支付端口,后台语音提醒 ...

  5. C语言——史上最全通讯录讲解(附源码)

    C语言--史上最全通讯录讲解(附源码) 一.开始界面的打印 二.对六大板块进行定义操作 三.对联系人进行初始化 四.对通讯录进行初始化 4.1动态版本 4.2静态版本 五.通讯录六大功能的具体实现 5 ...

  6. c语言旅游系统,C语言计算旅行花费附带源码

    C语言计算旅行花费附带源码 来源:www.xysxzl.com时间:2021-03-01 10:56 旅游程序 国庆节桐桐一家想自驾旅游,目的地有北京.海南.云南等许多好玩的地方可选择,在已知汽车平均 ...

  7. 基于JAVA阅读与存储图书网站设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA阅读与存储图书网站设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA阅读与存储图书网站设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目 ...

  8. 抖音账号矩阵系统/抖音seo霸屏系统/抖音矩阵seo系统源码/独立部署

    抖音账号矩阵系统/抖音seo霸屏系统/抖音矩阵seo系统源码/独立部署,技术团队如何围绕抖音矩阵关键词霸屏来做开发?来做到抖音seo优化达到账号排名效果,关键词起到至关重要的作用,依托于抖音平台的正规 ...

  9. 抖音账号矩阵系统/抖音seo/抖音矩阵seo系统源码/抖音搜索排名独立部署

    前言:抖音账号矩阵系统/抖音seo霸屏系统/抖音矩阵seo系统源码/独立部署,技术团队如何围绕抖音矩阵关键词霸屏来做开发?来做到抖音seo优化达到账号排名效果,关键词起到至关重要的作用,依托于抖音平台 ...

  10. 【Android数据存储】ContentProvider详细介绍(附实例源码)

    1.ContentProvider是什么? ContentProvider--内容提供者.它是一个类,这个类主要是对Android系统中进行共享的数据进行包装,并提供了一组统一的访问接口供其他程序调用 ...

最新文章

  1. MySQL下载与安装教程以及环境变量配置
  2. c#委托与事件(二)
  3. java 飞信接口_java 飞信接口
  4. deb 中标麒麟_中标麒麟linux
  5. 《心理学与生活》发展与教育(上)
  6. 英文 SCI 论文写作常用句式(保持更新)
  7. 转:数据之美:迄今 10 佳数据可视化示例
  8. 为什么可用性设计重要?如何实现可用性设计?
  9. webpack配置指定文件不打包
  10. MySQL 基础——MySQL 起步
  11. 排列组合 【插空法】【捆绑法】【容斥原理】
  12. 程序员:不是所有的程序员称为程序员!
  13. @MDS SpringBoot的简单项目搭建
  14. 保研经验:夏令营英语面试不要慌,告诉你几个口语小技巧!
  15. socket编程在windows和linux下的区别
  16. 模型质量控制管理1——如何把好质量关
  17. 我要把这些新互联网装X词汇一顿爆吐**
  18. “Tplink端口映射设置”教程---快解析
  19. 阿里云轻量应用型服务器和ECS服务器比较
  20. 网页导航菜单制作——快,很快,非常快

热门文章

  1. Arch安装deepin桌面环境
  2. 守望先锋代码_使用守望台自动刷新SQL Server容器
  3. android 手机自动登录,Android:程序跳过登录界面直接进入主界面(自动登录)
  4. 杨霖演讲实录∣从模块化架构到跨链生态,NULS这一年下了一盘怎么样的棋
  5. 运用PS制作3G、4G、5G、6G矢量图方法
  6. android构建系统总览
  7. mysql中求闰年的函数_SQL 判断闰年
  8. 服务器如何推送消息到app,App中如何实现消息推送?
  9. 关于以太坊的nonce值
  10. 阿里巴巴的矢量图标之字体图标