【行列转换】C语言二维数组入门

简介: 【行列转换】C语言二维数组入门

1.简介

       二维数组的交换可以作为动态规划问题的基础,本文将详细讲述二维数组交换问题,以便读者后期更容易理解动态规划问题。

2.二维数组的声明格式

       

int num[3][4] ={1,2,3,4,5,6,7,8,9,10,11,12};

        如此代码段,声明了一个三行四列的二维数组。我们可以把他理解为一个矩阵。

        注意:数组是从0开始的。及元素1对应的是num [0][0];这点和坐标很相似    

3.对二维数组元素的输出

这里我们首先用一维数组的元素输出进行类比

       我们首先定义一个一维数组然后用这个例子来类比二维数组。我们使用一个变量i来控制数组元素的输出。

int a[3]={1,2,3};
for ( i = 0; i < 3; i++)
{
    printf("%d",a[i]);
}

接下来我将说明二维数组的输出方法

       结合下图我们来直观的理解下二维数组的位置关系。我们可以看出i[0][0]是初始的第一排,然后我们把二维数组看成两个一维数组。

        如图所示,我们直观看到,我们对二维数组num[i][j]进行遍历需要改变i和j的值。也就是两个for循环进嵌套,外层控制行,内层控制列。代码如下:

int num[3][4] ={1,2,3,4,5,6,7,8,9,10,11,12};
    int i,j;
    for ( i = 0; i < 3; i++)
    {
        for ( j = 0; j < 4; j++)
        {
            printf("%d\t",num[i][j]);
        }
        printf("\n\n");
    }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         

4.二维数组的行列转换

4.1思路介绍

       (1)这里先介绍一下红酒杯交换法 。我们想把A,B两个酒杯内的液体互换,这时候我们需要一个空酒杯C,先把A中液体倒进C,然后把B中液体倒进A,然后在把C中液体倒进B。

       (2)同理我们可以利用一个中间变量储存num [1][2]的值然后进行取赋给一个变量,然后在把他的镜像num [2][1]的值赋给他,最后将常量赋值回去。这就完成了互换。

示意图如下:

4.2代码实现

详细解释见注释:

/*
    实现二维数组的翻转
*/
#include<stdio.h>
int main(int argc, char const *argv[])
{
    int num[3][3]={     //声明一个二维数组
        {1,2,3},
        {4,5,6},
        {7,8,9}};
    int i,n,cunt;       //i,n进行行和列的计算,cunt进行承接
    for (i = 0; i < 3; i++)//打印原数组
    {
        for ( n = 0; n < 3; n++)
        {
            printf("%d ",num[i][n]);
        }
        printf("\n");
    }
    for ( i = 0; i < 3; i++)//进行行的遍历
    {
        for( n = i; n < 3; n++)//进行列的遍历
        {   
            cunt=num [i][n];    //对空酒杯赋值
            num [i][n]=num [n][i];//交换
            num [n][i]=cunt;        //再次赋值交换完毕
        }
    } 
    printf("\n\n");
for (i = 0; i < 3; i++)         //打印输出
    {
        for ( n = 0; n < 3; n++)
        {
            printf("%d ",num[i][n]);
        }
        printf("\n");
    }
    return 0;
}
目录
相关文章
|
1月前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
52 2
|
1月前
|
存储 Java 编译器
初识C语言1——C语言入门介绍
初识C语言1——C语言入门介绍
30 1
|
1月前
|
存储 编译器 C语言
【C语言】数组(一维、二维数组的简单介绍)
【C语言】数组(一维、二维数组的简单介绍)
|
1月前
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第六章 数组_一维数组_二维数组_字符数组详解
本章介绍了C语言中的数组概念及应用。数组是一种存储同一类型数据的线性结构,通过下标访问元素。一维数组定义需指定长度,如`int a[10]`,并遵循命名规则。数组元素初始化可使用 `{}`,多余初值补0,少则随机。二维数组扩展了维度,定义形式为`int a[3][4]`,按行优先顺序存储。字符数组用于存储字符串,初始化时需添加结束符`\0`。此外,介绍了字符串处理函数,如`strcat()`、`strcpy()`、`strcmp()` 和 `strlen()`,用于拼接、复制、比较和计算字符串长度。
|
3月前
|
C语言
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
4月前
|
存储 Java C语言
【C语言入门】初识C语言:掌握编程的基石
【C语言入门】初识C语言:掌握编程的基石
67 4
【C语言入门】初识C语言:掌握编程的基石
|
3月前
|
NoSQL Java 编译器
C语言从入门到精通该怎样学?
持续学习与实践:编程是一门需要不断学习和实践的技能,要保持对新技术和新知识的敏感性,并持续进行编程实践。
58 1
|
4月前
|
存储 Java 程序员
【C语言入门】C语言入门:探索编程世界的基础概念
【C语言入门】C语言入门:探索编程世界的基础概念
105 2