
程序设计在线开放课程 二维数组 主讲:曾志华
二维数组 在线开放课程 主讲:曾志华

一.为什么需要二维数组 语 程序设计 语文 数学 英语 131 143 144 131 135 144 如何存储四个学生的三门课成绩? 127 139 142 123 148 136 第一个学生的成绩数组 Scores1[0] Scores1[1] Scores1[2] 第二个学生的成绩数组 Scores2[0] Scores2[1] Scores2[2] 第三个学生的成绩数组 Scores3[0] Scores3[1] Scores3[2] 第四个学生的成绩数组 Scores4[0] Scores4[1] Scores4[2] > 二维数组
如何存储四个学生的三门课成绩 ? 二维数组 Scores1[0] Scores1[1] Scores1[2] Scores2[0] Scores2[1] Scores2[2] Scores3[0] Scores3[1] Scores3[2] Scores4[0] Scores4[1] Scores4[2] 第一个学生的成绩数组 第二个学生的成绩数组 第三个学生的成绩数组 第四个学生的成绩数组 一.为什么需要二维数组

C榜后程同 二.二维数组的定义和内存的存储形式 程序设计 定义二维数组的一般形式: 类型说明符 数组名[常量表达式1] [常量表达式2] 行下标 列下标 决定了数组的类型 命名规则同简单变量和一维数组 注意:数组中数组元素的个数=常量表达式1*常量表达式2
定义二维数组的一般形式: C语言程序设计课件 类型说明符 数组名[常量表达式1][常量表达式2] 决定了数组的类型 命名规则同简单变量和一维数组 注意:数组中数组元素的个数= 常量表达式1 * 常量表达式2 行下标 列下标 二.二维数组的定义和内存的存储形式

二.二维数组的定义和内存的存储形式 程序设计 C语言编译系统采用按行存储的方法: 内存 即先顺序存放第一行的元素,再存放第二行的元素" num[0][0] 第0行 例如:int num[4][2] num[0][1] num[1][0] num[O][O] num[0][1] 第1行 num[1][1] num[1][0 num[1][1] num[2][0] um[2][0 num [2][1] 第2行 num[2][1] num[3][0] num[3][1] 第3行 num[3][0] num[3][1]
内存 num[0][0] num[0][1] num[1][0] num[1][1] num[2][0] num[2][1] num[3][0] num[3][1] num[0][0] num[0][1] num[1][0] num[1][1] num[2][0] num[2][1] num[3][0] num[3][1] C语言编译系统采用按行存储的方法: 即先顺序存放第一行的元素,再存放第二行的元素…… 第0行 第1行 第2行 第3行 二. 二维数组的定义和内存的存储形式 例如:int num[4][2]

三.二维数组的引用和初始化方法 程序设计 引用格式:数组名[行下标[列下标] 注意: void main() 行下标、列下标均从0开始 inta[3][3]; a[0][o]=0; a[1][0]=1; a[2][2]=2; a3]3]=3:X
引用格式: 数组名[行下标][列下标] 注意: 行下标、列下标均从0开始 三.二维数组的引用和初始化方法 void main() { int a[3][3]; a[0][0] = 0; a[1][0] =1; a[2][2] = 2; a[3][3] = 3; }

三.二维数组元素的引用和初始化方法 程序设计 ta331=12,3,45,6,7,899 等价的 inta3]l3]={1,2,3,4,5,6,7,8,9}; inta33]={3},{6},{9}; ∥只对每一行的第一个元素进行了初始化,其他元素自动取0 inta313]={3,6,9}; /只对整个数组的前3个元素进行了初始化,其他元素自动取0
三.二维数组元素的引用和初始化方法 int a[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}}; int a[3][3] = {1,2,3, 4,5,6, 7,8,9}; int a[3][3] = {{3}, {6}, {9}}; //只对每一行的第一个元素进行了初始化,其他元素自动取0 int a[3][3] = {3,6,9}; //只对整个数组的前3个元素进行了初始化,其他元素自动取0 等价的

三.二维数组元素的引用和初始化方法 语 程序设计 int ar31={1,23,45,6} 1 2 对二维数组的全部元素进行初始化时 3 行数可以省略 编译系统会自动计算出行数。 4 5 6
三.二维数组元素的引用和初始化方法 int arr[ ][3] = { 1,2,3, 4,5,6 }; 对二维数组的全部元素进行初始化时 行数可以省略 编译系统会自动计算出行数。 1 2 3 4 5 6

三.二维数组元素的引用和初始化方法 语 程序设计 int arr[2][]={1,2,3,4,5,6; ☒ 1 2 可以为两行六列,第二行元素全为0 3 可以为两行五列 4 5 6
1 2 3 4 5 6 三.二维数组元素的引用和初始化方法 int arr[2][ ] = { 1,2,3, 4,5,6 }; 可以为两行六列,第二行元素全为0 可以为 可以为两行五列 两行三列

四.二维数组的赋值 语 程序设计 num[il[jl 采用循环结构来表示行标和列标的变化: 0 0 100 int i,j,num[41[2]; 0 200 for(i=0;i<=3;i++) 1 0 300 { 1 1 400 for (j=0;j<=1;j++) 2 0 500 scanf("%d",&num[i][il) 2 1 600 3 0 700 3 1 800
四. 二维数组的赋值 int i, j, num[4][2]; for (i = 0; i <= 3; i++) { for (j = 0; j <=1 ; j++) { scanf("%d",&num[i][j]); } } i j num[i][j] 0 0 100 0 1 200 1 0 300 1 1 400 2 0 500 2 1 600 3 0 700 3 1 800 采用循环结构来表示行标和列标的变化:

五.二维数组的应用举例 语 程序设计 举例:给一个3×3的二维数组赋值,,将其值输出,并求其对角线上的数据之和。 #include void main() int al3131.i.i:int sum =0: fori=0i<3it+)】 for0=0;j<3;jt+) {scanf("%d",&a[i]lj]);} ◆输入数据 for(i=0;i<3;i++) for(j=0;j<3;j++) f printf("%d",a[i][j]); printf("\n"); 输出数据 for(i=0;i<3;i++) sum=sum+a[i];} printf("sum=%d\n",sum); →求和
2023/7/16 举例:给一个3×3的二维数组赋值,,将其值输出,并求其对角线上的数据之和。 五. 二维数组的应用举例 #include void main() { int a[3][3],i,j; intsum = 0; for(i=0;i<3;i++) { for(j=0;j<3;j++) {scanf("%d",&a[i][j]);} } for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%d",a[i][j]); } printf("\n"); } for(i=0;i<3;i++) { sum = sum + a[i];} printf(“sum=%d\n”,sum); } } 输入数据 输出数据 求和