首先通过一个例题来引入数组
求三个学生的平均成绩
#include <stdio.h>
void main()
{
float score,sum,ave;
int i;
sum=0;
for(i=1;i<=3;i++)
{
scanf("%f",&score);
sum=sum+score;
}
ave=sum/30;
printf("%f\n",ave);
}
假设成绩为 1,2,3,运行结果:
改进:
先判断是否大于零,定义a,输入a,a=scanf(),如果a>=0,继续进行。
计数器counter,初始等于0,累加counter++,个数计算通过累加实现。
如果要求输出所有成绩当中比平均成绩高的成绩,就需要将值保存下来,但是保存值需要一个变量,挨个定义变量,输入值,就显得十分麻烦,对于大批量数据,处理时,不能像处理小数据一样定义简单变量去保存,繁重且容易出错,新的处理方式就是数组。
数组:一组数目固定,类型相同的数据项的集合。
数组是计算机编程中的重要概念,运用数组可以方便地处理大规模的数据。
每一个数叫数组元素或者数据项,在内存单元中连续存放,占据连续的内存空间,可以进行批量处理。
第一个位置序号0,依次1,2.....
例如number[0],可以赋值number[0]=a,可以作为变量输出等。
一维数组:数据的线性组织方式
定义
一维数组,是由数字组成的以单纯的排序结构排列的结构单一的数组,是计算机程序中最基本的数组。二维及多维数组可以看作是一维数组的多次叠加产生的。
当数组中每个元素都只带有一个下标时,称这样的数组为一维数组。
数组的定义格式如下:
类型标识符 数组名[常量表达式]
说明:①数组名的命名规则与变量名的命名规则一致
②常量表达式表示数组元素的个数。可以是常量或符号常量,不能为变量。
int a[10]; //数组a的定义是合法的
int a[n]; //若n为变量,则数组a的定义是非法的
要声明类型,即元素的类型,和变量名命名规则一样。要声明长度,即存放元素个数。
int a[10],b[5]
char c[1]
y[4*m] //表达式
性质
一维数组的存储
占据连续的内存空间,整型占4个字节,如果是int a[10],占据4×10个字节,跟数据类型有关,
总字节数=sizeof(数据类型)*数组元素个数
格式
数组名[下标],下标可以是整型常量,整型表达式,从0开始,最大下标是(长度-1),不能越界访问(程序设计的一种严重问题,越界访问,编译器检查不出来)
先定义后使用,和变量一样,可以认为同时定义多个变量
3.引用
逐个引用元素,不能一次引用整个数组
int a[100],b[100]; a=b; //这是非法的
数组名不能与其他变量名相同
int a;
float a[10]; //这是非法的
不能在方括号中用变量来表示元素的个数
int n=5;
int a[n]; //这是非法的
但可以是符号常数或常量表达式
int a[3+2]; //这是合法的
4. 一维数组的初始化:
即定义数组时赋初值
一,数组元素全部赋值,多个初值用逗号分开,大括号{}括起来,按顺序赋值int a[2]={1,2}
二.给部分赋初值,int a[10]={1,2},1赋值给第一个,2赋值给第二个,其他自动为0
三.使数组元素全为0,int a[10]={0};直接写int a[10],不赋值
四.对全部元素赋值,可以不指定即省略数组长度,例如a[]={1,2},系统识别长度为2。
初值个数和数组长度不一样时,不能省略,例如int a[10]={1,2}。