程序员@IT·程序猿

C 二维数组

2016-06-15  本文已影响55人  2010jing

上一章的数组可以看作是一行连续的数据,只有一个下标,称为一维数组。
但是在实际问题的解决是需要是二维的或多维的,因此C语言允许构造多维数组。
多维数组元素有多个下标,以确定它在数组中的位置。

形式是:
dataType arrayName[length1][length2];
dataType 为数据类型,
arrayName 为数组名,
length1 为第一维下标的长度,
length2 为第二维下标的长度。

一维的定义:
int a[10];

二维的定义:
int a[3][4];

定义了一个3行4列的数组,共有3×4=12个元素,数组名为a,即:
a[0][0], a[0][1], a[0][2], a[0][3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[2][0], a[2][1], a[2][2], a[2][3]

在二维数组中,要定位一个元素,必须给出一维下标和二维下标。
例如,a[2][3] 表示a数组第3行第4列的元素。

理论太多,不如上个例子
一个group内有5个学生,有3门课,记录着每个人的成绩。求每个科目的平均分。

1.png
#include <stdio.h>
int main(){
    int i, j;  //二维数组下标
    int sum=0;  //当前科目的总成绩
    int average;  //总平均分
    int v[3];  //各科平均分
    int a[5][3];  //用来保存每个同学各科成绩的二维数组
    printf("Input score:\n");
    for(i=0; i<3; i++){
        for(j=0; j<5; j++){
            scanf("%d", &a[j]);  //输入每个同学的各科成绩
            sum+=a[j];  //计算当前科目的总成绩
        }
        v=sum/5;  // 当前科目的平均分
        sum=0;
    }
    printf("Swift: %d\nJava: %d\nPython: %d\n", v[0], v[1], v[2]);
    return 0;
}

运行结果:

Input score:
80
61
59
85
76
75
65
63
87
77
92
71
70
90
85
Swift: 72
Java: 73
Python: 81

二维数组初始化
上面例子成绩初始化可以写成这样

 int a[5][3]={ {80,75,92}, {61,65,71}, {59,63,70}, {85,87,90}, {76,77,85} };

对于二维数组初始化赋值还有以下说明1) 可以只对部分元素赋初值,未赋初值的元素自动取0值。
例如:

int a[3][3]={{1},{2},{3}};

是对每一行的第一列元素赋值,未赋值的元素取0值。 赋值后各元素的值为:

1  0  0
2  0  0
3  0  0
int a [3][3]={{0,1},{0,0,2},{3}};

赋值后的元素值为:

0  1  0
0  0  2
3  0  0
  1. 如对全部元素赋初值,则第一维的长度可以不给出。
    例如:
int a[3][3]={1,2,3,4,5,6,7,8,9};

可以写为:

int a[3]={1,2,3,4,5,6,7,8,9};
上一篇 下一篇

猜你喜欢

热点阅读