C案例教程教案(word文档)第六章.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:16 大小:104KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

C案例教程教案(word文档)第六章.doc

C案例教程教案(word文档)第六章.doc

预览

免费试读已结束,剩余 6 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第6章数组的定义和引用6.1一维数组6.1.1一维数组的定义由一组类型相同的相关数据项构造而成的集合称为数组(Array),在内存中占据连续的存储空间。构成数组的数据项称为数组的元素(elementofArray)。同一数组中的元素,具有相同的数据类型。1.一维数组的定义格式:[存储类型]数据类型数组名[数组长度]2.说明:(1)存储类型是auto类型或static类型,缺省时系统默认为auto类型。如果定义为auto类型,数组存放在动态存储区;如果定义为static类型,数组存放在静态数据区。(2)数据类型表示的是数组中各元素的数据类型,可以是任何基本类型和构造类型。但同一数组中的各元素必须属于同一数据类型。(3)数组名的命名应该符合C语言中标识符命名规则。(4)定义数组时,数组的长度是数组中元素的个数,只能用常量或符号常量表示,不能是变量或包含变量的表达式。例:inta[7];表示定义了一个自动存储类型,数组名为a,数组长度为7的整型数组。它是一个变量的集合,a数组中共包含有7个元素。数组元素的下标从0开始,因此a数组中的元素依次为a[0]、a[l]、a[2]、a[3]、a[4]、a[5]、a[6]。a数组在存储时,占用连续的存储单元,存储单元内的值是随机的。如图6-1所示。数组元素:a[0]a[1]a[2]a[3]a[4]a[5]a[6]存储单元:-235-413246684-9336-545图6-1数组a的内存分配图6.1.2一维数组元素的引用对数组元素的引用就是对数组元素的使用,数组定义之后就可以对数组元素引用和操作了。在C语言中,只能逐个引用数组元素,不能一次引用整个数组。一个数组元素就是一个变量,其使用规则与同类型的变量的使用是一样的。数组元素的引用格式:数组名[下标]它表示数组中的某个元素。下标是数组元素在数组中的排列序号,可以是整型常量、变量或表达式。例如:a[0]=a[1]+3+a[2*2]+a[9-3]〖例6-1〗一维数组的定义及引用。程序清单:#include<stdio.h>voidmain(){inti,a[10];/*定义一个整型的一维数组*/for(i=0;i<=9;i++)a[i]=i;/*对数组各元素赋值*/for(i=9;i>=0;i--)printf("a[%d]=%d",i,a[i]);/*逆向输出数组元素的值*/}输出结果:a[9]=9a[8]=8a[7]=7a[6]=6a[5]=5a[4]=4a[3]=3a[2]=2a[1]=1a[0]=06.1.3一维数组的初始化数组的初始化可以在定义时完成,也可以在数组定义之后对数组元素逐个赋值。1.在定义时进行初始化的格式:数据类型数组名[数组长度]={数据1,数据2,…,数据n};例如:doubleb[4]={1.0,3.2,6,5.0};在定义b数组的同时完成了初始化,数组中的每个元素按照先后次序得到相应的赋值,即:b[0]=1.0,b[1]=3.2,b[2]=6.0,b[3]=5.0。2.说明:(1)花括弧中的数据应与定义的类型一致,否则系统会进行自动类型转换。(2)可以只给数组的前面一部分元素赋值。例如:inta[6]={0,3,2};a数组的前3个元素依次得到相应的赋值,而后3个元素则由系统自动赋为0。(3)在对数组全部元素赋值时,可以省略数组的长度。例如:inta[]={0,3,2,6,-9,10,45,78};系统会根据花括弧中初值的个数自动定义a数组的长度为8。对于static类型的未赋初值的数组,系统会自动将数组的全部元素初始化为0;而对于auto类型的数组,C编译器不对其进行初始化,必须在程序中进行初始化。6.1.4一维数组的应用〖例6-2〗输入10个数,输出其中的最大值和最小值。#include<stdio.h>#defineN10voidmain(){inti;floata[N],max,min;printf("input10numbers::\n",N);for(i=0;i<=N-1;i++)scanf("%f",&a[i]);max=min=a[0];for(i=0;i<=N-1;i++){if(a[i]>max)max=a[i];if(a[i]<min)min=a[i];}printf("max=%f\tmin=%f\n",max,min);}程序运行情况如下:input10numbers::1223134525678899034max=90.000000min=2.000000〖例6-3〗用冒泡法实现对10个数排序(升序)。冒泡法排序算法:将待排序的数据