数组一维数组定义

上传人:wuxin****2020 文档编号:246666594 上传时间:2024-10-15 格式:PPT 页数:21 大小:232.50KB
返回 下载 相关 举报
数组一维数组定义_第1页
第1页 / 共21页
数组一维数组定义_第2页
第2页 / 共21页
数组一维数组定义_第3页
第3页 / 共21页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,北京邮电大学世纪学院,C语言程序设计,第五章,数组 一维数组定义,问题:,给一组数排序,这组 数该 如何存放呢,?这些数据如何存放才便于排序,8,2,9,4,5,6,3,7,6,1,7,1,8,8,8,8,8,8,8,8,8,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,8,8,8,8,8,8,8,8,8,这便是本章所要解决的问题,第五章 数组,本章要点,掌握一维、二维数组的定义和引用方法、存储结构和初始化方法。,掌握有关一维数组的有关算法。,掌握数组的运算。,第五章 数组,主要内容,5.1 一维数组的定义和引用,5.2 二维数组的定义和引用,5.3 字符数组,第五章 数组,5-1,一维数组的定义和引用,问题:,有如下几组数据,它们分别该如何存储呢?,是一组具有,相同数据类型,的数据的,有序集合。,数组,一个班学生的学习成绩,一行文字,一个矩阵,这些数据的特点是:,1、具有相同的数据类型,2、使用过程中需要保留原始数据,C语言为这些数据,提供了一种构造数据类型:数组。,1、一维数组的定义格式为:,类型说明符 数组名常量表达式;,例如:int a10;,它表示定义了一个整形数组,数组名为a,此数组有10个元素。,一维数组的定义,2、说明:,(1),数组名定名规则和变量名相同,遵循标识符定名规则。,(2),在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表示元素的个数,即数组长度。例如,指定a10,表示a数组有10个元素,注意下标是从0开始的,这10个元素是,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9。请持别注意,按上面的定义,不存在数组元素a10。,(3),常量表达式中可以包括常量和符号常量,但不能包含变量。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下面这样定义数组是不行的:,举例:,int n;,scanf(“%d,,/*在程序中临时输入数,组的大小*/,int an;,float a,0,;,/*数组大小为0没有意义*/,int b(2)(3);,/*不能使用圆括号*/,int k,ak;,/*不能用变量说明数组大小*/,数组说明中其他常见的错误,3、,一维数组在内存中的存放,每个数据元素占用的字节数,就是,基类型,的字节数,一个元素占,4个,字节,一维数组:,float,mark,100;,mark,0,mark,1,mark,2,mark,3,.,.,.,mark99,86.5,92.0,77.5,52.0,.,.,.,94.0,低地址,高地址,数组名下标,下标可以是整型常量或整型表达式。例如:,a0=a5+a7-a2*3,定义数组时用到的“数组名常量表达式”和引用数组元素时用到的“数组名下标”是有区别的。,例如 int a10;,/*定义数组长度为10*/,t=a6;,/*引用a数组中序号为6的元,素。此时6不代表数组长度*/,注意,一维数组元素的引用,1、数组元素的引用方式:,2、一维数组元素引用的,程序实例,#include,void main(),int i,a10;,for(i=0;i=0;i-),printf(%d,ai);,printf(n);,运行结果如下:,9 8 7 6 5 4 3 2 1 0,程序使,a,0,到,a,9,的值为,0,9,,然后按逆序输出。,1、对数组元素初始化的实现方法:,(1)在定义数组时对数组元素赋以初值。例如:,int a10=0,1,2,3,4,5,6,7,8,9;,将数组元素的初值依次放在一对花括弧内。经过上面的定义和初始化之后,a0=0,a1=1,a2=2,a3=3,a4=4,a5=5,a6=6,a7=7,a8=8,a9=9。,一维数组的初始化,(3),如果想使一个数组中全部元素值为0,,可以写成,int a10=0,0,0,0,0,0,0,0,,0,0;,或int a10=0;,不,能写成,:,int a10=0*10;,这是与FORTRAN语言不同的,不能给数组整体赋初值。,2)可以只给一部分元素赋值。例如:,int a10=0,1,2,3,4;,定义a数组有10个元素,但花括弧内只提供5个初值,这表示只给前面5个元素赋初值,后5个元素值为0。,4),在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。,例如,:,int a5=1,2,3,4,5;,也可以写成,int a,=1,,,2,,,3,,,4,,,5;,在第二种写法中,花括弧中有5个数,系统就会据此自动定义a数组的长度为5。但若数组长度与提供初值的个数不相同,则数组长度不能省略。例如,想定义数组长度为10,就不能省略数组长度的定义,而必须写成,int a10=1,2,3,4,5;,只初始化前5个元素,后5个元素为0。,程序举例1:,用数组来处理,求解,Fibonacci,数列。,程序实例:,#include,void main(),int i;,int f20=1,1;,Fibonacci,数列公式:,已知:,a,1,=a,2,=1,a,n,=a,n-1,+a,n-2,即:1,1,2,3,5,8,13,一维数组程序举例,for(i=2;i20;i+),fi=fi-2+fi-1;,for(i=0;i20;i+),if(i%5=0)printf(n);,printf(%12d,fi),/*For,循环结束*/,/*,程序结束*/,运行结果如下:,1 1 2 3 5,8 13 21 34 55,89 144 233 377 610,987 1597 2584 4181 6765,if,语句用来控制换行,每行输出,5,个数据。,程序举例2:,用起泡法对,10,个数排序,(,由小到大,),。,起泡法的思路是:,将相邻两个数比较,将小的调到前头。,第,一,趟,比,较,经过第一趟(共5次比较与交换)后,最大的数9已“沉底”。然后进行对余下的前面5个数第二趟比较,,注,第,二,趟,比,较,如果有,n,个数,则要进行,n-1,趟比较。在第,1,趟比较中要进行,n-1,次两两比较,在第,j,趟比较中要进行,n-j,次两两比较。,经过第二趟(共4次比较与交换)后,得到次大的数8。,注,程序流程图如下:,程序实例5.3:,#include,void main(),int a10;,int i,j,t;,printf(,input 10 numbers:n,);,for(i=0;i10;i+),scanf(%d,,printf(n);,for(j=0;j9;j+),for(i=0;iai+1),t=ai;ai=ai+1;,ai+1=t;,printf(the sorted numbers:n);,for(i=0;i10;i+),printf(%d,ai);,printf(n);,/*,程序结束*/,程序运行结果如下:,input 10 numbers:,1 0 4 8 12 65-76 100-45 123,the sorted numbers:,-76-45 0 1 4 8 12 65 100 123,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!