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;
}

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

简易思路图解

小结

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

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

目录
相关文章
|
20天前
|
存储 编译器 C语言
C语言数组详解
C语言数组详解
22 1
|
5天前
|
安全 C语言
C语言8 数组与字符串
C语言8 数组与字符串
5 0
|
9天前
|
存储 编译器 定位技术
结构体数组在C语言中的应用与优化策略
结构体数组在C语言中的应用与优化策略
|
15天前
|
存储 编译器 数据库
结构体数组在C语言中的应用与优化技巧
结构体数组在C语言中的应用与优化技巧
|
20天前
|
存储 C语言
C语言中的typedef关键字:为类型定义新名称
C语言中的typedef关键字:为类型定义新名称
20 0
|
20天前
|
存储 C语言
C语言中的多级指针、指针数组与数组指针
C语言中的多级指针、指针数组与数组指针
13 0
|
20天前
|
存储 C语言
C语言数组指针详解与应用
C语言数组指针详解与应用
17 0
|
21天前
|
C语言
|
5天前
|
C语言
C语言5 字符输出函数和格式输出函数
C语言5 字符输出函数和格式输出函数
10 1
|
6天前
|
算法 编译器 C语言
深入浅出C语言—【函数】下
深入浅出C语言—【函数】下