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

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

简易思路图解

小结

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

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

目录
打赏
0
0
0
0
74
分享
相关文章
一文彻底搞明白C语言的数组
本文详细介绍了C语言中的数组,包括定义、初始化(静态与动态)、存储方式、访问方法及常用操作,如遍历、修改元素和作为函数参数传递。数组是C语言中最基本的数据结构之一,掌握它对编程至关重要。下篇将介绍二维数组,敬请期待!
43 0
一文彻底搞明白C语言的数组
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
261 14
【C语言】两个数组比较详解
比较两个数组在C语言中有多种实现方法,选择合适的方法取决于具体的应用场景和性能要求。从逐元素比较到使用`memcmp`函数,再到指针优化,每种方法都有其优点和适用范围。在嵌入式系统中,考虑性能和资源限制尤为重要。通过合理选择和优化,可以有效提高程序的运行效率和可靠性。
276 6
|
3月前
|
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
63 5
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
117 5
|
3月前
|
【C语言】宏定义在 a.c 中定义,如何在 b.c 中使用?
通过将宏定义放在头文件 `macros.h` 中,并在多个源文件中包含该头文件,我们能够在多个文件中共享宏定义。这种方法不仅提高了代码的重用性和一致性,还简化了维护和管理工作。本文通过具体示例展示了如何定义和使用宏定义,帮助读者更好地理解和应用宏定义的机制。
154 2
C语言中常见的字符串处理技巧,包括字符串的定义、初始化、输入输出、长度计算、比较、查找与替换、拼接、截取、转换、遍历及注意事项
本文深入探讨了C语言中常见的字符串处理技巧,包括字符串的定义、初始化、输入输出、长度计算、比较、查找与替换、拼接、截取、转换、遍历及注意事项,并通过案例分析展示了实际应用,旨在帮助读者提高编程效率和代码质量。
244 4
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。
C 语言中指针数组与数组指针的辨析与应用
在C语言中,指针数组和数组指针是两个容易混淆但用途不同的概念。指针数组是一个数组,其元素是指针类型;而数组指针是指向数组的指针。两者在声明、使用及内存布局上各有特点,正确理解它们有助于更高效地编程。