C-多维数组

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

在本教程中,我们将学习C编程语言中的多维数组。

在先前的教程中,我们已经介绍了一维数组和二维数组。

在C语言中,我们可以像1D和2D数组一样创建多维数组。
多维数组的语法如下。

type arrName[size1][size2]...[sizeN];

在上面的语法类型中,可以是任何有效的类型,例如int,float等。
arrName是数组的名称,而 [size1],[size2],...是数组的尺寸。

数组维数限制由用于编译C程序的编译器确定。

3维数组

在下面的示例中,我们将创建一个名为" scoreboard"的3D数组,类型为" int",以连续2年保持2位玩家的3场比赛得分。

//scoreboard[player][match][year]
int scoreboard[2][3][2];

该数组将如下所示。

让我们用C编写一个程序,在2年的3场比赛中得到2名球员的得分。

/**
 * file: 3d-array.c
 * date: 2010-12-25
 * description: 3d array program
 */

#include <stdio.h>
int main(void)
{
  //variable
  int
    scoreboard[2][3][2],
    player, match, year;
    
  //user input
  printf("---------- INPUT ----------\n\n");
  for (year = 0; year < 2; year++) {
    printf("---------- Year #%d ----------\n", (year + 1));
    for (player = 0; player < 2; player++) {
      printf("Enter score of Player #%d\n", (player + 1));
      for (match = 0; match < 3; match++) {
        printf("Match #%d: ", (match + 1));
        scanf("%d", &scoreboard[player][match][year]);
      }
    }
  }
  
  //output
  printf("\n\n---------- OUTPUT ----------\n\n");
  for (year = 0; year < 2; year++) {
    printf("---------- Scoreboard of Year #%d ----------\n", (year + 1));
    for (player = 0; player < 2; player++) {
      printf("----- Player #%d -----\n", (player + 1));
      for (match = 0; match < 3; match++) {
        printf("Match #%d: %d\n", (match + 1), scoreboard[player][match][year]);
      }
    }
  }
  
  printf("End of code\n");
  return 0;
}
---------- INPUT ---------

---------- Year #1 ---------
Enter score of Player #1
Match #1: 80
Match #2: 40
Match #3: 70
Enter score of Player #2
Match #1: 50
Match #2: 90
Match #3: 30
---------- Year #2 ---------
Enter score of Player #1
Match #1: 80
Match #2: 90
Match #3: 70
Enter score of Player #2
Match #1: 40
Match #2: 60
Match #3: 70

---------- OUTPUT ---------

---------- Scoreboard of Year #1 ---------
----- Player #1 ----
Match #1: 80
Match #2: 40
Match #3: 70
----- Player #2 ----
Match #1: 50
Match #2: 90
Match #3: 30
---------- Scoreboard of Year #2 ---------
----- Player #1 ----
Match #1: 80
Match #2: 90
Match #3: 70
----- Player #2 ----
Match #1: 40
Match #2: 60
Match #3: 70
End of code