内容正文:
项目七 数组──歌唱比赛成绩统计及排名
学习目标
掌握数组的基本概念。
掌握数组的定义和初始化方法。
掌握数组的使用方法。
掌握排序算法。
进行程序设计时,经常需要存储或者处理大量相同性质的数据,例如每轮比赛的成绩,班里每个学生的学分,每个月的销售额等,可以利用前面介绍过的普通变量来表示这些数据。但是这会使程序员花大量时间进行变量定义和操作,不利于程序设计。
除了普通变量以外,C语言提供了数组数据类型。它能够解决上面的问题,从本质上来说,数组可以看作批量的变量数据。
本项目介绍C语言中数组的基本概念和使用方法,以及基于数组的排序算法。并以歌唱比赛成绩统计程序的设计过程为例,使读者能够更加深入的了解数组的使用方法和作用。
项目七
数组──歌唱比赛成绩统计及排名
项目七
数组──歌唱比赛成绩统计及排名
任务一 了解数组
任务二 输入10名选手的名字并保存
任务三 输入评委给每位选手打的分
任务四 找到每位选手的最高分
任务五 找到最低分
任务六 去掉最高分和最低分,求每位选手的平均分
任务七 根据选手得分排名次
任务八 输出比赛结果
任务一 了解数组
数组是指一组类型相同并且占据连续空间的数据的有序集合。
数组用连续空间存储同类型的大量数据,所以数据的访问和处理是有规律的。
数组中的每个元素可以看作一个普通变量,可以通过数组名和下标作为变量名进行操作。
一维数组
数组定义方式如下:
元素类型 数组名[常量或者常量表达式];
例如: int a[6];定义了一个存放6个int型数据的数组“a”,“a”是该数组的名字
数组名后面使用中括号“[]”。
中括号“[]”中的内容表示数组大小或者长度,也就是数组中的元素个数,它必须是常量或者常量表达式,不能是变量。
数组中的元素个数必须是大于0的整数。
数组对应内存中一块连续空间,而数组名就代表数组内存的起始地址。数组中各元素的具体结构如下所示。
int b[6];
b[0] b[1] b[2] b[3] b[4] b[5]
数组名还有另外一层含义,那就是数组的起始地址。
1 2 3 4 5 6
数组元素引用的说明
一维数组元素的引用格式为“数组名[下标]”
下标的范围从0开始,到元素个数n-1结束。所以对于有n个元素的数组,它的n个元素分别是a[0],a[1],a[2]…a[n-1]。例如对于数组“char arr[5];”,第1个元素是arr[0],最后1个元素是arr[4],而arr[5]不属于数组。
访问不属于数组元素的操作称为“数组下标越界”,虽然C语言编译器对于下标的越界 访问不会作为错误处理,但是程序员应该自己检查下标的正确性,以免造成错误。
数组元素引用的说明(2)
数组元素可以作为独立的变量,所以能够进行运算以及输入输出操作。
由于数组元素连续存放,下标是连续的整数,所以可以很方便地利用循环语句来访问数组中的每一个元素。例如打印数组“char arr[5];”中的每个元素
char arr[5];
int i;
for(i=0;i<5;i++)
printf("%c",arr[i]);
数组元素不能整体赋值或引用,只能对每个元素单独操作
一维数组初始化的格式为:
类型 数组名[常量或者常量表达式]={初值列表};
其中初值列表中的多个值用逗号间隔。
例如:
int a[6]={1,2,3,4,5,6};
数组元素初始化的几种形式
① 对全部元素初始化
将所有数组元素的初值依次放到初值列表中。
int a[6]={1,2,3,4,5,6};
int a[ ]={1,2,3,4,5,6};
② 对部分元素初始化
只对前面几个元素赋值,其余元素自动设置为“0”。例如“int a[6]={2,4,6};”的结果为“a[0]=2,a[1]=4,a[2]=6,a[3]=0,a[4]=0,a[5]=0”。如果初值个数大于数组元素个数,就会造成语法错误。
二维数组
二维数组则可以看作是数组的数组,每一个元素是类型长度相同的一维数组。
如果将一个一维数组看作顺序排列的一行数据,那么二维数组相当于若干行相同长度的数据排列,也就是M行N列数据,逻辑上像一个“M*N”的矩阵。
二维数组定义的格式为:
类型 数组名[常量或者常量表达式][常量或者常量表达式];
第1个中括号中的值表示第一维长度,也就是行数;第2个中括号的值表示第二维长度,也就是每一行中的列数。
int a[3][4