内容正文:
《C语言学习与应用》教学课件
任务说明
学习数组的定义、数组元素的引用、数组元素的遍历和整齐化输出的方法,在此基础上掌握批量数据的程序设计技能,学习累计、查找、删除、排序等函数的程序设计。
学习任务7 一维数组操作——单科成绩统计
‹#›
知识要求
了解数组的定义。
掌握数组元素和地址的多种表示。
掌握数组元素的遍历方法。
掌握数组输出函数的编写。
掌握数组排序的方法。
学习任务7 一维数组操作——单科成绩统计
‹#›
能力要求
能够用宏定义数组的长度。
能够使用指针变量遍历数组。
能够编写对数组进行简单操作的函数。
能够排查有关数组程序设计中的物理和逻辑错误。
能够自由地书写数组操作的函数和主函数。
学习任务7 一维数组操作——单科成绩统计
‹#›
一维数组
数组是C语言提供的一种最简单的构造类型,每个数组包含一组具有同一数据类型的变量,这些变量在内存中占有连续的存储单元,在程序中这些变量具有相同的名字,但具有不同的下标。
01
任务六 指针操作
学习任务7 一维数组操作——单科成绩统计
‹#›
1.一维数组的定义
“int a[8];”定义了名为a的一维数组,含有八个元素,它们分别是a[0]、a[1]、…、a[7],下标从0开始,每个数组元素都相当于一个整型变量。如“int x,y,z[20];”定义了整型变量x、y和含有20个元素的数组z。
学习任务7 一维数组操作——单科成绩统计
‹#›
2.一维数组元素和地址的表示
若有定义“int a[10];”,则a[0]、a[j]、a[i+k]等都是对数组元素的引用,j和i+k是值为0~9的整数,不能用a代表a[0]~a[9]这十个元素。数组名是地址常量,a是这十个连续存储单元的首地址,a就是&a[0],不能给a赋值,a=a+2是错误的。
学习任务7 一维数组操作——单科成绩统计
‹#›
例如:
int a[10],*p;
p=a; //p是指针变量,可以赋地址值,p=p+1是可以的
以上两句可以缩写为一句“int a[10],*p=a;”,数组元素a[2]的地址可表示为&a[2]、a+2、p+2或&p[2],数组元素a[2]可表示为a[2]、*&a[2]、*(a+2)、*(p+2)和p[2]。
2.一维数组元素和地址的表示
学习任务7 一维数组操作——单科成绩统计
‹#›
3.一维数组的初始化
初始化就是在定义数组的同时为数组元素赋初值,当数组只定义没有赋值时,如果是全局变量,即定义出现在所有函数之外的,则数组中的各元素有初值0;如果是局部变量,即定义在函数体内部的,则各数组元素的初值是随机的。例如,“int a[8]={0,1,2,3,4,5,6,7};”定义的一维数组含有八个元素,a[0]为0,a[1]为1,a[2]为2,……,a[7]为7,花括号中最后一个数的后面没有逗号;“int a[8]={6,7};”定义的一维数组含有八个元素,a[0]为6,a[1]为7,a[2]~a[7]均为0,只能给数组前面若干个元素赋值,后面没赋值的均为0;“int a[ ]={6,7};”定义的一维数组含有两个元素,a[0]为6,a[1]为7,这是通过赋值的同时定义了数组的长度是2。
学习任务7 一维数组操作——单科成绩统计
‹#›
定义数组时,能对数组元素整体赋值,而在可执行语句中,只能对数组元素逐个赋值。如“a[0]=1;a[1]=4;”是正确的,而写成“a[4]={1,2,3,4};”就错了。
3.一维数组的初始化
学习任务7 一维数组操作——单科成绩统计
‹#›
02
微课
一维数组的初始化
任务六 指针操作
学习任务7 一维数组操作——单科成绩统计
‹#›
一维数组的操作
一维数组的操作是建立在对一维数组遍历的基础上,如N代表数组元素的个数,i为整型变量,对数组a遍历的简单语句形式是“for(i=0;i<N;i++) a[i];”,将a[i]写在输入函数中就是依次给数组元素赋值,将a[i]写在输出函数中就是依次输出数组元素,写在其他语句中,就是依次对数组元素进行相应的操作。
对数组的操作多数是用函数实现的,突出了模块化的设计思想,普遍用法为实参是数组名,传递的是地址值,形参是能接收地址的指针变量,在函数中通过间接引用就可以访问主函数中的数组元素。
02
任务六 指针操作
学习任务7 一维数组操作——单科成绩统计
‹#›
02
微课
一维数组的操作
任务六 指针操作
学习任务7 一维数组操作——单科成绩统计
‹#›
例
int a[10];
fun(a); //这就是用数组名做实