第七章数组.ppt
《第七章数组.ppt》由会员分享,可在线阅读,更多相关《第七章数组.ppt(41页珍藏版)》请在第壹文秘上搜索。
1、第七章 数组v一维数组的定义及引用v二维数组的定义及引用v字符数组构造数据类型之一数组:有序数据的集合,用数组名标识元素:属同一数据类型,用数组名和下标确定一维数组的定义v定义方式:数据类型 数组名常量表达式;合法标识符表示元素个数下标从0开始 :数组运算符单目运算符优先级(1)左结合不能用()7.1 一维数组a00145a1a2a3a4a523a数组名表示内存首地址,是地址常量编译时分配连续内存内存字节数=数组维数*sizeof(元素数据类型)下标一定从0开始例 int a6内存表示如下:例 int a10;printf(“%d”,a);()必须 for(j=0;j10;j+)printf(
2、“%dt”,aj);()一维数组的引用v数组元素表示形式:数组名下标其中:下标可以是常量或整型表达式v数组必须先定义,后使用v只能逐个引用数组元素,不能一次引用整个数组例 int i=15;int datai;():1.在运行C语言程序过程中,系统并不 自动检验数组元素的下标是否越界。因此在编写程序时,保证数组下标不越界是十分重要的,下标取值范围是0(元素个数-1)。21个数组元素,实质上就是1个变量,它具有和相同类型单个变量一样的属性,可以对它进行赋值和参与各种运算。一维数组的初始化初始化方式:int a5=1,2,3,4,5;等价于:a0=1;a1=2;a2=3;a3=4;a4=5;:数组
3、不初始化,其元素值为随机数 对static数组元素不赋初值,系统会自动赋以0值只给部分数组元素赋初值当全部数组元素赋初值时,可不指定数组长度如 int a5=6,2,3;等价于:a0=6;a1=2;a2=3;a3=0;a4=0;如 int a3=6,2,3,5,1;()static int a5;等价于:a0=0;a1=0;a2=0;a3=0;a4=0;int a=1,2,3,4,5,6;编译系统根据初值个数确定数组维数程序举例 例7.1 读10个整数存入数组,找出其中最大值和最小值算法:1.输入:for循环输入10个整数2.处理:(a)先令max=min=x0(b)依次用xi和max,min
4、比较(循环)若maxxi,令min=xi3.输出:max和min#include#define N 10main()int xN,i,max,min;printf(Enter 10 integers:n);for(i=0;iN;i+)printf(%d:,i+1);scanf(%d,&xi);max=min=x0;for(i=1;iN;i+)if(maxxi)min=xi;printf(Maximum value is%dn,max);printf(Minimum value is%dn,min);输入部分处理部分输出部分例7.2用数组求Fibonacci数列前20个数)3()2(12)1(1
5、121nFFFnFnFnnn#include main()int i;int f20=1,1;for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;ia1,则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束#include main()int a11,i,j,t;printf(Input 10 numbers:n);for(i=1;i11;i+)scanf(%d
6、,&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);例7.4 用简单选择法对10个数排序排序过程:排序过程:(1)首先通过)首先通过n-1次比较,从次比较,从n个数中找出最小个数中找出最小的,的,将它与第一个数交换将它与第一个数交换第一趟选择排序第一趟选择排序,结,结果果最小最小的数被安置在第一个元素位置上的数被安置在第一个元素位置上(2)再通过)再通过n-2次比较,从剩余的次比较,从剩余的n-1个数中
7、找出个数中找出关键字关键字次小次小的记录,将它与第二个数交换的记录,将它与第二个数交换第二第二趟选择排序趟选择排序(3)重复上述过程,共经过)重复上述过程,共经过n-1趟排序后,排序趟排序后,排序结束结束#include main()int a11,i,j,k,x;printf(Input 10 numbers:n);for(i=1;i11;i+)scanf(%d,&ai);printf(n);for(i=1;i10;i+)k=i;for(j=i+1;j=10;j+)if(ajak)k=j;if(i!=k)x=ai;ai=ak;ak=x;printf(The sorted numbers:n)
8、;for(i=1;i11;i+)printf(%d,ai);7.2 二维数组v定义方式:数据类型数组名常量表达式1常量表达式2;例 int a34;float b25;int a3,4;()1 1数组元素在内存中的排列顺序为数组元素在内存中的排列顺序为“按行存放按行存放”,即先顺序存放第一行的元素,再存放第二,即先顺序存放第一行的元素,再存放第二行,以此类推。行,以此类推。2.2.设有一个设有一个m m*n n的数组的数组x x,则第,则第i i行第行第j j列的元素列的元素x xijij在数组中的位置为:在数组中的位置为:i i*n+jn+j(注意:行号、列:行号、列号均从号均从0 0开始计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七 数组