买潋組
§71维数组 数组:数组是一组类型相同有序数据的集合。用数组名和 下标来唯一确定数组中的元素。 一维数组的定义 形式:类型说明符数组名常量表达式 例、inta[10] 10个元素分别用: a[0]、a[1]、a[2]、a[3]、a[4]、…、al[8]、al[9] 注意:(1)C语言中,数组下标从0开始 (2)C语言不允许对数组的大小做动态定义 例如:intn=5; int a;
§7.1 一维数组 • 数组:数组是一组类型相同有序数据的集合。用数组名和 下标来唯一确定数组中的元素。 一 、一维数组的定义 形式:类型说明符 数组名 [常量表达式] 例、 int a[10] 10个元素分别用: a[0]、a[1]、a[2]、a[3]、a[4]、....、a[8]、a[9]。 注意:(1)C语言中,数组下标从0开始. (2)C语言不允许对数组的大小做动态定义. 例如:int n=5; int a[n];
、数组元素的引用方式 数组名[下标] 例:a0]=a5+7-a2*3 「例7,1使数组元素a|0~a9的值为0~9,然后逆 序输出。 main i int i, a[ 10 for(i=0;=9;i++) for(i=9;讠>=0;i-) rinf(/d",]; 运行输出:9876543210
二、数组元素的引用方式 数组名 [下标] 例: a[0] = a[5] + a[7] - a[2*3] [例7.1] 使数组元素a[0]~a[9]的值为0~9,然后逆 序输出。 main () { int i,a[10]; for (i=0;i=0; i--) printf("%d ",a[i]); } 运行输出: 9 8 7 6 5 4 3 2 1 0
维数组的初始化 初始化:在定义时指定初始值,编译器把初值赋给数组变量 赋值:使用赋值语句,在程序运行时把值赋给数组变量, 如a|0=2 1、一般初始化, inta10={0,1,2,3,4,5,6,7,8,9};花括号后有分号 int array10]={1,2,3,4,5,6,7,8,9,10} 2、部分元素初始化,inta[10={0,1,2,3,4}; 仅前5个元素赋初值,后5个元素未指顶初值 3、全部元素均初始化为0, inta[10]={0,0,0,0,0,0,0,0,0,0}; a{0]~a⑨9=03 4、在对全部数组元素赋初值是,可以不指定数组长度。 例如:inta5]-={1,2,3,4,5};可以写成:inta|={1,2,3,4,5};
三、一维数组的初始化 初始化:在定义时指定初始值,编译器把初值赋给数组变量。 赋 值:使用赋值语句,在程序运行时把值赋给数组变量, 如a[0] = 2。 1、一般初始化, 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、部分元素初始化, int a[10] = {0,1,2,3,4}; 仅前5个元素赋初值,后5个元素未指顶初值。 3、全部元素均初始化为0, int a[10] = {0,0,0,0,0,0,0,0,0,0}; /*a{0]~a[9]=0*/ 4、在对全部数组元素赋初值是,可以不指定数组长度。 例如: int a[5]={1,2,3,4,5}; 可以写成:int a[ ]={1,2,3,4,5};
四 维数组程序举例 「例7用数组来处理 Fibonacci数列的前40项。 #include stdio. h' main (0 f int i; long f40={1,1}; for(i=2;i<40;i++) 印=fi-1]+fi-2]; for(i=0;i<40;i++) fif(i%4==0)printf( n"); printf("%12ld" fiD) getch0;
四、一维数组程序举例 [例7.2] 用数组来处理Fibonicci数列的前40项。 #include "stdio.h" main() { int i; long f[40]={1,1}; for(i=2; i<40; i++) f[i]=f[i-1]+f[i-2]; for(i=0; i<40; i++) { if(i%4==0) printf("\n"); printf("%12ld",f[i]); } getch(); }
「例7把含有10个整数的数组元素按逆序排列。 #include stdio. h maino {inta[10],讠j,t; for(i=0;i<10;i++) scan f"%d",&a[il); for(i=0j=9;-j计+,j-) Rtai; adai; alil=t for(i=0;i<10;i++) printf(%5d", aiD) printf("Ⅶn")z retch
[例7.3]把含有10个整数的数组元素按逆序排列。 #include "stdio.h" main() { int a[10], i, j, t; for(i=0; i<10; i++) scanf("%d", &a[i]); for(i=0,j=9; i<j; i++,j--) { t=a[i]; a[i]=a[j]; a[j]=t; } for(i=0; i<10; i++) printf("%5d",a[i]); printf("\n"); getch(); }
例,4用冒泡法对10个整数按由小到大排序。 #include stdio. h main (0 fint a[], i,j, t; for(i=0;iaj+lD Stall; all=aj+l; aljtll =t; for(i=0;i<10;i++) printf("%5d", aiD printi("Ⅶn");
[例7.4] 用冒泡法对10个整数按由小到大排序。 #include "stdio.h" main() { int a[10], i, j, t; for(i=0; ia[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t;} for(i=0; i<10; i++) printf("%5d", a[i]); printf("\n"); }
#include stdio.h' maint (0 fint a[],i,j,t, flag: for(i=0; i<10; i++)scanf(" %d", &ai: for(i=0;i<9;i++) ffag=0 for(j=0;j<10-1-i;j++) if(alkali+lD Stall; ajaljtl aljtllt; flag=1; if(flag==0)break;) for(i=0;i<10;i++) printf("%5d", aiD; print"Ⅶn");
#include "stdio.h" main() { int a[10], i, j, t, flag; for(i=0; ia[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; flag=1; } if(flag==0) break; } for(i=0; i<10; i++) printf("%5d", a[i]); printf("\n"); }
例7.5用选择法对10个整数按由小到大排序。 #include 'stdio. h main fint i, j, min, t, a 10; for(i=0;iaid min=j; if(min=ita;a=amin]; amin=t for(i=0;i<10;i++) printf(%5d,ai) printf("In");
[例7.5]用选择法对10个整数按由小到大排序。 #include "stdio.h" main() { int i, j, min, t, a[10]; for(i=0; ia[j]) min=j; if(min!=i) {t=a[i];a[i]=a[min];a[min]=t;} } for(i=0; i<10; i++) printf("%5d", a[i]); printf("\n"); }
§72二维数组 一般形式 类型说明符数组名「常量表达式1常量表达式2 例、 float a[3][4];a为3×4(3行4列)的数组 float b5[1l0b为5×10(5行10列)的数组 维数组的理解: 二维数组的元素在内存中的存放顺序: 按行存放,即:先顺序存放第一行的元素, 再存放第二行的元素。(最右边的下标变 化最快,第一维的下标变化最慢)
§7.2 二维数组 一般形式: 类型说明符 数组名 [常量表达式1][常量表达式2] 例、float a[3][4]; a为3×4(3行4列)的数组 float b[5][10]; b为5×10(5行10列)的数组 二维数组的理解: 二维数组的元素在内存中的存放顺序: 按行存放,即:先顺序存放第一行的元素, 再存放第二行的元素。(最右边的下标变 化最快,第一维的下标变化最慢)