制作:方斌 [例7.1]使数组元素a[0]~a[9]的值为0~9,然后逆序输出。 maino { int i, a[10] for(i=0;<=9;i++)a[=i; for(i=9;i>=0;i-) printf(%d " aliD 运行输出: 9876543210
制 作:方 斌 [例7.1] 使数组元素a[0]~a[9]的值为0~9,然后逆序输出。 main() { int i, a[10]; for (i=0;i<=9;i++) a[i] = i; for(i=9;i>=0; i--) printf("%d ",a[i]); } 运行输出: 9 8 7 6 5 4 3 2 1 0
制作:方斌 三、一维数组的初始化 初始化:在定义时指定初始值,编译器把初值赋给数组变量。 赋值:使用赋值语句,在程序运行时把值赋给数组变量,如a[O]=2。 1、一般初始化,例、 static int a[10]={0,1,23456,789}; int array[10]={1,2345,6,78,9,10}; 2、部分元素初始化,例、 static int a[10]={01,234}; 仅前5个元素赋初值,后5个元素未指顶初值。 3、全部元素均初始化为0,不允许简写。 static int a[10]={0,0,0,0,0,0,0,0,0,0}; 不能简写为: static int a[10]={0*10};
制 作:方 斌 三、一维数组的初始化 初始化:在定义时指定初始值,编译器把初值赋给数组变量。 赋值:使用赋值语句,在程序运行时把值赋给数组变量,如a[0] = 2。 1、一般初始化,例、 static int a[10] = { 0,1,2,3,4,5,6,7,8,9}; int array[10] = {1,2,3,4,5,6,7,8,9,10}; 2、部分元素初始化,例、 static int a[10] = {0,1,2,3,4}; 仅前5个元素赋初值,后5个元素未指顶初值。 3、全部元素均初始化为0,不允许简写。 static int a[10] = {0,0,0,0,0,0,0,0,0,0}; 不能简写为: static int a[10] = {0*10}; ×
制作:方斌 注意:当程序不给数组指定初始值时,编译器作如下处理: (1)编译器自动把静态数组的各元素初始化为0。 (2)编译器不为动态数组自动指定初始值。 4、如果全部元素均指定初值,定义中可以省略元素的个数,例、 static int a[5]={1,2,345}; 可以写为: static int a[ ] =1, 2, 3, 4, 5); v 四、一维数组程序举例 [例7.2]用数组来处理 Fibonacci数列的前20项。 1=1 n=1 F2=1 n=2 Fn =Fn-1+ Fn-2 n≥3
制 作:方 斌 注意:当程序不给数组指定初始值时,编译器作如下处理: (1)编译器自动把静态数组的各元素初始化为0。 (2)编译器不为动态数组自动指定初始值。 4、如果全部元素均指定初值,定义中可以省略元素的个数,例、 static int a[5] = {1,2,3,4,5}; 可以写为: static int a[ ] = {1,2,3,4,5}; √ 四、一维数组程序举例 [例7.2] 用数组来处理Fibonicci数列的前20项。 F1 = 1 n = 1 F2 = 1 n = 2 Fn = Fn-1 + Fn-2 n ≥ 3
制作:方斌 程序 maino { nt; static int f[20]={1,1};/*f1、千2已知* for(i=2;i<20;i++)f[=f[i-1]+fi2]; for(i=0;i<20;i++) if (i%05==0 printf(\n"); printf(" 12d"f[i]); } }
制 作:方 斌 程序: main() { int i; static int f[20] = {1,1}; /* f1、f2已知 */ for(i=2; i<20; i++) f[i] = f[i-1] + f[i-2]; for(i=0; i<20; i++) { if (i%5 == 0) printf("\n"); printf("%12d",f[i]); } }
制作:方斌 [例7.3]输入10个数,用“起泡法”对10个数排序(由小到大)。 “起泡法”算法:以六个数9、8、5、4、2、0为例。 第1趟比较 第2趟比较 第1趟比较后,剩5个数未排好序;两两比较5次 第2趟比较后,剩4个数未排好序;两两比较4次 第3趟比较后,剩3个数未排好序;两两比较3次 第4趟比较后,剩2个数未排好序;两两比较2次 第5趟比较后,全部排好序;两两比较1次 算法结论:对于n个数的排序,需进行η-1趟比较,第j趟比较需进行nj次 两两比较
制 作:方 斌 [例7.3] 输入10个数,用“起泡法”对10个数排序(由小到大)。 “起泡法”算法:以六个数9、8、5、4、2、0为例。 第1趟比较 第2趟比较 第1趟比较后,剩5个数未排好序;两两比较5次 第2趟比较后,剩4个数未排好序;两两比较4次 第3趟比较后,剩3个数未排好序;两两比较3次 第4趟比较后,剩2个数未排好序;两两比较2次 第5趟比较后,全部排好序;两两比较1次 算法结论:对于n个数的排序,需进行n-1趟比较,第j趟比较需进行n-j次 两两比较