第7章 一维数组应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
x++; else if (a[i]==0) y++; else z++; } printf (“%d\t%d\t%d”,x,y,z); }
运行结果: 运行结果: 3 2 5
第七章 数组
2、下列程序是对一维数组的10个元素的前五个与后五个首尾对换即 、下列程序是对一维数组的 个元素的前五个与后五个首尾对换即 a[0]与a[9] 、a[1]与a[8]……a[4]与a[5],请阅读程序并补充程序。 与 与 与 ,请阅读程序并补充程序。 void main ( ) { int i, t,a[10]={3,5,7,9,11,18,16,14,12,10}; for (i=0;i<10;1++) printf (“a[%d]=%-4d”,i,a[i]); printf (“\n”); for ( i=0 ; i<4 ; i++ ) { ; t=a[i]; ; a[i]=a[9-i]; a[9-i]=t; ; } for (i=0;i<10;1++) printf (“a[%d]=%-4d”,i,a[i]); }
第七章 数组
4、如果全部元素均指定初值,定义中可以省略元素的个数, 如果全部元素均指定初值,定义中可以省略元素的个数, 可以省略元素的个数 例: static int a[5] = {1,2,3,4,5}; 可以写为: 可以写为: static int a[ ] = {1,2,3,4,5}; 两种写法一样效果, 两种写法一样效果,系统会自动根据元素的个数来确定数组的 大小,但是如果是局部制定元素值则不能省略长度值。例如: 大小,但是如果是局部制定元素值则不能省略长度值。例如: {1,2,3};不可以写为 不可以写为: static int a[5] = {1,2,3};不可以写为: {1,2,3};这样系统会自动根据初始值 static int a[ ] = {1,2,3};这样系统会自动根据初始值 个数来认为数组只含有三个元素,即默认其长度为3 个数来认为数组只含有三个元素,即默认其长度为3。 5、与给变量初始化不同的是给数组初始化只能在定义时进行, 与给变量初始化不同的是给数组初始化只能在定义时进行, {1,2,3};不能写成 不能写成: 如: static int a[5] = {1,2,3};不能写成: static int a[5]; a[5] = {1,2,3};(因为a[5]指单个元素) {1,2,3};(因为a[5]指单个元素) a[5]指单个元素
第七章 数组
7.1.3 数组元素的引用 语言规定,不能引用整个数组 只能逐 整个数组, C语言规定,不能引用整个数组,只能逐 个引用元素,元素引用方式: 个引用元素,元素引用方式: 数组名[下标表达式] 数组名[下标表达式] 例:a[0] = a[5] + a[7] - a[2*3] 下标表达式”可以是任何非负整型数据, “ 下标表达式 ” 可以是任何非负整型数据 , 取值范围是0 元素个数取值范围是0 ~ (元素个数-1)。
第七章 数组
5) C编译程序为数组分配了一片 连续 的空间 。 ) 编译程序为数组分配了一片 连续的空间 编译程序为数组分配了一片连续 的空间。 每个元素占用一个类型长度的空间, 每个元素占用一个类型长度的空间,空间的大 类型长度*数组长度 小=类型长度 数组长度。例 int a[10];在内存 类型长度 数组长度。 在内存 开辟的空间大小为20B( int的类型长度 ) *10 的类型长度) 开辟的空间大小为 ( 的类型长度 数组长度) 其中每个元素占2B (数组长度),其中每个元素占 6) 类型说明 : 指的是 数据元素 的类型 , 可以是 数据元素的类型 ) 类型说明: 指的是数据元素 的类型, 基本数据类型,也可以是构造数据类型。 基本数据类型,也可以是构造数据类型。类型 说明确定了每个数据占用的内存字节数,系统 说明确定了每个数据占用的内存字节数, 将根据数组类型和数组长度值的乘积来给数组 分配连续长度的内存空间。 分配连续长度的内存空间。 如下例: 如下例:
第七章 数组
但是不能简写为: 但是不能简写为: static int a[10] = {0*10}; 注意:当程序不给数组指定初始值时, 注意:当程序不给数组指定初始值时, 编译器作如下处理: 编译器作如下处理: (1)编译器自动把静态数组的各元素初 始化为0 始化为0。 (2)编译器不为动态数组自动指定初始 值。
第七章 数组
例如:一维数组: 例如:一维数组: mark[100]; float mark[100]; 低地址 每个数据元素占用 的字节数,就是基 的字节数,就是基 类型的字节数 类型的字节数 一个元素占4个 一个元素占 个字节
高地址
86.5 92.0 77.5 52.0
. . . 94.0
mark[0] mark[1] mark[2] mark[3]
Hale Waihona Puke Baidu
第七章 数组
1、一般初始化,把全体元素在定义时初始化,例: 一般初始化,把全体元素在定义时初始化, static int a[10]= { 0,1,2,3,4,5,6,7,8,9} {1,2,3,4,5,6,7,8,9,10}; 和int array[10] = {1,2,3,4,5,6,7,8,9,10};但 {}中元素个数不能超出数组长度 中元素个数不能超出数组长度。 是{}中元素个数不能超出数组长度。 部分元素初始化,其余元素均为零。 2、部分元素初始化,其余元素均为零。 {0,1,2,3,4}; 例:static int a[10] = {0,1,2,3,4}; 仅前5个元素赋初值, 个元素自动赋为0 仅前5个元素赋初值,后5个元素自动赋为0。 全部元素均初始化为0 例如: 3、全部元素均初始化为0。例如: static int a[10] = {0,0,0,0,0,0,0,0,0,0}; 可以简写成: 可以简写成:int a[10]={0}; [ ]
第七章 数组
第7章 数组
7.1 一维数组
7.1 一维数组 数组是一组有序数据的集合 有序数据的集合, 数组是一组有序数据的集合,数组中每一个元 素的类型相同 类型相同。 数组名和下标来唯一确定数 素的类型相同。用数组名和下标来唯一确定数 组中的元素。 组中的元素。 7.1.1 一维数组的定义(先定义后使用) 一维数组的定义(先定义后使用)
. . . mark[99]
第七章 数组
7.1.2 一维数组的初始化 .1.2 初始化:在定义时指定初始值 指定初始值, 初始化:在定义时指定初始值,编译器把初值 赋给数组元素变量。例如: 赋给数组元素变量。例如: a[10]={0,1,2,3,4,5,6,7,8,9}; int a[10]={0,1,2,3,4,5,6,7,8,9}; 赋值:使用赋值语句, 赋值:使用赋值语句,在程序运行时把值赋给 数组元素变量。例如: 数组元素变量。例如: int a[10];a[0] = 2; 初始化格式: 初始化格式: 数组名[常量表达式] 初值表} 数据类型 数组名[常量表达式]={初值表}; 初始值有多个时,值之间用逗号分隔。 初始值有多个时,值之间用逗号分隔。
第七章 数组
一维数组的应用: 一维数组的应用:
1、读程序写结果: 、读程序写结果:
一维数组的应用即对元素的引用有哪些? 一维数组的应用即对元素的引用有哪些? void main () 1、通常与 循环结合使用。 循环结合使用。 、通常与for循环结合使用 {、一维数组的输出。 int x,y,z; 2、一维数组的输出。 int ( ]={-4,0,10,2,7,-1,19,-22,33,0}; a[ 正序、逆序) 正序、逆序) 3、数组元素赋值。 、数组元素赋值。 x=y=z=0; 通过键盘赋值, for通过键盘赋值, (i=0;i<10;i++) 通过程序运行中获取值 { if (a[i]<0) 利用rand()函数获取值,等办法。 ()函数获取值 利用 ()函数获取值,等办法。
数组定义的一般形式: 数组定义的一般形式:
数组名[整型常量表达式 整型常量表达式] 类型说明符 数组名 整型常量表达式 例: int a[10]
第七章 数组
表示以下信息: int a[10] 表示以下信息: 定义一个数组,数组名a 10个元素 个元素, 定义一个数组,数组名a,有10个元素,每个元素的类型均为 int。 int。 10个元素分别是 a[0]、a[1]、....、a[8]、a[9]。 个元素分别是: 这10个元素分别是:a[0]、a[1]、....、a[8]、a[9]。 各个数组元素是排成一行 的一组下标变量, 排成一行的一组下标变量 各个数组元素是 排成一行 的一组下标变量 , 用一个统一的 数组名来标识,用一个下标来指示其在数组中的位置。 数组名来标识,用一个下标来指示其在数组中的位置。 说明: 说明: 数组下标从0开始。 数组a的第1个元素是a[0] a[0], 1)数组下标从0开始。如:数组a的第1个元素是a[0],数组 的第8个元素是a[7]数组a[n] 中的元素从a[0]到 a[n-1]共 的第8个元素是a[7]数组a[n] 中的元素从a[0]到 a[n-1]共 a[7]数组 a[0] n个。 2)C语言不允许对数组的大小做动态定义,如: 语言不允许对数组的大小做动态定义, int n; scanf("%d",&n); int a[n]; 因为在编译时, 编译器根据已知数组大小分配内存 编译器根据已知数组大小分配内存, 因为在编译时,C编译器根据已知数组大小分配内存,以后 不再动态调整。 不再动态调整。
第七章 数组
特别强调:
1.
2.
3. 4.
在运行C语言程序过程中,系统并不自动检验 并不自动检验数组元 在运行 C 语言程序过程中,系统 并不自动检验数组元 素的下标是否越界 因此在编写程序时, 越界。 素的下标是否越界。因此在编写程序时,保证数组下 标不越界是十分重要的。 标不越界是十分重要的。 个数组元素,实质上就是1个变量, 1 个数组元素 , 实质上就是1 个变量 ,它具有 和相同 类型简单变量一样的属性, 类型简单变量一样的属性,可以对它进行赋值和参与 各种运算。 各种运算。 语言中,数组作为1个整体,不能参加数据运算, 在C语言中,数组作为1个整体,不能参加数据运算, 单个的元素进行处理 只能对单个的元素进行处理。 只能对单个的元素进行处理。 通常用数组和循环配合使用,来引用数组元素。 通常用数组和循环配合使用,来引用数组元素。
第七章 数组
使数组元素a[0] a[9]的值为 a[0]~ 的值为0 然后逆序输出。 [例6.1] 使数组元素a[0]~a[9]的值为0~9,然后逆序输出。 main() { int i,a[10];/*定义一个含有 个元素的 数组 定义一个含有10个元素的 数组*/ 定义一个含有 个元素的a数组 for (i=0;i<=9;i++) a[i] = i; /*用for循环定义一个含有 个元素的a数组 用 循环定义一个含有10个元素的 数组 循环定义一个含有 个元素的 */ for(i=9;i>=0; i--) /*用for循环逆序输出 数组 个元 循环逆序输出a数组 用 循环逆序输出 数组10个元 素*/ printf("%d ",a[i]); } 运行结果: 运行结果: 9 8 7 6 5 4 3 2 1 0
第七章 数组
3) 数组名 : 数组名也是标识符 , 所以对数组名 ) 数组名: 数组名也是标识符, 标识符规则。 的命名也应该按标识符规则 的命名也应该按标识符规则。 4) 整型常量表达式 : 表示数组元素 个数 ( 数组 个数( ) 整型常量表达式: 表示数组元素个数 长度) 可以是整型常量或符号常量 符号常量, 的长度)。可以是整型常量或符号常量,不允 许用变量。 许用变量。整型常量表达式在说明数组元素个 数的同时也确定了数组元素下标的范围, 同时也确定了数组元素下标的范围 数的同时也确定了数组元素下标的范围,下标 开始~ 从0开始~整型常量表达式的值 开始 整型常量表达式的值-1 提醒: 提醒: C语言 不检查数组下标越界 , 但是使用时 , 一 语言不检查数组下标越界 语言 不检查数组下标越界, 但是使用时, 不能越界使用 否则结果难以预料, 使用, 般不能越界使用,否则结果难以预料,轻则影 响程序运行结果,重则导致系统无法运行。 响程序运行结果,重则导致系统无法运行。本 例数组元素个数是10个 下标从0-9。 例数组元素个数是 个,下标从 。
相关文档
最新文档