计算机C语言-第七章.ppt
《计算机C语言-第七章.ppt》由会员分享,可在线阅读,更多相关《计算机C语言-第七章.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第7章章 数数 组组数组:是构造类型,元素由基本类型(整、实、字符)组成。数组:是构造类型,元素由基本类型(整、实、字符)组成。它是有序的、它是有序的、同类型数据同类型数据的集合。的集合。7.1 一维数组的定义和引用(类似于向量)一维数组的定义和引用(类似于向量)7.1.1 一维数组的定义一维数组的定义 形式:类型说明符形式:类型说明符 数组名数组名常量表达式常量表达式 如:如:int a5;float b10;说明:说明:1.命名规则命名规则:数组名是由合法的标识符组成。:数组名是由合法的标识符组成。2.数组名后是用数组名后是用 括起来的是常量表达式括起来的是常量表达式包括:整、字符、包括
2、:整、字符、符号常量符号常量表达式。表达式。如:如:int a2+3,b5,ca,_d8,xyz#(#=35)而:而:int a(10),bx,%5,83,x-y50,5x100 是否正确?是否正确?又如:又如:int i=5;int a5+i 是否正确性?是否正确性?3.数组的长度数组的长度 int a5 a0,a1,a2,a3,a4 5个元素个元素,下标从,下标从0 4 注意:在注意:在Turbo C 中超过定义的数组下标元素是可以引用的,中超过定义的数组下标元素是可以引用的,系统不作检查。但系统不作检查。但a5是个无意义的随机数是个无意义的随机数4.数组大小的定义只能是常量,不能是变量或
3、动态地定义。数组大小的定义只能是常量,不能是变量或动态地定义。例例7-0-2.Cmain()int n=5,an;a1=100;printf(“a1=%dn”,a1);编译指出:编译指出:constant expression required in function main(主函数中要求常量表达式)(主函数中要求常量表达式)7.1.2 一维数组元素的引用一维数组元素的引用引用规则:引用规则:1.先定义,后使用。先定义,后使用。2.引用形式:引用形式:数组名数组名下标下标 下标可以是整、字符下标可以是整、字符 型的常量、变量或表达式。型的常量、变量或表达式。3.引用方法:针对元素而不是整个数
4、组。引用方法:针对元素而不是整个数组。如:如:a0=ab-a+a b-96+a3-a2*2例例T7-1.C 对数组对数组a 顺序赋值,逆序输出顺序赋值,逆序输出main()int a5,i;for(i=0;i=0;i-)printf(“a%d=%dn”,i,ai);思考:书上的例题有没有错误?思考:书上的例题有没有错误?运行结果:运行结果:a4=4 a3=3a2=2a1=1a0=001234a0a1a2a3a4说明:说明:1、一个数组是一个数据。、一个数组是一个数据。2、为什么要先定义后使用?因为数组名、为什么要先定义后使用?因为数组名代表内存中存放数组元素的连续存储空代表内存中存放数组元素的
5、连续存储空间的起始地址,所以,数组名就是地址间的起始地址,所以,数组名就是地址(门牌号)(门牌号)了解数组中元素在内存了解数组中元素在内存中如何存放的?中如何存放的?3、区分:、区分:int a5;和;和a5有什么区别?有什么区别?所以可以所以可以ai,但不可以,但不可以int ai4、一个数组元素就相当于一个简单变量、一个数组元素就相当于一个简单变量7.1.3 一维数组的初始化一维数组的初始化实现的方法有:实现的方法有:1.定义时对数组元素初始化定义时对数组元素初始化 如如:int a5=1,2,3,4,5;2.只给部分元素赋值只给部分元素赋值 如:如:int a5=1,3,5;后面为后面为
6、0,这与只定义不赋值是不同,这与只定义不赋值是不同的!的!3.初始化时给全部元素赋初始化时给全部元素赋0值值 如:如:int a5=0,0,0,0,0;int a5=0;4.对全部元素赋初值时可以不指出长度对全部元素赋初值时可以不指出长度 如:如:int a5=2,4,6,8,10;或或 int a =2,4,6,8,10;效果一样。这种方法很方便,效果一样。这种方法很方便,特别适合元素太多的数组,但长度不一致时不能省特别适合元素太多的数组,但长度不一致时不能省例例T7-1-1.c 定义时对数组元素初始化定义时对数组元素初始化main()int i;int a5=2,4,6,8,10;for(
7、i=0;i=4;i+)printf(“%dn”,ai);运行结果:运行结果:24 6 8107.1.4 一维数组程序举例(请同学们仔细思考)一维数组程序举例(请同学们仔细思考)例例T7-2.c 求求Fibonacci 数列问题数列问题关于菲波那契算法:头两个数各为关于菲波那契算法:头两个数各为1,以后的每个数皆为前两个数之和。以后的每个数皆为前两个数之和。main()int i;int f20=1,1;for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;i20;i+)if(i%5=0)printf(“n”);printf(“%12d”,fi);i fi=fi-2+fi-1
8、2 f2=f1+f0=23 f3=f2+f1=34 f4=f3+f2=55 f5=f4+f3=86 f6=f5+f4=137f7=f6+f5=218 运行结果:运行结果:1 1 2 3 5 8 13 21 34 5589 144 233 377 61090987 1597 2584 4181 6765例例T7-3.c 用起泡法对用起泡法对6个数排序个数排序(由小到大由小到大)(特别重点)(特别重点)思路思路:将相邻两数两两比较将相邻两数两两比较,若当前所指的数比其后面的数据大,若当前所指的数比其后面的数据大,则交换位置则交换位置 第一轮大数沉底第一轮大数沉底 第二轮第二轮 第三轮第三轮 第四轮
9、第四轮 第五轮第五轮此处:此处:n=6外层循环外层循环j(1n-1)次:轮数次:轮数内层循环内层循环i(1n-j)次:每轮内比较的次数次:每轮内比较的次数9 8 8 8 8 88 9 5 5 5 55 5 9 4 4 44 4 4 9 2 22 2 2 2 9 00 0 0 0 0 98 5 5 5 55 8 4 4 44 4 8 2 22 2 2 8 00 0 0 0 85 4 4 44 5 2 22 2 5 00 0 0 54 2 22 4 00 0 42 00 2main()int a7;int i,j,t;printf(“input 6 numbers:n”);for(i=1;i7;i
10、+)scanf(“%d”,&ai;printf(“n”);for(j=1;j=5;j+)for(i=1;iai+1)t=ai;ai=ai+1;ai+1=t;printf(“the sorted numbers:n”);for(i=1;iai+1 9 8 5 4 2 01 1 ta1,a1=a2,a2=t 8 9 2 ta2,a2=a3,a3=t 8 5 9 3 ta3,a3=a4,a4=t 8 5 4 9 4 ta4,a4=a5,a5=t 8 5 4 2 9 5 ta5,a5=a6,a6=t 8 5 4 2 0 92 1 ta1,a1=a2,a2=t 5 8 2 ta2,a2=a3,a3=t
11、5 4 8 3 ta3,a3=a4,a4=t 5 4 2 8 4 ta4,a4=a5,a5=t 5 4 2 0 8 3 1 ta1,a1=a2,a2=t 4 5 2 ta2,a2=a3,a3=t 4 2 5 3 ta3,a3=a4,a4=t 4 2 0 5 4 1 ta1,a1=a2,a2=t 2 4 2 ta2,a2=a3,a3=t 2 0 4 5 1 ta1,a1=a2,a2=t 0 2 7.2 二维数组的定义和引用二维数组的定义和引用7.2.1 二维数组的定义(类似于矩阵)二维数组的定义(类似于矩阵)1.一般形式:一般形式:类型说明符类型说明符 数组名数组名常量表达式常量表达式常量表达式
12、常量表达式 如:如:float a34 定义数组定义数组a具有三行四列具有三行四列类似于类似于矩阵矩阵 float a3,4错误错误在在C中,可将二维数组看着是特殊形式的一维数组。中,可将二维数组看着是特殊形式的一维数组。如上述定义可看着是具有三个元素的一维数组,而每个元素又如上述定义可看着是具有三个元素的一维数组,而每个元素又可看作是包含四个元素的一维数组。可看作是包含四个元素的一维数组。因此,上述定义相当于:因此,上述定义相当于:float a0 4,a1 4,a2 4其中其中a0、a1、a2是三个数组名,代表了是三个数组名,代表了3个一维数组个一维数组2.二维数组各个元素在内存中的存放顺
13、序是:二维数组各个元素在内存中的存放顺序是:按先行后列的顺序依次存放按先行后列的顺序依次存放例例T7-3-1.cmain()int i,j,a23;for(i=0;i2;i+)for(j=0;j3;j+)scanf(“%d”,&aij);for(i=0;i2;i+)for(j=0;j3;j+)printf(“&a%d%d=%x ”,i,j,&aij);printf(“a%d%d=%d n”,i,j,aij);地址地址值值ffceffd0ffd2ffd4ffd6ffd81357911数组元素数组元素a00a01a02a10a11a12输入:输入:1 3 5 7 9 11 输出:输出:&a00=f
14、fce a00=1&a01=ffd0 a01=3&a02=ffd2 a02=5&a10=ffd4 a10=7&a11=ffc6 a11=9&a12=ffd8 a12=117.2.2 二维数组的引用二维数组的引用形式:数组名形式:数组名下标下标下标下标其中:下标是整型或字符型的常量,变量或表达式。其中:下标是整型或字符型的常量,变量或表达式。(定义(定义时不能使用变量)时不能使用变量)如:如:a12 aij1.数组元素可出现在表达式中,如:数组元素可出现在表达式中,如:a12=a22/2也可以被赋值,因为就相当于是一个普通变量也可以被赋值,因为就相当于是一个普通变量2.使用数组元素时,应注意不要
15、超出其定义的范围;使用数组元素时,应注意不要超出其定义的范围;如:如:int a23;a23=5;再次强调:请严格区分定义时的再次强调:请严格区分定义时的a23及引用时的及引用时的a237.2.3 二维数组的初始化二维数组的初始化1.按行给二维数组赋初值按行给二维数组赋初值 如:如:int a23=1,2,3,4,5,6;2.按数组元素排列的顺序赋初值按数组元素排列的顺序赋初值 如:如:int a23=1,2,3,4,5,6;3.对部分元素赋初值,按行赋值较直观对部分元素赋初值,按行赋值较直观 如:如:int a23=2,5,3;请写出int a34=1,5,6;请写出int a34=1,9;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 语言 第七
限制150内