C语言基础-循环与数组

目录

循环

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 列,可抽象如下

C语言基础-循环与数组_第1张图片

二维数组初始化:

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]
C语言基础-循环与数组_第2张图片

二维数组元素遍历:

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]);

你可能感兴趣的:(c语言,开发语言)