C语言学习记录——矩阵转换(定义一个数组实现或定义两个数组实现)

简介: C语言学习记录——矩阵转换(定义一个数组实现或定义两个数组实现)

题目要求

有一个2 × 3的矩阵,将之转置为3 × 2的矩阵,并显示出这个转置后的矩阵。

如:

 

转置后:

先用两个数组的方法解决一下题目

代码(定义两个数组)

#include <stdio.h>
int main()
{
  //根据题目要求,建立两个二维数组
  //arr存储转置前的矩阵,num存储转置后的矩阵
 
  int arr[2][3] = { {1,2,3},{4,5,6} };
  int num[3][2];
 
  //row-行号下标,col-列号下标
 
  int row, col;
 
  //将原来的矩阵打印出来
  printf("2*3:\n");
  for (row = 0; row < 2; row++)
  {
    for (col = 0; col < 3; col++)
    {
      printf("%2d", arr[row][col]);
    }
    printf("\n");
  }
  
  //将转置的矩阵存进数组num
 
  for (row = 0; row < 3; row++)
  {
    for (col = 0; col < 2; col++)
    {
      num[row][col] = arr[col][row];
    }
  }
 
  //打印出新的矩阵
  printf("3*2:\n");
  for (row = 0; row < 3; row++)
  {
    for (col = 0; col < 2; col++)
    {
      printf("%2d", num[row][col]);
    }
    printf("\n");
  }
  return 0;
}

运行结果图(定义两个数组)

接下来再用一个数组的方法解决一下题目

代码(定义一个数组

#include <stdio.h>
int main()
{
  //因为原矩阵为2*3,新矩阵为3*2,总共要占用3行3列
  //故建立数组时,定义为arr[3][3],防止出现数组越界的情况
 
  int arr[3][3] = { {1,2,3},{4,5,6},{0,0,0} };
  int row,col;
 
  printf("2*3:\n");
  for(row = 0; row < 2; row++)
  {
    for (col = 0; col < 3; col++)
    {
      printf("%2d", arr[row][col]);
    }
    printf("\n");
  }
 
  printf("3*2:\n");
  for (col = 0; col < 3; col++)
  {
    for (row = 0; row < 2; row++)
    {
      printf("%2d", arr[row][col]);
    }
    printf("\n");
  }
  return 0;
}

运行结果图(定义一个数组)

简易思路图解

小结

题目的关键点在于理解二维数组的下标,并且熟悉了解二维数组的行和列。

使用数组的时候更要注意数组越界的问题,如果出现了数组越界,打印出来的值将是不确定值。

目录
相关文章
TU^
|
4天前
|
存储 编译器 程序员
C语言之数组
C语言之数组
TU^
11 1
|
4天前
|
存储 程序员 编译器
【C语言基础】:数组
【C语言基础】:数组
|
12天前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
12 1
|
12天前
|
存储 算法 安全
数据结构学习记录——图应用实例-拯救007(问题描述、解题思路、伪代码解读、C语言算法实现)
数据结构学习记录——图应用实例-拯救007(问题描述、解题思路、伪代码解读、C语言算法实现)
10 0
|
12天前
|
程序员 C语言 C++
C语言学习记录——动态内存习题(经典的笔试题)、C/C++中程序内存区域划分
C语言学习记录——动态内存习题(经典的笔试题)、C/C++中程序内存区域划分
10 0
|
12天前
|
C语言
C语言学习记录——动态内存开辟常见的错误
C语言学习记录——动态内存开辟常见的错误
10 1
|
12天前
|
存储 C语言
C语言学习记录——通讯录(动态内存)
C语言学习记录——通讯录(动态内存)
9 0
|
C语言
软件设计师1991年下午试题2(C语言 压缩矩阵乘法)
阅读下列说明和流程图,回答问题1和问题2,把解答写在答卷的对应栏内。 [说明] 流程图用来计算矩阵 K,Y 的乘积 Z,其中 X,Y,Z 均为 m 行 m 列的下三角方阵,即行号小于列号的元素均为零的 m 阶方阵。
638 0
|
5天前
|
算法 Unix Linux
C语言随机数的产生(rand、srand、time函数细节讲解)
C语言随机数的产生(rand、srand、time函数细节讲解)
|
3天前
|
安全 C语言
【C语言基础】:内存操作函数
【C语言基础】:内存操作函数