内容正文:
《C语言学习与应用》教学课件
任务说明
学习二维数组的定义,数组元素的引用、遍历和整齐化输出的方法,在此基础上掌握批量数据的程序设计。
学习任务8 二维数组操作——多科成绩统计
‹#›
知识要求
了解二维数组的定义和下标变量的范围。
掌握二维数组元素和地址的多种表示方法。
掌握二维数素元素的遍历方法。
掌握二维数组输出函数的编写。
了解针对二维数组操作的函数的编写。
学习任务8 二维数组操作——多科成绩统计
‹#›
能力要求
能够用宏定义二维数组的范围。
能够定使用指针变量遍历二维数组。
能够编写对二维数组操作的函数。
能够排查有关二维数组程序设计中的物理和逻辑错误。
能够自由地书写二维数组操作的函数和主函数。
学习任务8 二维数组操作——多科成绩统计
‹#›
二维数组的定义和初始化
1.二维数组的定义
二维数组就是若干个一维数组,对二维数组的操作就是多次对一维数组的操作,一维数组的遍历是一层循环,二维数组的操作就是循环的嵌套了。
01
学习任务8 二维数组操作——多科成绩统计
‹#›
定义了一个名为a的二维数组,在内存中占有12个连续的存储单元,顺序是a[0][0],a[0][1],a[0][2],a[0][3],a[1][0],a[1][1]…a[2][3],如图8-1所示。
int a[3][4];
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]
可以将二维数组理解为一个矩阵,本例是3行4列的矩阵,行下标的变化范围是0~2,列下标的变化范围是0~3。
1.二维数组的定义
图8-1 二维数组存储示意图
学习任务8 二维数组操作——多科成绩统计
‹#›
微课
二维数组的定义
任务六 指针操作
学习任务8 二维数组操作——多科成绩统计
2.二维数组元素的引用
如有定义“double w[4][2];”,则w[1][0]、w[i][j]、w[i+j][k]等均是合法的引用,只要有两个方括号,方括号中的表达式值为整数且在允许的范围内即可。
学习任务8 二维数组操作——多科成绩统计
‹#›
3.二维数组的初始化
int a[3][3]={{1,2},{4,2}};
只给前两行的前两个元素赋值,其余元素均为0。
int a[4][3]={1,2,4,5};
按存储顺序给a[0][0],a[0][1],a[0][2],a[1][0]分别赋值1、2、4、5,其余元素值均为0。
int a[ ][3]={{1,2,3},{4,5}};
可以省略第一个方括号中的常量表达式,不能省略第二个方括号中的常量表达式,本例中第一个方括号中的隐含值是2。
学习任务8 二维数组操作——多科成绩统计
‹#›
应用举例8-1:二维数组的基本操作:输入和输出。
#include "stdio.h"
#include "stdlib.h"
#define M3 //用宏定义二维数组的行数
#define N4 //用宏定义二维数组的列数
void main( )
{
int a[M][N],i,j;
for(i=0;i<M;i++) //对二维数组搜一遍,是两层循环
for(j=0;j<N;j++)
a[i][j]=rand( )%100; //为二维数组元素赋0~99的随机值
for(i=0;i<M;i++)
{
学习任务8 二维数组操作——多科成绩统计
‹#›
for(j=0;j<N;j++)
printf("%3d",a[i][j]);
printf("\n"); //每输出一行换一行
}
getchar( );
}
应用举例8-1:二维数组的基本操作:输入和输出。
程序输出:41 67 34 0
69 24 78 58
62 64 5 45
学习任务8 二维数组操作——多科成绩统计
‹#›
课堂思考问题8-1
将程序代码补充完整,输出3行3列的方阵。
任务六 指针操作
学习任务8 二维数组操作——多科成绩统计
#include “stdio.h”
#define M3
void main( )