一维数组的定义课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《一维数组的定义课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 定义 课件
- 资源描述:
-
1、一、一维数组的定义一、一维数组的定义 定义方式:定义方式:类型说明符类型说明符 数组名数组名整型常量表达式整型常量表达式;例:例:int a10;说明:说明:数组名的定名规则和变量名相同,遵循标识符定名规数组名的定名规则和变量名相同,遵循标识符定名规 则。则。数组名后的常量表达式用数组名后的常量表达式用 括起来。括起来。常量表达式表示数组元素的个数,即数组长度。常量表达式表示数组元素的个数,即数组长度。例:例:a10表示数组表示数组a中包括中包括10个元素,分别为个元素,分别为 a0a9 第第6 6章章 数数 组组6.1.1 6.1.1 一维数组的定义和引用一维数组的定义和引用a0 a2 a4
2、 a6 a8 a1 a3 a5 a7 a9二、一维数组元素的引用二、一维数组元素的引用 数组必须先定义,然后使用。数组必须先定义,然后使用。C语言规定只能语言规定只能逐个逐个引用数引用数组元素而不能一次引用整个数组。组元素而不能一次引用整个数组。引用形式为:引用形式为:数组名数组名下标下标 常量表达式中可以包括常量和符号常量,不能包含变常量表达式中可以包括常量和符号常量,不能包含变 量,即定义时必须确定数组的大小。量,即定义时必须确定数组的大小。例例1.1 main()int i,a10;for(i=0;i=9;i+)ai=i;for(i=0;i=0;i-)ai);(i=0;i=9;i+)a9
3、-i);int n;scanf(%d,&n);int an;通过赋值语句给通过赋值语句给数组元素赋值数组元素赋值例例1.2 main()int i,a10;for(i=0;i=9,i+)scanf(%d,&ai);for(i=0;i=9;i+)printf(%4d,a9-i);三、一维数组的初始化三、一维数组的初始化 可以用可以用赋值语句赋值语句或或输入语句输入语句使数组中的元使数组中的元素得到值,但占运行时间,同时也可以使数组素得到值,但占运行时间,同时也可以使数组在程序运行之前初始化,即在编译期间使之得在程序运行之前初始化,即在编译期间使之得到初值。到初值。通过输入语句给通过输入语句给数组
4、元素赋值数组元素赋值对数组元素的初始化可以用以下方法实现:对数组元素的初始化可以用以下方法实现:在定义数组时,对数组元素赋以初值。在定义数组时,对数组元素赋以初值。如:如:int a10=0,1,2,3,4,5,6,7,8,9;可以只给一部分元素赋值。可以只给一部分元素赋值。如:如:int a10=0,1,2,3,4;表示只给前表示只给前5个元素赋初值,后个元素赋初值,后5个元素自动赋以个元素自动赋以0值。值。对对static数组不赋初值,系统会对所有元素自动赋数组不赋初值,系统会对所有元素自动赋以以0值。值。即即,如果想使数组如果想使数组a中全部元素值为中全部元素值为0,可以这样定,可以这样
5、定义数组义数组:static int a5 a0 a2 a4 a1 a30 0 0 00 也可以也可以 int a5=0;例例2用数组来处理求用数组来处理求Fibonacci数列问题数列问题(求前求前40项项)在对全部数组元素赋初值时,可以不指定数组长度。在对全部数组元素赋初值时,可以不指定数组长度。int a5=1,2,3,4,5;int a =1,2,3,4,5;1100000000.f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 .235813213455static static main()int i;static long int f40=1,1;for(i=2;i40
6、;i+)fi=fi-2+fi-1;for(i=0;i40;i+)if(i%5=0)printf(n);printf(%12ld,fi);例例3将将n个整数按逆序重放在数组中个整数按逆序重放在数组中(n=50)。算法算法:设设n n=7=734526176650t3503456645217234526176650t=xi;xi=xn-i-1;xn-i-1=t;x0 x1 x2 x3 x4 x5 x6main()int x50,t,n,i;scanf(%d,&n);for(i=0;in;i+)scanf(%d,&xi);for(i=0;i=(n-1)/2;i+)t=xi;xi=xn-1-i;xn-
7、1-i=t;for(i=0;in;i+)printf(%5d,xi);printf(n);程序:程序:main()int x50,t,n,i,j;scanf(%d,&n);for(i=0;in;i+)scanf(%d,&xi);for(i=0,j=n-1;ij;i+,j-)t=xi;xi=xj;xj=t;for(i=0;in;i+)printf(%5d,xi);printf(n);程序:程序:6.1.2 6.1.2 一维数组的应用一维数组的应用1.1.冒泡排序算法冒泡排序算法:用冒泡法对10个数排序(1)从数组A1到A10,把相临的两个数两两进行比较。即A1和A2比较,比较完后,A2再与A3比
8、较,最后是A9和A10比较。(2)在每次进行比较的过程中,如果前一个数比后一个数大,则对调两个数,也就是说把较大的数调到后面,较小的调到前面。比如在第一次的比较中,如果A1比A2大则A1和A2的值就互换。下图用6个数据来说明以上的算法。假设假设6个数据是:个数据是:A1 A2 A3 A4 A5 A6 5 7 4 3 8 6 第一次,第一次,A1和和A2比较,比较,54,进行对调,进行对调,5 4 7 3 8 6 第三次,第三次,A3和和A4比较,比较,73,进行对调,进行对调,5 4 3 7 8 6第四次,第四次,A4和和A5比较,比较,76,进行对调,进行对调,5 4 3 7 6 8 由上例
9、可以看出,对于由上例可以看出,对于6个数,排好一个数(最大的数个数,排好一个数(最大的数)需要进行)需要进行5次比较,可以推断出,对于次比较,可以推断出,对于N个数,一趟个数,一趟(排好一个数的过程)需要(排好一个数的过程)需要N-1次比较操作。次比较操作。上述算法已经把上述算法已经把N个数中最大的数放到了个数中最大的数放到了AN中,再重中,再重复上述算法,把复上述算法,把A1到到AN-1中最大的数放到中最大的数放到AN-1中,这中,这样样AN-1中存放的就是第二大的数,接着把中存放的就是第二大的数,接着把A1到到AN-2中中最大的数放到最大的数放到AN-2中,中,最后把最后把A1到到A2中大
10、的那个中大的那个数放到数放到A2中,每重复一次两两比较后,比较的范围就朝前中,每重复一次两两比较后,比较的范围就朝前移动一个位置,此算法经过移动一个位置,此算法经过N-1次就完成了次就完成了A1到到AN中的中的的数由小到大的排列。的数由小到大的排列。注意:如果要由大到小排列则在比较时前一个数比后一个数注意:如果要由大到小排列则在比较时前一个数比后一个数小就进行对调,方法相反。小就进行对调,方法相反。由此可以看出,冒泡法的基本思想就是:在待排序的数据中由此可以看出,冒泡法的基本思想就是:在待排序的数据中,先找到最大的数据将它放到最后面,再从第二个数据开始,先找到最大的数据将它放到最后面,再从第二
11、个数据开始,找到第二大的数据将它放到第二个位置,以此类推,直到,找到第二大的数据将它放到第二个位置,以此类推,直到只剩下最后一个数为止。这种排序方法在排序的过程中,是只剩下最后一个数为止。这种排序方法在排序的过程中,是小的数就如气泡一样逐层上浮,而使大的数逐个下沉,于是小的数就如气泡一样逐层上浮,而使大的数逐个下沉,于是就形象地取名为起泡排序,又名冒泡排序。就形象地取名为起泡排序,又名冒泡排序。输入n 个数给a1 到 anfor j=1 to n-1for i=1 to n-jaiai+1真假aiai+1输出a1 到 an#include main()int a11,i,j,t;printf(
12、Input 10 numbers:n);for(i=1;i11;i+)scanf(%d,&ai);printf(n);for(j=1;j=9;j+)for(i=1;iai+1)t=ai;ai=ai+1;ai+1=t;printf(The sorted numbers:n);for(i=1;i11;i+)printf(%d,ai);2.打擂法:打擂法:求10个数最大值和最小值步骤:1.输入:for循环输入10个整数2.处理:(a)先令max=min=x0(b)依次用xi和max,min比较(循环)若maxxi,令min=xi3.输出:max和min#include main()int x10,i
13、,max,min;for(i=0;i10;i+)scanf(%d,&xi);max=min=x0;for(i=1;i10;i+)if(maxxi)min=xi;printf(Maximum value is%dn,max);printf(Minimum value is%dn,min);6 62 2 二维数组的定义和引用二维数组的定义和引用一、二维数组的定义一、二维数组的定义类型说明符类型说明符 数组名数组名常量表达式常量表达式常量表达式常量表达式 例:例:float a34,b510;a0 a00 a01 a02 a03 a1 a10 a11 a12 a13 a2 a20 a21 a22 a
14、23 说明:说明:可以把二维数组看作是一种特殊的一维数组。可以把二维数组看作是一种特殊的一维数组。a00 a02 a10 a12 a20 a22 a01 a03 a11 a13 a21 a23 二维数组在内存中按行存放二维数组在内存中按行存放 多维数组定义方式与二维数组类似多维数组定义方式与二维数组类似 int x342;float y423;二、二维数组的引用二、二维数组的引用 引用形式为:引用形式为:数组名数组名下标下标下标下标 注:下标可以是整型表达式,但应在已定义的数组大小的注:下标可以是整型表达式,但应在已定义的数组大小的 范围内。范围内。三、二维数组的初始化三、二维数组的初始化 分
展开阅读全文