文档介绍:C语言程序设计
主讲:林碧君
一、复习旧课
1)下列一维数组定义哪些是对的
1、一维数组基本知识
main()
{ a[10];
……
}
main()
{ int i=9,a[i];
……
}
main()
{ int a[4]={1,2,3,4,5};
……
}
#define i=5
main()
{ int a[i];
……
}
一、复习旧课
2)一维数组的引用错在哪里?
1、一维数组基本知识
main()
{ int i,a[4];
for(i=1;i<4;i++)
printf(“%d”,a);
……
}
main()
{ int a[5]={1,2,3,4,5};
int i;
for(i=0;i<5;i++)
printf(“%d”,a[5]);
……
}
一、复习旧课
3)写出以下数列在第3次冒泡后的排列次序
34
12
55
67
4
93
11
1、一维数组基本知识
一、复习旧课
4)请用一维数组编写下列数列(著名的fibonaci数列)
1,1,2,3,5,8,13,21,34……
教师分析,请同学上来实操
1、一维数组基本知识
N项,N要求从键盘输入
二维数组
1 定义:与一维数组一致,只是多了个下标
如:int a[4][3],表示这是一个4 行3列的数组。如图所
示(为方便理解,将地址写在单元格内)
a[0][0]
a[0][1]
a[0][2]
a[1][0]
a[1][1]
a[1][2]
a[2][0]
a[2][1]
a[2][2]
a[3][0]
a[3][1]
a[3][2]
二维数组
2 赋值:可在定义时直接赋值。
如 int a[2][3]={ {0,1,2},{4,5,6} }有时为了清晰理解,通常写成:int a[2][3]={{0,1,2},
{4,5,6}};
也可不用加内花括号将其分开。如上题等价于
int a[2][3]={0,1,2,4,5,6},系统会根据二维数组
定义的大小自动存放
想一想:你能画出上题中,二维数组a[2][3]被
赋值后在内存中的矩阵形式吗?
二维数组
2赋值:与一维数组一样,如果全部不赋值,即默认为0,亦可只对一部分赋值。如;
int a[2][2]={{11},{12},},未被赋值的部分为0
注意:1 二维数组与一维数组一样,下标也是从0开始
当有赋值时,二维数组的行值可以省略,但列值一般不能省略
a[0][0] 11
a[0][1] 0
a[1][0] 12
a[1][1] 0
二维数组
如下列几个赋值是等价的,不同的是一维数组如果有赋值,(int a[]={1,2,3}),但二维数组只能省略行下标,列下标不能省。
int b[][4]={{1,2,3,4},{5,6,7,8}};
int b[2][4]={1,2,3,4,5,6,7,8};
int b[][4]= {1,2,3,4,5,6,7,8};
注意:2 二维数组也不能一次性引用,输入输出必须循环操作;二维数组操作使用双重循环比较方便