您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > C语言第6章2二维数组.
1122主要内容1.数组概述2.一维数组3.二维数组4.字符数组5.结构体类型33二维数组一、二维数组的定义二、二维数组的引用三、二维数组的初始化四、二维数组元素在内存中的排列顺序五、应用举例44一、二维数组的定义格式:数组类型名数组名[数组元素个数][数组元素个数]例:floata[5][4];intb[5][6];charstr[30][20];二维实数数组,5行、4列二维整数数组,5行、6列二维字符数组,30行、20列第一维第二维55floata[5][4];列行二维实数数组:5行、4列1.02.03.04.05.06.07.08.09.010.011.012.013.014.015.016.017.018.019.020.0矩阵A01234012366二维数组在内存中的存放过程:floata[5][4];1.002.003.004.005.006.007.008.009.0010.011.012.013.014.015.016.017.018.019.020.01.002.003.004.005.006.00...…18.019.020.077charstr[30][20]在内存中的存放过程:MarryHarryPhilipBushLinda0123401342…88二、数组的引用格式:数组名[行下标][列下标];例:b[3][2]:b数组第4行第3列的元素;a[i][j]:a数组第i+1行第j+1列的元素;注意:数组的下标从0开始计数99对数组的操作是通过对每个数组元素的处理来实现的:二维数组的输入intb[3][2];printf(pleaseenterthedata:\n)for(i=0;i3;i++)for(j=0;j2;j++)scanf(%d,&b[i][j]);内循环外循环每一个数组元素怎样输入数据,能保证输入正确?1.02.05.06.09.010.0矩阵b1.程序中语句的写法2.计算机处理读入数据的方法for(i=0;i3;i++)for(j=0;j2;j++)scanf(%d,,&b[i][j]);b[0][0],b[0][1],b[1][0],b[1][1],b[2][0],b[2][1]1b[0][0]intb[3][2];for(i=0;i2;i++)for(j=0;j3;j++)scanf(%d,&b[j][i]);1.02.05.06.09.010.0矩阵b如果,输入程序如下所示:那么,1.输入的数组元素的顺序如何?1.02.输入的数据应以怎样的顺序排列?、b[1][0]、b[2][0]、b[0][1]、b[1][1]、b[2][1]5.09.02.06.010.0212输出数组intb[3][2];for(i=0;i3;i++){for(j=0;j2;j++)printf(b[%d][%d]=%d,i,j,b[i][j]);printf(\n);}输出结果形式如何?b[0][0]=1.0b[0][1]=2.0b[1][0]=5.0b[1][1]=6.0b[1][0]=9.0b[1][1]=10.01313如果输出程序改为:intb[3][2];for(i=0;i2;i++){for(j=0;j3;j++)printf(b[%d][%d]=%d\t,j,i,b[j][i]);printf(\n);}b[0][0]=1.0b[0][1]=2.0b[0][2]=5.0b[1][0]=6.0b[1][1]=9.0b[1][2]=10.0输出结果形式如何?四、二维数组的初始化1.分行赋初值inta[2][3]={{1,2,3},{4,5,6}};123456aA[0][0]A[0][1]A[0][2]A[1][0]A[1][1]A[1][2]第一行第二行15四、二维数组的初始化2.不分行赋初值intb[2][3]={1,2,3,4,5,6};1616对部分元素赋初值intc[2][4]={{0,2},{3}};未赋值的元素自动赋值0,而且前面的0不能省,后面的0可以省对全部元素赋初值,省略第一维的长度inta[][2]={{1,2},{3,4}};第一维的长度由初始化状态决定。本例为:2行四、二维数组的初始化1717二维数组:定义:数组元素的类型、数组变量名称、数组的维数、每一维数组元素的个数;引用:数组型变量必须先定义,后使用。只能逐个引用数组元素,不能直接引用整个数组型变量。数组下标从0开始。用二维数组编程时,可以这样思考:1.在存储器中有一片连续的内存区,名称为a。它对应一个m行n列的矩阵。2.将需要处理的一组数据,依次放入这片连续内存区的每一个单元中。对应的名称分别为:a[0][0]a[0][1]a[0][2]……a[0][n-1]3.根据问题的需要,对这组数据中的每一个数据元素进行相应的处理,处理时的访问方式为:a[i][j],即:数组a中行下标为i列下标为j的位置处的数组元素。a[1][0]a[1][1]a[1][2]……a[1][n-1]a[m-1][0]a[m-1][1]a[m-1][2]……a[m-1][n-1]……1919二维数组一、二维数组的定义二、二维数组的引用三、二维数组的初始化四、二维数组元素在内存中的排列顺序五、应用举例20201.定义三个二维数组:a[3][4],b[3][4],c[3][4];for(i=0;i3;i++)for(j=0;j4;j++)scanf(%d,&b[i][j]);3.输入b矩阵的元素值:for(i=0;i3;i++)for(j=0;j4;j++)scanf(%d,&a[i][j]);2.输入a矩阵的元素值:1.求两个3*4矩阵的和。21214.计算c矩阵的元素值:5.输出矩阵a、b、cfor(i=0;i3;i++)for(j=0;j4;j++)c[i][j]=a[i][j]+b[i][j];for(i=0;i3;i++){for(j=0;j4;j++)printf(%6d,a[i][j]);printf(\n);}1.求两个3*4矩阵的和。for(i=0;i3;i++){for(j=0;j4;j++)printf(%6d,b[i][j]);printf(\n);}for(i=0;i3;i++){for(j=0;j4;j++)printf(%6d,c[i][j]);printf(\n);}222324242.将一个4*3的矩阵转置。(1)定义两个二维数组:a[4][3],b[3][4];for(i=0;i4;i++)for(j=0;j3;j++)scanf(%d,&a[i][j]);(2)输入a矩阵的元素值:25252.将一个4*3的矩阵转置。(4)输出矩阵a、b:for(i=0;i3;i++){for(j=0;j4;j++)printf(%6d,b[i][j]);printf(\n);}for(i=0;i4;i++)for(j=0;j3;j++)b[j][i]=a[i][j];(3)计算a矩阵的转置:第二题:编程。求一个3*3的整型矩阵的对角线元素的和。要求:(1)使用二维数组,数组元素由键盘输入;(2)以3*3的格式输出矩阵里的数据;(3)最后输出对角线元素之和。28
本文标题:C语言第6章2二维数组.
链接地址:https://www.777doc.com/doc-4414492 .html