数组的实质:批发变量。
引例:有6个数,1,3,5,2,4,6。统计它们的和、平均数。
单个指定变量a,b,c....很繁琐,希望出现一组变量(比如a),各个数依次放在a1,a2,a3....a6中。
声明与初始化,类比于变量:
声明 | 初始化 | 含义 | 注意事项 |
变量的声明:int a; | 变量的初始化:a=6; | 有个变量a,值为6 | - |
数组的声明:int[] a; | 数组的初始化:a=new int[6]; | 有一堆变量,用a表示,一共有6个 | 下标从0开始,到5结束 |
数组可以在声明的时候赋初值,系统根据初值的个数,完成初始化,如:
int[] a={1,3,5,2,4,6};
对于需要赋初值内容不多的一维数组,以下方式也很常见:
int[] a = new int[100]; a[0] = a[1] = 1;
或者这样,效果也是一样的:
int[] a; a= new int[100]; a[0] = a[1] = 1;
只要通过new申请了存储空间,没有赋初值的数组元素,得到的都是该类型的默认值(例如int的默认值是0)
数组元素的访问:数组名[下标]
例:
int[] a = { 1, 3, 5, 2, 4, 6 }; Console.WriteLine(a[0]); Console.WriteLine(a[1]); Console.WriteLine(a[2]); Console.WriteLine(a[3]); Console.WriteLine(a[4]); Console.WriteLine(a[5]);
单个数组元素,可以当做变量来使用:
int[] a = { 1, 3, 5, 2, 4, 6 }; a[2] = (a[0] + a[3]) * a[5]; Console.WriteLine(a[2]);
运行结果是:18。
数组元素的遍历。
由于1、数组下标表示元素在数组中的位置;2、数组下标是“0~数组长度-1”的连续整数。
所以,一般利用循环对数组进行遍历及批量操作。
例:打印数组(1,3,5,2,4,6)中所有的数
int[] a = { 1, 3, 5, 2, 4, 6 }; for (int i = 0; i < 6; i++) { Console.WriteLine(a[i]); }
通常,我们用数组名.Length表示数组的长度。上面的程序,更通用的写法就是:
int[] a = { 1, 3, 5, 2, 4, 6 }; for (int i = 0; i < a.Length; i++) { Console.WriteLine(a[i]); }
数组小练习:
- 声明一个长度为100的一维整型数组,依次赋值1~100,输出它们。
- 把上面数组中的内容反序输出。
- 求1,3,5,2,4,6的和与平均数。
- 输出100以内的偶数。
- 求出2800、2900、2750和3100中的最小值。
- 从键盘输入5个学生的成绩,输出开方乘10之后不及格的成绩。
- 乞丐领赏。
- 计算斐波拉切数列前20项的值(1,1,2,3,5,8,13...)
- 对一组数字(1,3,5,2,4,6)进行移位操作(如右移:6,1,3,5,2,4)
- 把50插入到{85,63,49,22,10}中的正确位置。
- 把{85,63,49,22,10}按从小到大的顺序排序输出。
- 对一组数字(1,3,5,2,4,6)进行查、改、增、删。
- 求一组数字中的最大值和第二大值。
补充:
foreach
变量和数组的赋值、修改
P136,List
二维数组
基础:意义、声明、申请存储空间、赋初值
基本操作:遍历、长度(总长、各维长度)
练习:
- 对0-1矩阵取反
- 矩阵转置
- 判断象棋棋子的覆盖范围
- 打印杨辉三角形