【行列转换】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;
}
目录
相关文章
|
6天前
|
C语言
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
18天前
|
NoSQL Java 编译器
C语言从入门到精通该怎样学?
持续学习与实践:编程是一门需要不断学习和实践的技能,要保持对新技术和新知识的敏感性,并持续进行编程实践。
29 1
|
1月前
|
存储 Java C语言
【C语言入门】初识C语言:掌握编程的基石
【C语言入门】初识C语言:掌握编程的基石
35 4
【C语言入门】初识C语言:掌握编程的基石
|
1月前
|
存储 Java 程序员
【C语言入门】C语言入门:探索编程世界的基础概念
【C语言入门】C语言入门:探索编程世界的基础概念
46 2
|
1月前
|
前端开发 C语言 C++
C语言入门02---环境搭建
C语言入门02---环境搭建
|
30天前
|
编译器 C语言 C++
C++从遗忘到入门问题之C++持从C语言的过渡问题如何解决
C++从遗忘到入门问题之C++持从C语言的过渡问题如何解决
|
2月前
|
存储 Web App开发 算法
c语言的简单入门
熟悉c语言(简单入门)
|
2月前
|
JavaScript C语言
|
2月前
|
存储 人工智能 Java
|
2月前
|
存储 程序员 Go