- 1、本文档共66页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
05章节c语言程序的设计数组
5.1 1维数组的定义和引用 5.1.1 1维数组的定义 5.1.2 1维数组元素的引用 5.1.3 1维数组元素的初始化 5.1.4 1维数组应用举例 特别说明:在数组定义时,“常量表达式”外的方括号;以及元素引用时,“下标表达式”外的方括号,都是C语言语法规则所要求的,不是本书所约定的可选项的描述符号! (4)数组元素的下标,是元素相对于数组起始地址的偏移量,所以从0开始顺序编号。 (5)数组名中存放的是一个地址常量,它代表整个数组的首地址。同一数组中的所有元素,按其下标的顺序占用一段连续的存储单元。 5.1.2 数组元素的引用 c规定只能引用数组元素而不能一次引用整个数组。引用数组中的任意一个元素的形式: 数组名[下标表达式] 1.“下标表达式”可以是任何整型常量或整型表达式。 例:a[0]=a[5]+a[7]-a[2*3] 特别强调:在运行C语言程序过程中,系统并不自动检验数组元素的下标是否越界。因此在编写程序时,保证数组下标不越界是十分重要的。 2.1个数组元素,实质上就是1个变量,它具有和相同类型单个变量一样的属性,可以对它进行赋值和参与各种运算。 3.当数组的长度为N时,下标的取值范围为0,1,2,……N-2,N-1。 6.1.3 1维数组元素的初始化 数组的初始化就是在定义数组时给数组元素赋值。 初始化格式: 数据类型 数组名[常量表达式]={初值表} 初始化可以有以下方法实现: 1.给全部数组元素赋值。 例:int a[5]={8,10,1,1,2} 数据是依次包括在{}中,数据中间用逗号间隔,初始化结果为: a[0] a[1] a[2] a[3] a[4] 8 10 1 1 2 给全部数组元素赋值时,可不制定数组长度。 例:int a[ ]={8,10,1,1,2} [案例] 从键盘上任意输入10个整数,要求按从小到大的顺序在屏幕上显示出来。 排序的方法有很多,本题采用冒泡法。 冒泡法的基本思想:通过相邻两个数之间的比较和交换,使数值)较小的数逐渐从底部移向顶部,数值较大的数逐渐从顶部移向底部。就像水底的气泡一样逐渐向上冒,故而得名。 由A[n]~A[1]组成的n个数据,进行冒泡排序的过程可以描述为: (1)首先将相邻的A[0]与A[1]进行比较,如果A[0]的值大于A[1]的值,则交换两者的位置,使较小的上浮,较大的下沉;否则不交换。接着比较A[2]与A[3],同样使小的上浮,大的下沉。依此类推,直到比较完A[n-2]和A[n-1]后,A[n-1]为具有大数值的元素,称第一趟排序结束。 (2)然后在A[0]~A[n-2]区间内,进行第二趟排序,使剩余元素中数值最大的元素上浮到A[n-2]; /*功能:从键盘上任意输入n个整数,用冒泡法按从小到大地排序,并在屏幕上显示出来。*/ #include stdio.h #define NUM 10 /*定义符号常量(数据个数N)*/ main() { int data[NUM]; /*定义1个1维整型数组data*/ int i,j,temp; /*定义循环变量和临时变量*/ clrscr(); /*库函数clrscr():清屏*/ printf(Please input 10 numbers:\n); for(i=0; iNUM; i++) scanf(%d, data[i]); 5.2 2维数组的定义和引用 5.2.1 2维数组的定义 5.2.2 2维数组元素的引用 5.2.3 2维数组元素的初始化 5.2.4 2维数组应用举例 [案例] 给一个2*3的2维数组各元素赋值,并输出全部元素的值。 /*功能:从键盘上给2*3数组赋值,并在屏幕上显示出来。*/ #define Row 2 #define Col 3 #include stdio.h main() { int i, j, array[Row][Col]; /*定义1个2行3列的2维数组array*/ for(i=0; iRow; i++) /*外循环:控制2维数组的行*/ for(j=0; jCol; j++) /*内循环:控制2维数组的列*/ {printf(please input array[%2d][%2d]:,i,j); scanf(%d,array[i][j]);
文档评论(0)