二维数组的小秘密

相信大家对于一维数组有一定的了解,那么什么是二维数组呢?

数组可以看做一行连续的数据,只有一个下标的称为一维数组,那么可以猜想多维数组有多个下标,其实就是如此,所以这里要讲的二维数组就是有两个下标的数组。

二维数组的定义形式是:数据类型   数组名[一维长度][二维长度]

在一维数组中如何排列二维数组呢?其实二维数组内存的地址也是连续的,分两种方式:

①按行排列,先放入第一行再顺次排列第二行,依次下去;

②按列排列,先放入第一列再顺次排列第二列,依次下去。

对于二维数组赋值来简单介绍一下:

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


这是二维数组打印平均成绩的一个实例(注释应该都看得懂):
#include <stdio.h>
int main(){
    int i, j;  //二维数组下标
    int sum=0;  //当前科目的总成绩
    int average;  //总平均分
    int v[3];  //数学,C语言,英语三科的平均分数组
    int a[5][3];  //用来保存每个同学各科成绩的二维数组
    printf("Input score:\n");
    for(i=0; i<3; i++){
        for(j=0; j<5; j++){
            scanf("%d", &a[j][i]);  //输入每个同学的各科成绩
            sum+=a[j][i];  //计算当前科目的总成绩
        }
        v[i]=sum/5;  // 当前科目的平均分
        sum=0;
    }
    average =(v[0]+v[1]+v[2])/3;   //总平均分
    printf("Math: %d\nC Language: %d\nEnglish: %d\n", v[0], v[1], v[2]);//单科的平均分分开打印
    printf("Total:%d\n", average);  
    return 0;  //定义的int类型函数,必须要有返回值。
}

程序中首先用了一个双重循环。在内循环中依次读入某一门课程的各个学生的成绩,并把这些成绩累加起来,退出内循环后再把该累加成绩除以5送入v[i]之中,这就是该门课程的平均成绩。外循环共循环三次,分别求出三门课各自的平均成绩并存放在v数组之中。退出外循环之后,把v[0]、v[1]、v[2]相加除以3即得到各科总平均成绩。最后按题意输出各个成绩。

对于二维数组初始化赋值还有以下说明:
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

2) 如对全部元素赋初值,则第一维的长度可以不给出。例如:
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};

3) 数组是一种构造类型的数据。二维数组可以看作是由一维数组的嵌套而构成的。设一维数组的每个元素都又是一个数组,就组成了二维数组。当然,前提是各元素类型必须相同。根据这样的分析,一个二维数组也可以分解为多个一维数组。C语言允许这种分解。

如二维数组a[3][4],可分解为三个一维数组,其数组名分别为:a[0]、a[1]、a[2]。

对这三个一维数组不需另作说明即可使用。这三个一维数组都有4个元素,例如:一维数组a[0]的元素为a[0][0], a[0][1], a[0][2], a[0][3]。必须强调的是,a[0], a[1], a[2]不能当作下标变量使用,它们是数组名,不是一个单纯的下标变量。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值