§7.1.4维数组程序举例 TY PRESS 例7.2:用数组求 Fibonacci数列的前20个元素,5个一行 f1o=1;1=1; for(i=2;i<20;i++) fi=fi-1+fi-2 intf[20]={1,1}; for(i=0;i<20;i++) for(i=2;i<20;i++)/*注意结 i%5=0 N束条件的表示*/ 换行 f[i]=f[i-2]+f[i-1] 输出元素印 例72主函数NS图
例7.2:用数组求Fibonacci数列的前20个元素,5个一行 int f[20]={1,1}; for(i=2;i<20;i++)/*注意结 束条件的表示*/ f[i]=f[i-2]+f[i-1] § 7.1.4一维数组程序举例 f[0]=1;f[1]=1; for(i=2;i<20;i++) f[i]=f[i-1]+f[i-2] for(i=0;i<20;i++) i%5==0 Y N 换行 输出元素f[i] 例7.2主函数N-S图
例73:起泡法对10个数由小到大排序 思路:每一趟排序时,从首元素开始相邻两个数进行比较,将小 的换到前头,如此,则每趟排序都会使当前“最大”的数“沉到 末尾”,小的数逐步“上升”,N-1趟则排序完毕 原始第1次第2次第3次第4次第一趟 for(1=0;i<N;i++) 状态比较比较比较比较结果 输入元素a[i for(i=1;<=N-1;i++ for(=0; j<N-1; j++) 8 a[j]>a+1 a[i]<=a[j+1 图67第一趟冒泡排序过程 /*表趟数,表前者的下标* for(i=0: K<N: 1++ 输出元素a 改进的冒泡排序 图69例64主函数N-S图
例7.3:起泡法对10个数 由小到大排序 思路:每一趟排序时,从首元素开始相邻两个数进行比较,将小 的换到前头,如此,则每趟排序都会使当前“最大”的数“沉到 末尾”,小的数逐步“上升” ,N-1趟则排序完毕。 第一趟 结果 5 4 8 0 9 第 4次 比较 5 4 8 9 0 第 3 次 比较 5 4 8 9 0 第2 次 比较 5 8 4 9 0 原始 状态 8 5 4 9 0 第1次 比较 8 5 4 9 0 图6.7 第一趟冒泡排序过程 for(i=0;i< N;i++) 输入元素 a[i] for(i=1;i<=N-1;i++ for(j=0;j<N-i;j++) Y N for(i=0;i< N;i++) 输出元素a[i] a[j]>a[j+1] a[j]<=>a[j+1] 图6.9 例6.4主函数N-S图 /*i表趟数,j表前者的下标*/ 改进的冒泡排序
§7-2二维数组 TSINGHUA UNIVERSITY PRESS §7.2.1二维数组的定义 类型说明符数组名[常量表达式][常量表达式]; 例如:f1oata[2][3],b[5][5];不能用 float a3,4 1)元素按行优先顺序存储在连续的内存单元中,数组名 代表存储区域起始地址,如 float b[2][3] 2)二维数组相当于特殊的”一维数组”,每个“元素”是 行组成的数组,如 float b[2][0]相当于由b[0]、与 [1]组成的一维数组,而b[0相当于由b[Q1[0] b[01[1]b[01[2]组成的一维数组的数组名 3)常量表达式不能包含变量,长度必须大于0
§7-2 二维数组 § 7.2.1二维数组的定义 类型说明符 数组名[常量表达式][常量表达式]; 例如:float a[2][3],b[5][5];不能用float a[3,4] 1)元素按行优先顺序存储在连续的内存单元中,数组名 代表存储区域起始地址,如float b[2][3] 2)二维数组相当于特殊的”一维数组” ,每个“元素”是 一行组成的数组,如float b[2][0]相当于由b[0]、与 [1] 组 成 的 一 维 数 组 , 而 b[0] 相 当 于 由 b[0][0] b[0][1] b[0][2]组成的一维数组的数组名 3)常量表达式不能包含变量,长度必须大于0
§7.2.2二维数组元素的引用 数组名[下标1I下标2 如inta[3][4];a[1[1]=80; printf(w%d〃,a[1[1]) double b[3][2]; scanf(1%1fm,&b[1][1]) 说明:1)a[i][j相当于一个变量,数组名是地址常量 2)对 int aMIN,标从[OJO]开始,到[M1]N1]结束 如对inta[3][4],a[3][1]越界 3)C编译系统对数组不作下标越界检査,但易造成程序出 错,甚至系统崩溃。如 scanf(“%d”,&a[3][1])
数组名[下标1][下标2] 如int a[3][4];a[1][1]=80;printf(“%d”,a[1][1]); double b[3][2];scanf(“%lf”,&b[1][1]); § 7.2.2二维数组元素的引用 说明:1)a [i][j]相当于一个变量,数组名是地址常量 2)对int a[M][N],下标从[0][0]开始,到[M-1][N-1]结束 如对int a[3][4],a[3][1]越界 3)C编译系统对数组不作下标越界检查,但易造成程序出 错,甚至系统崩溃。如scanf(“%d”,&a[3][1]);