
初识数组
如何记录很多次输入的数?——数组
定义数组:
int number [100] ;//定义数组 数组大小为100
//定义了一个变量叫number,这个变量是一个数组,这个数组的每个单元都是一个int,数组的大小是100(可以放100个int)
number [cnt] = x;//对数组里的元素赋值:number数组里面的第cnt个元素赋值为x
遍历:
就是将数组里的每个元素都过一遍或者规定的范围内过一遍。一般从0开始!!!

数组的具体
定义数组
<类型>变量名称[元素数量];
如int grades[100] //grade[ ]里面的每一个元素都是int
double weight [20]
需要注意的是:元素数量必须是整数
// C99之前元素数量必须在编译时确定,C99之后可以用变量来定义数组大小
数组的含义
是一种容器(放东西的东西) ,有一些特点:
所有的元素都是同一类型,在定义数组时就定义好了
一旦创建就不能改变其大小
在计算机内部内存中数组中的元素是按照顺序依次排列的
编程语言可提供容器能力的大小和语言能力大小相挂钩
具体示例:
int a[10];
一个int类型的数组
其中有10个单元,依次为a[0],a[1],a[2]...a[9]
每个单元都是一个int型变量

a[2]=a[1]+2; //a[1]的值读出来 +2以后,写入到a[2]
像这样,数组单元可以出现在赋值号的左边或右边,左边称左值,右边称右值
数组的下标 a[1] a[2]
我们将使用数组时放在[ ]中的数字叫做下标或索引,下标从0开始计数
数组单元从0开始,最大下标是数组大小减一。
数组越界?
有效的下标范围
segementation fault——数组下标越界
因此程序员必须保证只使用有效的下标值:[0,数组大小-1]
这次运行ok 下次运行不行;在我电脑上可以,在你电脑上不行——数组越界/指针出错
int a[10];
a[10]=0;
//a[10]数组最大单元是a[9],越界了
是否能创建一个长度为0的数组?//可以,但没必要:),当定义一个长度为0的数组如a[0],其下标最大为-1,可以编译,但没有任何用处
数组例子:统计个数
需要记录每个数字吗?当然不需要,只需要记录每个数字出现的次数。
#include<stdio.h>
int main(void)
{
int x;
const int NUMBER = 10;//定义数组大小
int count[NUMBER];//定义数组
int i;
for(i=0;i<NUMBER;i++)
{
count[i]=0;
} //初始化数组 让数组里面的每一个元素都等于0!!! 必须初始每一个数组!!!
scanf("%d",&x);//读入的数字作为下标
while( x! = -1 )//当输入-1时停止读入
{
if(x>=0&&x<=9)//如果0-9 有效区间内
{
count[x]++;//数组参与运算,count[3]从0加到1
}
scanf("%d",&x);//每次都要继续要求输入!!!!!!
}
for(i=0;i<NUMBER;i++)//遍历数组 依次输出
{
printf("%d出现了%d次",i,count[i]);
}
return 0;
}
用到数组的必要环节
数组大小——定义数组——初始化数组——数组参与运算——遍历数组输出
