C-二维数组
在本教程中,我们将学习C编程语言中的二维数组。
在上一教程中,我们已经介绍了什么是数组。
现在,让我们探索二维数组。
因此,从上一教程中我们知道,当我们要存储一维数据(如单个球员的得分在5场比赛中)时,我们将使用一维数组。
现在,如果我们要存储二维数据,例如存储5个比赛的4个球员的各自得分,那么我们需要二维数组。
二维数组的语法
要创建一个二维数组,我们使用以下语法。
type arrName[rows][cols];
例
int score[4][5];
在上面的示例中,我们正在创建一个名为int
类型的名为score
的数组。
它具有4行5列,即总共4x5 = 20个元素。
因此,上面的代码将指示计算机分配内存以存储20个int类型的元素,我们可以表示分数数组,如下所示。
数组索引从0开始,因此,在上图中,有4行具有索引0、1、2和3。
并且有5列具有索引0、1、2、3和4。
将值分配给2维数组
通过使用row-index和col-index定位单元格,我们可以将值分配给2D数组。
例如,如果要为行索引0和列索引0的元素分配10,则将编写以下代码。
score[0][0] = 10;
类似地,如果我们想让比如说50分配给行索引1和列索引3的数组元素,那么我们将编写以下代码。
score[1][3] = 50;
创建和初始化2维数组
我们可以使用两种方法在C中创建和初始化2D数组。
在以下代码中,我们将创建类型为int的2D数组" bonus",该数组具有2行3列。
int bonus[2][3] = { 1, 2, 3, 4, 5, 6 };
在上面的代码中,数组奖励的第一行是" 1、2、3",第二行是" 4、5、6"。
我们可以通过用大括号" {}"分隔行来获得相同的结果,如下所示。
int bonus[2][3] = { {1, 2, 3}, {4, 5, 6} };
我们也可以跳过元素,它们将自动填充为0。
在下面的示例中,我们将创建一个类型为int的数组红利,该数组有2行3列,但是这次仅初始化了几个元素。
int bonus[2][3] = { {1, 2}, {3} };
上面的代码将创建具有2行3列的红利数组,我们将获得以下初始化。
int bonus[2][3] = { {1, 2, 0}, {3, 0, 0} };
如果我们想将一行的所有元素初始化为0,那么我们可以编写以下内容。
int bonus[2][3] = { {0}, {0} };
因此,以上代码将为我们提供以下结果。
int bonus[2][3] = { {0, 0, 0}, {0, 0, 0} };
现在,在结束本教程之前,让我们用C编写一个程序,在5个比赛中获得4名球员的得分并将其打印出来。
/** * file: 2d-array.c * date: 2010-12-21 * description: 2d array program */ #include <stdio.h> int main(void) { //variable int score[4][5], r, c; //user input for (r = 0; r < 4; r++) { printf("Enter 5 scores of Player #%d: ", (r + 1)); for (c = 0; c < 5; c++) { scanf("%d", &score[r][c]); } } //output printf("You have entered the following:\n"); for (r = 0; r < 4; r++) { printf("---------- Score of Player #%d ----------\n", (r + 1)); for (c = 0; c < 5; c++) { printf("Match #%d\tScore: %d\n", (c + 1), score[r][c]); } } printf("End of code\n"); return 0; }
Enter 5 scores of Player #1: 11 12 13 14 15 Enter 5 scores of Player #2: 21 22 23 24 25 Enter 5 scores of Player #3: 31 32 33 34 35 Enter 5 scores of Player #4: 41 42 43 44 45 You have entered the following: ---------- Score of Player #1 --------- Match #1 Score: 11 Match #2 Score: 12 Match #3 Score: 13 Match #4 Score: 14 Match #5 Score: 15 ---------- Score of Player #2 --------- Match #1 Score: 21 Match #2 Score: 22 Match #3 Score: 23 Match #4 Score: 24 Match #5 Score: 25 ---------- Score of Player #3 --------- Match #1 Score: 31 Match #2 Score: 32 Match #3 Score: 33 Match #4 Score: 34 Match #5 Score: 35 ---------- Score of Player #4 --------- Match #1 Score: 41 Match #2 Score: 42 Match #3 Score: 43 Match #4 Score: 44 Match #5 Score: 45 End of code