C-二维数组

时间:2020-02-23 14:32:02  来源:igfitidea点击:

在本教程中,我们将学习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