第四章数组 4.1概述 4.2一维数组 4.3二维数组 4.4字符数组
第四章 数组 4.1 概述 4.2 一维数组 4.3 二维数组 4.4 字符数组
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]); } }
4.3二维数组 4.3.1二维数组的定义和初始化 定义方式: 类型说明符数组名[表达式1][表达式2; 行数 列数 例: float a[3][4],b[5][10];
4.3 二维数组 1.定义方式: 类型说明符 数组名[表达式1][表达式2]; 行数 列数 例:float a[3][4],b[5][10]; 4.3.1 二维数组的定义和初始化