C 语言 二维数组

C语言二维数组详解

一、什么是二维数组

二维数组是由多个一维数组组成的数据结构,它的特点是可以用行和列(或横向和纵向)来表示数据的位置。在C语言中,二维数组实际上是一个元素为一维数组的一维数组,二维数组中的元素使用两个下标(或索引)来确定。

int arr[2][3]; // 定义一个二维数组,有2行3列的整型数据类型

上面的代码定义了一个2行3列的数组,其中,每个元素都是一个整型数据类型。

二、二维数组的基本操作

1. 初始化二维数组

// 静态初始化
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};

// 动态初始化
int arr[2][3];
for(int i = 0; i < 2; i++) {
    for(int j = 0; j < 3; j++) {
        arr[i][j] = i * 3 + j + 1;
    }
}

注:动态初始化需要使用两层循环逐一为每个元素赋值。

2. 访问二维数组元素

int a = arr[1][2]; // 获取arr数组第二行第三列元素的值,即6

注:二维数组的元素下标从0开始。

3. 遍历二维数组

for(int i = 0; i < 2; i++) {
    for(int j = 0; j < 3; j++) {
        printf("%d ", arr[i][j]);
    }
    printf("\n");
}

注:循环遍历数组时,外层循环遍历行,内层循环遍历列,并使用printf()函数打印输出数组元素的值。

三、二维数组示例

1. 用二维数组实现矩阵加法

需要满足两个矩阵行和列相等才能相加。先定义两个矩阵,并初始化数据,然后再遍历矩阵,分别将对应位置的元素相加即可。

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

for(int i = 0; i < 2; i++) {
    for(int j = 0; j < 3; j++) {
        result[i][j] = a[i][j] + b[i][j];
        printf("%d ", result[i][j]);
    }
    printf("\n");
}

2. 用二维数组实现井字棋游戏

先定义一个3x3的二维数组,并初始化所有元素值为“-”表示空格。然后两个玩家轮流输入相应坐标,将相应元素修改为玩家对应的标记。每次修改后重新遍历数组,查看是否出现了连续三个相同的标记(横向、竖向或斜向)。

char board[3][3];
for(int i = 0; i < 3; i++) {
    for(int j = 0; j < 3; j++) {
        board[i][j] = '-';
    }
}
char player1 = 'X';
char player2 = 'O';

int count = 0; // 记录棋盘中已填入的格子数
while(count < 9) {
    int row, col;
    printf("Player1, please enter row and col: ");
    scanf("%d%d", &row, &col);
    board[row][col] = player1;
    count++;
    // 判断是否连成3个一样的
    // TODO ...

    printf("Player2, please enter row and col: ");
    scanf("%d%d", &row, &col);
    board[row][col] = player2;
    count++;
    // 判断是否连成3个一样的
    // TODO ...
}

以上示例展示了二维数组的基本使用方法,希望能够对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C 语言 二维数组 - Python技术站

(0)
上一篇 2023年5月9日
下一篇 2023年5月9日

相关文章

  • C++的继承特性你了解吗

    当涉及到面向对象编程时,C++的继承特性是必不可少的一部分。在这篇攻略中,我们将深入探讨这种特性以及如何在C++中使用它。 什么是C++的继承特性? 在C++中,继承是一种机制,让我们可以从一个已经存在的类中创建出一个新类。新类会拥有旧类的所有属性和行为,并且可以增加一些新的自定义成员。这是一种非常有用的机制,因为它让我们可以构建出更为复杂的系统,同时保持代…

    C 2023年5月22日
    00
  • 联想小新Pro 13笔记本怎么样 联想小新Pro 13笔记本拆机+评测

    联想小新Pro 13 笔记本 联想小新Pro 13 笔记本是一款轻薄便携的高性能笔记本电脑,采用了第8代英特尔酷睿i5/i7处理器、全新独立显卡和全高清显示屏等最新的硬件配置,极大地提升了其性能和使用体验。同时,联想小新Pro 13 笔记本还拥有不错的外观设计和使用续航能力,深受广大用户的喜爱。 联想小新Pro 13 笔记本拆机 步骤1 – 拆卸电池 首先关…

    C 2023年5月22日
    00
  • php 常用的系统函数

    PHP 常用的系统函数 在 PHP 中,提供了很多常用的系统函数,方便我们进行各种操作。以下是 PHP 常用的系统函数的详细讲解: 字符串函数 PHP 提供了很多字符串处理的函数,包括字符串截取、替换、大小写转换等。 substr 函数 substr 函数可以用来截取字符串中的一部分,语法如下: substr(string $string, int $sta…

    C 2023年5月22日
    00
  • JavaScript中对JSON对象的基本操作示例

    当涉及到在JavaScript代码中处理JSON对象时,一些基本的操作很必要。下面是一些基本操作的示例: 1. 将JSON字符串解析为JavaScript对象 在JavaScript中,可以通过JSON.parse()方法将JSON字符串解析为JavaScript对象。以下是一个例子: const jsonString = ‘{"name&quot…

    C 2023年5月23日
    00
  • C++如何用数组模拟链表

    C++可以用数组来模拟链表的数据结构,这种方法也被称为静态链表。下面是模拟链表的完整攻略: 1.创建一个数组,并初始化每个元素。数组中的每一项包括两个数据值:数据和指针。其中数据存储着当前节点的值,指针存储着下一个节点在数组中的索引值。 struct Node{ int value; //当前节点的值 int next; //下一个节点在数组中的索引值 }n…

    C 2023年5月23日
    00
  • jQuery 1.9.1源码分析系列(十四)之常用jQuery工具

    首先先介绍一下本系列文章的背景。jQuery是一个非常流行的JavaScript库,它简化了JavaScript代码的编写和复杂DOM操作的实现,被广泛应用于Web开发中。本系列文章对jQuery 1.9.1的源码进行了分析,帮助读者深入了解jQuery的内部实现。 在本文中,我们将讨论常用的jQuery工具,这些工具是jQuery的核心库中的一部分,通过使…

    C 2023年5月23日
    00
  • JSON解析和XML解析区别对比

    下面我将详细讲解“JSON解析和XML解析区别对比”的完整攻略。 1. 什么是JSON和XML 在介绍JSON和XML解析的区别之前,我们先来了解一下什么是JSON和XML。 1.1 JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSON数据在传递过程中,可以简单地转换成JavaScript对象,因此J…

    C 2023年5月23日
    00
  • C语言运算符优先级列表(超详细)

    C语言运算符优先级列表(超详细) 前言 在C语言中,运算符的优先级不同,会影响整个表达式的计算结果,因此深入了解运算符的优先级是非常有必要的。本文将给出C语言中各种运算符的优先级列表及说明,以帮助读者更好地掌握C语言的运算符。 运算符优先级列表 运算符 结合性 说明 () [] -> . 从左到右 圆括号,方括号,箭头符(用于结构体指针),点符号(用于…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部