二维数组及其应用

来源:互联网 发布:风靡一时的网络歌曲 编辑:程序博客网 时间:2024/06/03 20:32

一、二维数组的定义与赋值

1、虽然以表格形式显示二维数组,但是实际上二维数组元素在内存中是按行存放的,即先存放下标为0的行,接着下标为1的行。依次类推。
二维数组的存储示意图

二维数组示意图

  • 若行数为m列数为n,则行下标的范围为0~m - 1,列下表的取值范围为0~n - 1。对于m行n列的二维数组,不存在s[m][n]的元素。防止下标越界。
  • 二维数组赋值方法:①可以按行分段赋值,eg: 给一个3行3列的数组赋值,s[m][n] = {{11,12,12},{14,15,16},{17,18,19,}};
    ②也可以垵行连续赋值:eg:s[m][n] = {11,12,12,14,15,16,17,18,19};
    对与上述两种方法,分段赋值相对于连续赋值,更加清晰直观,若数据较多,容易检查疏漏。
  • 若要求每行的最后输出一些处理后的数据,则可以在定义数组时,多一列,计算得到结果后,将结果储存到那一列,就可以了。

二、二维数组的应用

打印出杨辉三角

#include <stdio.h>1    int main ()    {        int num, a,  zu[2][32], i = 0, col = 0, row = 2, kong=0;        scanf("%d", &num);    if(num != 0)    {        for(i = 0;i < num - 1; i++)                                            {            printf(" ");        //输出每行数字出现之前的N-1个空格                                    }            printf("1\n");        for(;row <= num;row++)        {            col = row;            while(kong < num- col)            {                printf(" ");                col++;            }            printf("1");            for(a = 1; a <row - 1; )            {                zu[0][0] = 1;                zu[0][row-2] = 1;                zu[1][a] = zu[0][a-1] + zu[0][a];                printf(" %d", zu[1][a]);                a++;             }            printf(" 1\n");            for(a = 1;a<row;)            {                        zu[0][a] = zu[1][a];                        a++;            }           }    }        return 0;    }

输入5,后的输出结果
二维数组,每行间的配合,协调,完成计算。

有关于数组的术语:

array(数组)
array initializer list(数组初始化)
bar char(柱状图)
bounds checking(边界检查)
m-by-n arraay(m乘n的数组)
multiple-subscripted array
null character ‘\0’ (空字符)
walk off an array(结束数组)

0 0