、一维数组的初始化 1.概念:在定义一维数组时对各元素指定初始值称为 数组的初始化如:inta5]={1,3,5,7,9} 2.说明 (1)对数组的全体元素指定初值,初值用{}括起来,数据 之间用逗号分开.在这种情况下,可以不指明数组的 长度,系统会根据{}内数据的个数确定数组的长度 如:inta={1,3,5,7,9}; (2)对数组中部分元素指定初值(这时不能省略数组长度) 如:inta|5={1,3,5} (3)使数组中的全部元素初始值都为0 如:inta5={0,0,0,0,0} 更简单的写法:inta5|={0};
6 三、 一维数组的初始化 1. 概念 : 在定义一维数组时对各元素指定初始值称为 数组的初始化 如: int a[5] = { 1 , 3 , 5 , 7 , 9 } ; 2. 说明 (1) 对数组的全体元素指定初值, 初值用 { } 括起来, 数据 之间用逗号分开. 在这种情况下, 可以不指明数组的 长度, 系统会根据{ }内数据的个数确定数组的长度 如 : int a[ ] = { 1 , 3 , 5 , 7 , 9 } ; (2) 对数组中部分元素指定初值( 这时不能省略数组长度 ) 如 : int a[5] = { 1 , 3 , 5 }; (3) 使数组中的全部元素初始值都为 0 如: int a[5] = { 0 , 0 , 0 , 0 , 0 } ; 更简单的写法: int a[5]={ 0 } ;
例1:用数组求 fibonacci数列的前20个数 #include <stdio. h> f[0]|1 void main() f2|=f10+l {inti,f20}={1,1}; for(i=2;i<20;i++) f122 f3=1]+f2 们i=i2+i1l;33 for(i=0;i<20;i++) f45 i14|=2|+3 if(i%4=0) f58 printf(\n” printf(%d”,fil); i196765
7 例1: 用数组求fibonacci数列的前20个数 #include <stdio.h> void main( ) { int i , f[20]={1,1}; for ( i=2 ; i<20 ; i++) f[i]=f[i-2]+f[i-1]; for ( i=0; i<20 ; i++) { if ( i%4==0 ) printf(“\n”); printf(“%6d”, f[i] ); } } 1 1 0 0 0 0 : 0 f[0] f[1] f[2] f[3] f[4] f[5] : f[19] 2 3 5 8 6765 i=2 f[2]=f[0]+f[1] i=3 f[3]=f[1]+f[2] i=4 f[4]=f[2]+f[3]
例2:输入一个数据,在已知数组中查找是否有该数据 #include <stdio.h> 9 yoid main 0 i int i,X inta[10={5,8,0,1,9,2,6,3,7,4} a input(“ n input a number:”); scanf(“%od”,&x); for(i=0;i<10;i++) if(x==ai) a5] printf("find!n”); 5801926374 a 6 break: a if(i==10) 8 printf("no find!n”);
8 例2: 输入一个数据,在已知数组中查找是否有该数据 5 8 0 1 9 2 6 3 7 4 x 9 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] #include <stdio.h> void main() { int i , x ; int a[10]={ 5, 8, 0, 1, 9, 2, 6, 3, 7, 4 }; inputf (“\n input a number:”) ; scanf(“%d”, &x); for ( i=0 ; i<10 ; i++) if ( x==a[i] ) { printf(“find!\n”); break; } if ( i==10 ) printf(“no find!\n”); }
例3:用冒泡排序法对6个数进行排序(从小到大) 09 2 2 72541 725 254 a[2 3 7 579 4579 24579 5 9 初始状态第1轮第2轮第3轮第4轮第5轮 冒泡排序方法:依次比较相邻的两个数,将小数放前面, 大数放后面.n个数排序需要进行n-1轮比较,从第1轮到 第n-1轮,各轮的比较次数依次为:n-1次、n2次∴.1次
9 例3: 用冒泡排序法对6个数进行排序(从小到大) 9 7 2 5 4 1 a[0] a[1] a[2] a[3] a[4] a[5] 7 2 5 4 1 9 2 7 7 5 4 71 2 5 4 1 7 9 4 51 5 2 4 1 5 7 9 2 1 4 5 7 9 1 4 1 2 冒泡排序方法: 依次比较相邻的两个数,将小数放前面, 大数放后面. n个数排序需要进行n-1轮比较, 从第1轮到 第n-1轮, 各轮的比较次数依次为:n-1次、n-2次 … 1次 9 7 2 5 4 91 9 9 9 9 7 2 5 4 1 初始状态 第1轮 第2轮 第3轮 第4轮 第5轮 7
#include <stdio.h> void main( 输入6个数据 i int a6, i, j for(i=0;i<6;i++) 用嵌套的for循环实现排序 scanf(“%od”,&al[il) 外层循环控制进行几轮比较 for(i=0;i<5;i++) 内层循环控制每一轮的比较次数 for(j=0;j<5-i;j++) if(a[jpalj+l) 如果前面的数大于后 i tall; 面的数,则进行交换 a[j=aj+1; a[j+1=t; 输出排序后的6个数据 for(i=0;i<6;i++) printf(0/",a[il) 10
10 #include <stdio.h> void main( ) { int a[6] , i , j , t; for ( i=0 ; i<6 ; i++) scanf(“%d”, &a[i] ); for ( i=0 ; i<5 ; i++) for ( j=0 ; j<5-i ; j++) if ( a[j]>a[j+1] ) { t=a[j] ; a[j]=a[j+1] ; a[j+1]=t ; } for ( i=0 ; i<6 ; i++) printf( “%3d”, a[i] ); } 输入6个数据 用嵌套的for循环实现排序 外层循环控制进行几轮比较 内层循环控制每一轮的比较次数 如果前面的数大于后 面的数,则进行交换 输出排序后的6个数据