目录
循环
while 循环:
for 循环:
do while 循环:
中断循环:
break
continue:
数组
数组:用来装一组数的类型。声明形式如下:
定义数组类型变量:
下标:即各元素的编号,编号从 0 开始
二维数组
二维数组初始化:
二维数组元素遍历:
对二维数组元素赋值
循环
循环就是重复的执行一段代码
循环结构有三种:while 循环,for 循环,do while 循环
while 循环:
形式:
while(条件)
{
code;
//条件为真就重复执行
}
例题:
输出 1,2,3,4,5
int i = 1;
while (i <= 5)
{
printf("%d ", i);
i++;
}
注意点:
1.不要在小括号后面加分号
2.只有一条语句的时候可以不加大括号
3.条件恒为真的时候就是死循环
for 循环:
循环形式:
for (int i = 1; i<10; i++)
{
code;
}
三要素:
要素 1、循环控制变量有初始值,即 i=1,初始值不一定是 1,根据需要来设置
要素 2、循环控制变量参与条件,即 i<10
要素 3、循环控制变量规律变化,比如 i++,i+=3,i--等等,按照规律变化,乱变不行
小括号内被两个分号分成三部分,分别是要素 1,要素 2,要素 3
举例:输出 1,2,3,4,5
int i;
for (i = 1; i <= 5; i++)
{
printf("%d ", i);
}
do while 循环:
形式如下
int i = 1;
do
{
printf("%d ", i);
i++;
}while(i <= 5);
//有分号
执行过程:先执行,后判断条件
用得比较少
对比:
while for 叫入口条件循环,二者用谁都行,习惯哪个用哪个,没有好坏。
do while 叫出口条件循环,该循环至少执行一次
初始循环条件为真时,三者用谁都行。初始循环条件为假时,for,while 一次都不执行,do while
执行 1 次。
中断循环:
break
举例如下:
int i = 1;
while (i <= 5)
{
if (i==3) //i==3 时中断跳出循环
break;
printf("%d ", i);
i++;
}
执行过程:
1、i==1,i<=5 为真,执行循环,3 == i 为假,输出 i 即 1,然后 i++,i 变为 2
2、i==2,i<=5 为真,执行循环,3 == i 为假,输出 i 即 2,然后 i++,i 变为 3
3、i==3,i<=5 为真,执行循环,3 == i 为真,break 跳出循环
continue:
结束本次循环,跳到循环头,进行下一轮循环
如下:
int i;
for (i = 1; i <= 5; i++)
{
if (i == 2 || i == 5)
continue;
printf("%d ", i);
}
执行过程:
0、i=1,i==1,部分 1 只执行一次
1、i==1,i<=5 为真,执行循环,if 条件为假,继续执行,输出 i 即 1
2、i++,i 变为 2,i<=5 为真,执行循环,if 条件为真,跳到循环头
3、i++,i 变为 3,i<=5 为真,执行循环,if 条件为假,继续执行,输出 i 即 3
4、i++,i 变为 4,i<=5 为真,执行循环,if 条件为假,继续执行,输出 i 即 4
5、i++,i 变为 5,i<=5 为真,执行循环,if 条件为真,跳到循环头
6、i++,i 变为 6,i<=5 为假,结束循环
数组
数组:用来装一组数的类型。声明形式如下:
int a[10]; //声明数组 a
int 表示该数组用来装 int 类型的元素,其他类型就写其他的,比如 double b[10];
a 是数组名字,是合法的 C 语言标识符即可(比如不能取scanf)
[ ]是指示的作用,表示变量 a 是数组变量,没有[ ]即 int a,就是普通的整形变量
10 表示该数组最多装 10 个 int 类型数据,个数自定。
定义数组类型变量:
int a[10] = {6,4,7,3,8,3,2,8,1,0}; //初始化形式,最多初始化 10 个元素
int a[10] = {6,4,7,3,8};
//初始化部分元素,其他元素默认初始化成 0
int a[10] = {0};
//10 个元素全部初始化 0
int a[ ] = {6,4,7,3};
//初始化时可不写元素个数,系统根据元素多少自定
下标:即各元素的编号,编号从 0 开始
int a[5] = {4,2,7,8,4};
5 个元素的标号依次是:0,1,2,3,4 最大下标是元素个数-1,即 5-1
元素访问:数组名[下标]
5 个元素依次是:a[0],a[1],a[2],a[3],a[4]
相当于 5 个变量,即变量名字,跟 int c = 9;的 c 的用法一模一样
二维数组
上面学习的叫一维数组,此时就是二维数组,对比定义如下:
int a[5];
//一维数组
int c[3][4]; //二维数组
一维数组:元素是数据类型的的数组
二维数组:元素是一维数组的数组,本质还是一维数组
c 是 3 个元素的一维数组,每个元素是 含有4个 元素的一维数组。
二维数组一般理解为行列,对初学者比较友好,int a[行][列],即 3 行 4 列,可抽象如下
二维数组初始化:
int a[3][2] = {{3,2},{6,5},{8,7}}; //内部大括号对应每个小一维数组
3 2
6 5
8 7
int a[3][2] = {{3},{9},{8,7}};
//初始化部分元素,其他默认 0
3 0
9 0
8 7
int a[3][2] = {3,9,8 };
//没有内部大括号,就依次初始化各元素,其他为 0
3 9
8 0
0 0
int a[ ][2] = {3,9,8};
//初始化时,可不写行,系统根据数据个数计算行,2 行
3 9
8 0
下标:行下标与列下标,都是从 0 开始
另一个角度
a[0]是第 1 个小数组的数组名字
a[1]是第 2 个小数组的数组名字
a[2]是第 3 个小数组的数组名字
第一个小数组的第一个元素就是 a[0][0]
二维数组元素遍历:
int i, j, a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++)
{
printf("%d ", a[i][j]);
}
}
对二维数组元素赋值
scanf(
"%d"
, &a[2][2]);