4.1概迷 数组是有序数据的集合。 数组中的每一个元素 什么是 都属于同一个数据类 数組呢? 0型。用一个统一的数 组名和下标來唯一地 确定数组中的元素。 当要对一组数据进行排序、在一组数中査找某个薮据, 矩阵计算等,通常都要用数组來实现
4.1 概述 数组是有序数据的集合。 数组中的每一个元素 都属于同一个数据类 型。用一个统一的数 组名和下标来唯一地 确定数组中的元素。 什么是 数组呢? 当要对一组数据进行排序、在一组数中查找某个数据, 矩阵计算等,通常都要用数组来实现
4.2一维数组 []数组运算符 单目远算符 优先级(1) 4.2.1一维数组的定义和初始化 左结合 不能用() 1.定义:类型说明符数组名[常量表达式] 合法标识符 表示元素个数下标从0开始 2.在内存分配若干连焕空间给数组 内存 int a 6; a al|0」 a a2 编译时分配连续内存 a3 内存字节数=数组长度 数组名表示内存首地址, sizeof((元素数据类型) 是地址常量 a 5
2.在内存分配若干连续空间给数组. 4.2 一维数组 1.定义:类型说明符 数组名[常量表达式]; 4.2.1一维数组的定义和初始化 合法标识符 表示元素个数下标从 0 开始 [ ] 数组运算符 单目运算符 优先级(1) 左结合 不能用( ) 例 int a[6]; 编译时分配连续内存 内存字节数=数组长度* 数组名表示内存首地址, sizeof(元素数据类型) 是地址常量 0 a[0] 1 4 5 a[1] a[2] a[3] a[4] a[5] 2 3 a 内存
例inti=15: int datai; (x不能用变量定义数组长度) 例 int data5; data5]=10;∥×C语言对数组不作越界检查,使用时要注意
例 int i = 15; int data[i]; (不能用变量定义数组长度) 例 int data[5]; data[5] = 10; // C语言对数组不作越界检查,使用时要注意
3.一维数组的初始化 今初始化方式 inta5}={1,213,4,5}准突义数组时,为数组元素赋初 等价于:a0=1;a通陞饔携吝門挈L=5; 说明 ●数组不初始化,其元紊值为随机数 ●只给部分数组元素赋初值 在对全詐教初山旷 不 如inta5={6,2,3};/指定的用0填充 普价=6武門奔P产3唧390严早 辈2.(x ia译制雄知值式数输模鞍维咔度
3. 一维数组的初始化 ❖初始化方式 在定义数组时,为数组元素赋初值 (在编译阶段使之得到初值) int a[5]={1,2,3,4,5}; 等价于:a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5; ❖说明: ⚫数组不初始化,其元素值为随机数 ⚫在对全部数组元素赋初值时,可不指定数组长度 如 int a[5] = {6,2,3};// 未指定的用 0 填充 等价于:a[0]=6; a[1]=2;a[2]=3; a[3]=0; a[4]=0; 如 int a[3] = {6,2,3,5,1}; () ⚫只给部分数组元素赋初值 int a[ ] = {1,2,3,4,5,6}; 编译系统根据初值个数确定数组长度 ⚫如果想使一个数组中全部元素值为0,可以写成: int a[5] = {0,0,0,0,0}; 或 int a[5] = {0};
4.2.2一维数组元素的引用 整型常量 1数组同变量一样,必须先定义后引用整型常量表达式 2引用数组元素的方法是数组名[下标」 3.只能逐个引用数组元素,不能一次引用整个数组 例如:有定义inta[10];可以引用元素的从a[0]到a[9] a[3+5]a[10-10]a[5]=6;a[7]=a[5]++; int a 10; 必须for(j=0:j<10:j++) 循环变量j的作用: print(“%dt”,a[j);(√) 1、控制循环次数 printf(%d”,a); 2、用作数组下标
1.数组同变量一样,必须先定义后引用 2.引用数组元素的方法是:数组名[下标] 4.2.2 一维数组元素的引用 例如: 有定义 int a[10]; 可以引用元素的从a[0]到a[9] a[3+5] a[10-10] a[5]=6; a[7]=a[5]++; 整型常量 整型常量表达式 int a[10]; 必须 for(j = 0;j < 10;j++) printf(“%d\t”,a[j]); () printf(“%d”,a); () 循环变量j 的作用: 1、控制循环次数 2、用作数组下标 3.只能逐个引用数组元素,不能一次引用整个数组
例4-1把数组a的元素依次赋0,10,20,…,90,再把a的 元素值按逆序输出 #include void maino Rint i, a[ 10 printf("input 10 numbers:n); for(i=0;i=0;i-) printf( r("%d",a[i]): 程序运行结果 9080706050403020100
例4-1 把数组a的元素依次赋0,10,20,…,90,再把a的 元素值按逆序输出 #include void main() {int i,a[10]; printf("input 10 numbers:\n"); for(i=0;i=0;i--) printf("%d " ,a[i]); } 程序运行结果: 90 80 70 60 50 40 30 20 10 0
例42利用数组,求斐波拉契数列的前20项。 # nclude" stdio. h“ void maine int fib[20}={1,1} 定义数组 Int 1 for(i=2;i<20;i++) fib=fibi-1+fib[1-2 计算 for(i=0;i<20;计++) {i(i94==0) printf("n”) printf( %12d", ibid; 输出
例4-2 利用数组,求斐波拉契数列的前20项。 定义数组 计算 输出 #include "stdio.h“ void main() { int fib[20]={1,1} int i; for(i=2;i<20;i++) fib[i]=fib[i-1]+fib[i-2]; for(i=0;i<20;i++) { if(i%4==0) printf(“\n”); printf("%12d " ,fib[i]); } }