第六节课
复习
- 仔细阅读以下代码,请问最后会如何输出?(尽量自己手算或者脑子算)(10分钟)
int a[4] = {1,2,3,4}; int i = 0; while(i>0) { a[i]=5; i=i-1;} a[4] = 9; a[2] = 2; while(i<4) { printf("%d ",a[i]); i = i+1; }
定义一个名称为 array 并且数量为 5 的一个整形数组
float a[3];
这条语句的作用是什么如何给一个数组进行初始化
循环(for)
我在前面给大家讲过 while
循环,它作用是当小括号 ()
内的 表达式 结果为 真 时,不断地重复 大括号 {}
内的语句。
而在我个人一般的代码编写中,更倾向于使用 for
循环。
因为它在代码中更清楚,更方便
下面我们来看一下两组代码的对比
// while循环
int a[5];
int i=0;
while(i<5)
{
/*代码段*/
i = i+1;
}
// for循环
int a[5];
int i;
for(i=0; i<5; i=i+1)
{
/*代码段*/
}
相对于 while
,用 for
写出来的循环更整洁明了
特别是在于 **在大括号内不需要添加 i=i+1;
**
这就避免了有时候忘记添加自增语句而导致的 bug
并且能让花括号内的代码更加易懂
而 初始化 、判断 、 结束后执行(一般用于自增) 这三项写在循环的开头
也能使阅读代码的人不必先翻查一遍才能知道运行的方式
比如不需要去找 i=i+1;
在哪里
当然,还是得要根据情况来选择使用哪一个
二维数组
相对于普通数组来说,二维数组能更易于储存、操作更多的数据
在我们的毕业作业“走迷宫”中
也会用到 字符 类型的二维数组来储存我们的 迷宫地图
所以希望同学们能够认真听讲
不过,关于字符数组之类的知识我们下一节课再讲
今天我们先介绍更好理解的int
类型二维数组
二维数组 ,顾名思义,与普通数组不同的地方在于它是二维的(这不是废话吗
普通的数组像一台小火车,只有行
而二维数组不仅有行,还有列
首先下面这个是大家都知道的一维数组的定义方式
int array[8];
那么二维数组怎么定义呢?其实很简单
int array2[2][4];
只需要在一维数组后面加多一个中括号,里面再填上数字就好了
上面这个数组是一个,2行4列 的数组,数组下标如下:
array2[0][0] | array2[0][1] | array2[0][2] | array2[0][3] |
---|---|---|---|
array2[1][0] | array2[1][1] | array2[1][2] | array2[1][3] |
- 第一个中括号内的数字,代表 行
- 第二个中括号内的数字,代表 列
如果说普通数组可以存一组数据的话
二维数组就可以存多组数据
那么利用上刚才学习的for
循环我们就可以非常方便地操作二维数组了
int array[2][4];
int i, j;
for(i=0; i<2; i++)
{
for(j=0; j<4; j++)
{
scanf("%d",&array[i][j]);
}
}