(3)对于数组:inta[10]; ①、数据输入 ②、数据输出: for(i=0;i<=9;i++) for(i=9;i>=0;i-) scanf(%d", &aiD; printf(%4d,aiD; 3一维数组的初始化 (1)、在定义数组时对全部数组元素赋以初值(最好将数组的 存储类型定义为 statici或 extern) static int a10={0,1,2,3,4,5,6,7,8,9}; (2)、可以只给一部分数组元素赋初值,系统自动对其余元素 赋一缺省值: static int a[10}={1,3,5,7,9}; 等价于: static int a[10}={1,3,5,7,9,0,0,0,0,0}; 心U
(3) 对于数组:int a[10]; ①、数据输入: for (i=0; i<=9; i++) scanf("%d", &a[i]); ②、数据输出: for (i=9; i>=0; i--) printf("%4d", a[i]); 3 一维数组的初始化 (1)、在定义数组时对全部数组元素赋以初值(最好将数组的 存储类型定义为static或extern) static int a[10]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; (2)、可以只给一部分数组元素赋初值,系统自动对其余元素 赋一缺省值: static int a[10]={1, 3, 5, 7, 9}; 等价于:static int a[10]={1, 3, 5, 7, 9, 0, 0, 0, 0, 0};
(3)、若对 statici数组不赋值,系统自动对所有元素赋一缺省值 static int a5; 等价于: static int a5]={0,0,0,0,0}; (4)、对全部数组元素赋初值时,可以不指定数组长度,其长 度由初值个数自动确定: static int a=0, 1, 2, 3, 4 等价于: staticint a5}={0,1,2,3,4}; (5)、不允许数组指明的元素个数小于初值个数: static int al5]={0,1,2,3,4,5};编译时岀错
(3)、若对static数组不赋值,系统自动对所有元素赋一缺省值 static int a[5]; 等价于:static int a[5]={0, 0, 0, 0, 0}; (4)、对全部数组元素赋初值时,可以不指定数组长度,其长 度由初值个数自动确定: static int a[ ]={0, 1, 2, 3, 4}; 等价于:static int a[5]={0, 1, 2, 3, 4}; (5)、不允许数组指明的元素个数小于初值个数: static int a[5]={0, 1, 2, 3, 4, 5}; 编译时出错
4一维数组程序举例 10b多么 例1:用数组来处理求 Fibonacci数列问题。 Fib=1 (n=1) Fib2=1 (n=2) f[3]2 Fib=Fibn-+Fibn-2(n23) 4]3 static int f(]=0, 1, 1; f5]5 for(i=3;i<=20;i++) fi=fi-1+fi-2: f6]18 for(i=1;i<=20;i++) 印7]13 i printf(%12d,feD; if(%5=0) 0]6765 printf(n); f2 心U
4 一维数组程序举例 例1:用数组来处理求Fibonacci数列问题。 Fib1=1 (n=1) Fib2=1 (n=2) Fibn=Fibn-1+Fibn-2 (n≥3) f[0] f[1] 1 f[2] 1 f[3] 2 f[4] 3 f[5] 5 f[6] 8 f[7] 13 … f[20] 6765 static int f[21]={0, 1, 1}; for (i=3; i<=20; i++) f[i]=f[i-1]+f[i-2]; for (i=1; i<=20; i++) { printf("%12d", f[i]); if (i%5==0) printf("\n"); }
例2:用起泡法将10个整数由小到大排序。 #include <stdio.h> 沤两个数比较,将小的交换到前面。 void main() 输入n个数给a[1]~a[n] i int alll,i,j, for(i=1;i<=10;i++) for(i=1;i<=n-1;i++) scanf(%od", &aiD; for(=1;j=n-;j+) for(i=l; i<=9; i++) for(j=1;j<=10-i;j++) 真 可l>ai+1 假 if (aj>aj+lD i tall [+1 a[jl=aj+1; 输出a[1]~a[n a[j+1=t; 若有n个数,则要进行m-1趟比较。 for(i=1;i<=10;i++ 在第1趟比较中,要进行-1次两两比较 printf(("%-4d",a[i]);在第i趟比较中,要进行n次两两比较;
例2:用起泡法将10个整数由小到大排序。 起泡法的思路:将相邻两个数比较,将小的交换到前面。 9 4 3 5 8 0 4 9 3 5 8 0 4 3 9 5 8 0 4 3 5 9 8 0 4 3 5 8 9 0 4 3 5 8 0 9 3 4 5 0 8 9 3 4 0 5 8 9 3 0 4 5 8 9 0 3 4 5 8 9 结论:若有n个数,则要进行n-1趟比较。 在第1趟比较中,要进行n-1次两两比较; 在第 i 趟比较中,要进行n-i次两两比较; 输入n个数给a[1]~a[n] for (i=1; i<=n-1; i++) for (j=1; j<= ; j++) n-i a[j]>a[j+1] 真 假 a[j]←→a[j+1] 输出a[1]~a[n] #include <stdio.h> void main( ) { int a[11], i, j, t; for ( i=1; i<=10; i++) scanf("%d", &a[i]); for ( i=1; i<=9; i++) for ( j=1; j<=10-i; j++) if (a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } for ( i=1; i<=10; i++) printf("%-4d", a[i]); }
4.2二维数组的引出及使用 4.2.1二维数组的引出 42.2二维数组的定义和引用 心U
4.2 二维数组的引出及使用 4.2.1 二维数组的引出 4.2.2 二维数组的定义和引用