资源描述:
《C语言 数组课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章数组【数组=组数=若干个数存放在一起】※一维数组的定义、初始化、元素的引用【向量】※二维数组的定义、初始化、元素的引用【矩阵】※字符型数组的使用【存放字符串】※处理字符串的系统函数7.1一维数组的定义与引用【主要用于存放向量】一、一维数组定义方法【格式】[存储类型符]数据类型符数组名[长度],...;其中:存储类型符以后再介绍,可以省略。数据类型符可以是整型(6种)、实型(2种)、字符型(1种)等。数组名是用户任取的标识符。长度是一个常量表达式,一般为整型。【注】常量表达式是由常量(包括符号常量)和运算符组成的表达式。【功能】定义具有“长度”个数组
2、元素的一维数组。其中每个数组元素都可以当成该类型的变量单独使用。1二、一维数组元素的引用【格式】数组名[下标]其中:数组名必须是已经定义过的一维数组名;下标是整型表达式,其值是0~长度-1(下标超出范围,语法正确、结果错)【功能】引用某个已定义的一维数组的元素,可以当成该类型的变量来使用。三、一维数组的初始化【格式】[存储类型符]数据类型符数组名[长度]={初值表},...;其中:存储类型符、数据类型符、数组名、长度同前。初值表有下列几种:(1)给所有元素赋初值:{初值0,初值1,...,初值长度-1}(注:长度可省略)(2)给前面若干个元素赋初值:{初
3、值0,初值1,...,初值k}此时,所有未赋初值的元素均获得零值,整型为0、实型为0.0、字符型为' '。(3)给所有元素赋零值:static数据类型符数组名[长度],...;【static是存储类型苻】【功能】将初值表中的初值依次赋予元素“数组名[0]”、“数组名[1]”、...。【例一】inta[3+7],b[1];定义名为a和b的整型一维数组,a有10个元素:a[0]、a[1]、...、a[9];b数组只有一个元素b[0]。均无初值。chars[4]={'1','2','3','4'};定义名为s的、长度为4的一维字符型数组。4个元素均有初值:s
4、[0]='1'、s[1]='2'、s[2]='3'、s[3]='4'。chars[]={'1','2','3','4'};同上。省略了数组长度,长度为4。floatf[10]={1.0,2.0};定义名为f、长度为10的一维单精度型数组。其中f[0]初值为1.0,f[1]的初值为2.0,其余均为0.0。staticshortk[10];定义名为k、长度为10短整型一维数组,初值均为0。2四、一维数组的程序设计例【例一】求菲波拉契序列的前20项。算法:菲波拉契序列的定义如下:f(1)=1、f(2)=1、f(n)=f(n-2)+f(n-1),n>2。数据结构
5、:用一维整型数组f[20]来存放序列的前20项的值,n为整型变量。程序:#include"stdio.h"voidmain(){intf[20]={1,1},n;for(n=2;n<20;n++)f[n]=f[n-2]+f[n-1];for(n=0;n<20;n++)printf("%d,",f[n]);printf("");}【例二】对存放在一维数组中的10个整数按照从小到大的顺序重新排列。算法:教材中介绍的方法实际上是“沉降排序法”,下面我们介绍真正的“冒泡排序法”。理解算法:设有5个整数(5、3、4、1、2),冒泡排序法的过程如下:555511
6、1111133315552222441333255331144423335422222444445第1轮第2轮第3轮第4轮结束比较4次比较3次比较2次比较1次自下向上,每次比较相邻两数,小者调上【注:轮数+次数=个数】3算法总结:对n个数的冒泡排序法如下:第1轮:从下向上,相邻两数比较,小者调上。一共进行n-1次(j=n,n-1,...,2)。第2轮:从下向上,相邻两数比较,小者调上。一共进行n-2次(j=n,n-1,...,3)。...第k轮:从下向上,相邻两数比较,小者调上。一共进行n-k次(j=n,n-1,...,k+1)。...第n-1轮:从下向
7、上,相邻两数比较,小者调上。一共进行1次(j=n)。数据结构:假定10个整数存放在一维数组a[11]中。程序:#includevoidmain(){inta[11],k,j,m;for(m=1;m<11;m++)/*输入一维数组标准程序段*/scanf("%d",&a[m]);for(k=1;k<=9;k++)for(j=10;j>=k+1;j--)if(a[j]8、}【问题】如果数组定义为a[10],如何修改程序?【11、1、9、10均减1、k