【行列转换】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;
}
目录
相关文章
|
17天前
|
存储 人工智能 Java
一文彻底搞定C语言中的二维数组
本文详细介绍了C语言中的多维数组,包括二维和三维数组的定义、初始化方式、内存布局及遍历方法。通过具体示例讲解了多种赋值技巧,并强调了数组在内存中按行存放的特点。希望这些内容能帮助你在编程路上不断成长!君志所向,一往无前!
26 1
一文彻底搞定C语言中的二维数组
|
5月前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
104 2
|
2月前
|
存储 编译器 C语言
【C语言程序设计——入门】C语言入门与基础语法(头歌实践教学平台习题)【合集】
本文档介绍了C语言环境配置和编程任务,主要内容包括: - **C语言环境配置**:详细讲解了在Windows系统上配置C语言开发环境的步骤。 - **第1关:程序改错**:包含任务描述、相关知识(如头文件引用、基本语法规则)、编程要求、测试说明及通关代码。 - **第2关:scanf函数**:涉及`scanf`和`printf`函数的格式与使用方法,提供编程要求、测试说明及通关代码。 文档结构清晰,涵盖从环境搭建到具体编程任务的完整流程,适合初学者学习和实践。
71 4
|
2月前
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
84 1
|
3月前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
135 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
5月前
|
存储 Java 编译器
初识C语言1——C语言入门介绍
初识C语言1——C语言入门介绍
66 1
|
5月前
|
存储 编译器 C语言
【C语言】数组(一维、二维数组的简单介绍)
【C语言】数组(一维、二维数组的简单介绍)
167 1
|
5月前
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
|
7月前
|
C语言
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
6月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
221 4