第6章数组 61—维数组的定义 6.2一维数组元素的引用 63一维数组的初始化 64二维数组的定义 6.5二维数组的引用 66二维数组的初始化 6,7字符数组
第 6 章 数 组 6.1 一维数组的定义 6.2 一维数组元素的引用 6.3 一维数组的初始化 6.4 二维数组的定义 6.5 二维数组的引用 6.6 二维数组的初始化 6.7 字符数组
第6章数组 61一维数组的定义 语句形式: 类型说明符数组名[常量表达式] 说明 ①数组名定名规则和变量名相同。 ②常量表达式表示数组元素的个数,即数组的长度。如: int a[10]; 表示a数组有10个元素:a[o]a1,a[2]…,a9],没 有a[10]。 注意:数组的下标是从0开始的
第 6 章 数 组 6.1 一维数组的定义 语句形式 : 类型说明符 数组名[常量表达式] 说明 : 数组名定名规则和变量名相同。 常量表达式表示数组元素的个数,即数组的长度。如: int a[10]; 表示a数组有10个元素:a[0],a[1],a[2],, a[9],没 有a[10]。 注意:数组的下标是从 0 开始的
③c不允许对数组进行动态定义。以下作法是错误的。 int n; scanf(“%d”,&n); int a[n]; 62一维数组元素的引用 数组必须先定义,然后再使用。c的数组元素只能 逐个引用而不能一次引用整个数组。 维数组元素的表示形式为 数组名[下标 下标可以是整型常量或整型表达式
C不允许对数组进行动态定义。以下作法是错误的。 int n; scanf(“%d”,&n); int a[n]; 6.2 一维数组元素的引用 数组必须先定义,然后再使用。C的数组元素只能 逐个引用而不能一次引用整个数组。 一维数组元素的表示形式为: 数组名[下标] 下标可以是整型常量或整型表达式
例61 main( i int i,a[] for(i=0;i=9;i++) a[i]=i+1 for(i=9;i>=0;i-) printf(%2d,a[ 1D; 输出结果: 10987654321
例6.1 main( ) { int i,a[10]; for (i=0; i=0; i--) printf(“%2d”,a[ i]); } 输出结果: 10 9 8 7 6 5 4 3 2 1
63一维数组的初始化 赋值语句和输入语句均可使数组中的元素赋初值,但占用运 行时间。简捷的方法是在程序运行之前使数组初始化。 对数组元素初始化的方法有: 1.在定义数组时对数组元素赋以初值 如: static int a[10]={0,1,2,3,4,5,6,7,8,9} 说明:①依次赋予数组元素的初值必须用{}括起来。 ②“ static”是c的一个关键字,意为“静态存储”。C规定只 静态存储( static数组和外部存储( extern)数组才能初始化。 2.可以只给一部分元素赋值 3A static int a[10]=[0, 1, 2, 3, 4); 3.在C中系统会自动对所定义的静态数组的每个元素赋初值0 4.对全部数组元素赋初值时,可以不指定数组长度 如: static int a[5]={1,2,3,4,5} 可以写成: static int a[]=[1, 2,3, 4,553
6.3 一维数组的初始化 赋值语句和输入语句均可使数组中的元素赋初值,但占用运 行时间。简捷的方法是在程序运行之前使数组初始化。 对数组元素初始化的方法有: 1. 在定义数组时对数组元素赋以初值 如: static int a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 说明: 依次赋予数组元素的初值必须用 { } 括起来。 “static”是C的一个关键字,意为“静态存储”。C规定只有 静态存储(static)数组和外部存储(extern)数组才能初始化。 2. 可以只给一部分元素赋值 如: static int a[10] = { 0, 1, 2, 3, 4 }; 3. 在C中系统会自动对所定义的静态数组的每个元素赋初值0 4. 对全部数组元素赋初值时,可以不指定数组长度 如: static int a[5] = { 1, 2, 3, 4, 5 }; 可以写成: static int a[ ] = { 1, 2, 3, 4, 5 };
例62将一个十进制整数转换成二进制数。 main( f int i, k, r, x, b[16]; printf("Enter an integer x:); scanf( %d, &x) printf("%6d binary number is In",x); k do r=x%2;b[++k]=r;x/=2;} while x= o) for(i=k; i>=0; i-) printf((%1d”,b[) printf("In)
main( ) { int i, k, r, x, b[16]; printf(“Enter an integer x :”); scanf(“%d”,&x); printf(“%6d binary number is :\n”,x); k = -1; do { r = x%2; b[++k]= r ; x/=2; } while (x != 0); for ( i=k; i>=0; i--) printf(“%1d”,b[i]); printf(“\n”); } 例6.2 将一个十进制整数转换成二进制数
例63用冒泡法将10个数按从小到大排序。 冒泡法的思路是:将相邻两个数进行比较,将小的调到前头。 若有这样一组数:984520,则按如下图所示进行操作。 849520 比较与交换的操作直到数关调到最后的位置,然后将剩下 的5个数84520进行下一轮比钱与交换,直至排好序为止 main( fint i,i, t, a[11]; printf("input 10 numbers :In); for(i=1;ia[i+i])[=a[j a[jai+i; a[+iet; printf("the sorted numbers :n); for(i=1; i<11; i++) printf(%d, a[D)
例6.3 用冒泡法将 10 个数按从小到大排序。 冒泡法的思路是:将相邻两个数进行比较,将小的调到前头。 若有这样一组数:9 8 4 5 2 0,则按如下图所示进行操作。 9 8 4 5 2 0 比较 交换 8 94 9 比较与交换的操作直到数字 9 调到最后的位置,然后将剩下 的 5个数 8 4 5 2 0 进行下一轮比较与交换,直至排好序为止。 当有n个数时需要作n–1 趟这样的搜索, 每趟搜索 要作n–1次比较。 main( ) {int i, j,t,a[11]; printf(“input 10 numbers :\n”); for (i=1; ia[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]= t; } printf(“the sorted numbers :\n”); for (i=1; i<11; i++) printf(“%d”,a[i]); }
64二维数组的定义 定义形式 类型说明符数组名常量表达式们[常量表达式2 如: float a[3[4]; 定义a是一个3x4(3行4列)的数组,即a数组有12个元素。 但不得写成: float a[3,4] 注意: ①二维数组中元素的排列顺序为按行按列。即存放完第 1行的元素后再接着存放第2行的元素,依次类推。 ②C允许定义多维数组。如: float a[3][4][5;
6.4 二维数组的定义 定义形式: 类型说明符 数组名[常量表达式1] [常量表达式2] 如: float a[3][4]; 定义a是一个3x4(3行4列)的数组,即a数组有12个元素。 但不得写成:float a[3,4]; 注意: C允许定义多维数组。 二维数组中元素的排列顺序为按行按列。即存放完第 1 行的元素后再接着存放第 2 行的元素,依次类推。 float a[3][4][5]; 如:
6.5二维数组的引用 二维数组元素的表示形式为 数组名[下标们下标2 如:a[表示二维数组a中第1的第1个元素 a2]3]表示二维数组a中第3行的第4个元素。 下标可以是整型常量或整型表达式,但其值不得超过上限 66二维数组的初始化 二维数组的初始化可用下列方法之 ①按行给二维数组赋初值。如: static int a3][4]={1,2,3,4}{5,6,7,8},{9,10,11,12} 这种赋初值的方法比较直观,一行对一行,不易遗漏, 易于检查。 ②顺序按行按列给二维数组赋初值。如 static int al3]4]={1,23,456,7,89,10,11,12}
6.5 二维数组的引用 二维数组元素的表示形式为: 数组名 [下标1][下标2] 如:a[0][0] 表示二维数组a中第1行的第1个元素。 a[2][3] 表示二维数组a中第3行的第4个元素。 下标可以是整型常量或整型表达式,但其值不得超过上限 6.6 二维数组的初始化 二维数组的初始化可用下列方法之一: 按行给二维数组赋初值。如: static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 这种赋初值的方法比较直观,一行对一行,不易遗漏, 易于检查。 顺序按行按列给二维数组赋初值。如: static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
③可以对部分元素赋初值。如: 给每一行的第 NA static int a[3][4]={1}{5}{9}} 赋给第一行的第 static int a[3][4]={1},{56} 赋给第一行和第 static int a[3][4]={1}{3,{9}} 三行的第一个元 注意:所赋给的值是按行按列对号入座的 素第二行未赋值 ④对二维数组的全部元素赋初值时,可以不指定第一维 的长度,但不得省去第二维的长度。如: static int a3]4]={1,234,5,6,78,9,10,11,12} 可以写成: static int a[]4]={1,2,3,4,5,6,7,8910,11,12} 同样: static int a4]={00,3}{},{0,10}} 也是正确的
可以对部分元素赋初值。如: static int a[3][4]={{1}, {5}, {9}}; 给每一行的第 一个元素赋值 static int a[3][4]={{1}, {5,6} }; 赋给第一行的第 一个元素和第二 static int a[3][4]={{1}, { }, {9} }; 行的第1,2个元素 赋给第一行和第 三行的第一个元 素第二行未赋值 注意: 所赋给的值是按行按列对号入座的。 对二维数组的全部元素赋初值时,可以不指定第一维 的长度,但不得省去第二维的长度。 如: static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 可以写成: static int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 同样: static int a[ ][4]={{0,0,3}, { }, {0,10} }; 也是正确的