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

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

简易思路图解

小结

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

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

目录
相关文章
|
28天前
|
存储 编译器 C语言
【c语言】数组
本文介绍了数组的基本概念及一维和二维数组的创建、初始化、使用方法及其在内存中的存储形式。一维数组通过下标访问元素,支持初始化和动态输入输出。二维数组则通过行和列的下标访问元素,同样支持初始化和动态输入输出。此外,还简要介绍了C99标准中的变长数组,允许在运行时根据变量创建数组,但不能初始化。
37 6
|
1月前
|
存储 编译器 C语言
C语言函数的定义与函数的声明的区别
C语言中,函数的定义包含函数的实现,即具体执行的代码块;而函数的声明仅描述函数的名称、返回类型和参数列表,用于告知编译器函数的存在,但不包含实现细节。声明通常放在头文件中,定义则在源文件中。
|
1月前
|
存储 人工智能 BI
C语言:数组的分类
C语言中的数组分为一维数组、多维数组和字符串数组。一维数组是最基本的形式,用于存储一系列相同类型的元素;多维数组则可以看作是一维数组的数组,常用于矩阵运算等场景;字符串数组则是以字符为元素的一维数组,专门用于处理文本数据。
|
1月前
|
存储 算法 C语言
C语言:什么是指针数组,它有什么用
指针数组是C语言中一种特殊的数据结构,每个元素都是一个指针。它用于存储多个内存地址,方便对多个变量或数组进行操作,常用于字符串处理、动态内存分配等场景。
|
1月前
|
存储 C语言
C语言:一维数组的不初始化、部分初始化、完全初始化的不同点
C语言中一维数组的初始化有三种情况:不初始化时,数组元素的值是随机的;部分初始化时,未指定的元素会被自动赋值为0;完全初始化时,所有元素都被赋予了初始值。
|
1月前
|
C语言 C++
保姆式教学C语言——数组
保姆式教学C语言——数组
17 0
保姆式教学C语言——数组
|
1月前
|
C语言
C语言数组
C语言数组
17 0
|
1月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
15 0
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
34 3
|
C语言
软件设计师1991年下午试题2(C语言 压缩矩阵乘法)
阅读下列说明和流程图,回答问题1和问题2,把解答写在答卷的对应栏内。 [说明] 流程图用来计算矩阵 K,Y 的乘积 Z,其中 X,Y,Z 均为 m 行 m 列的下三角方阵,即行号小于列号的元素均为零的 m 阶方阵。
651 0