【c语言】分支循环总结

目录

一、分支

1、if语句

1)基本形式

2)功能介绍

3)   else子句

4) else子句与if的配对

5)应用举例

2、switch语句

1)基本形式

2)功能介绍

二、循环

1、for循环

1)基本形式

2、while循环

1)基本形式

2)功能介绍

3) 技巧

3、do-while循环

1)基本形式

2)功能介绍

4、循环的嵌套

5、break语句和continue语句

1)基本形式

2)功能介绍


一、分支

1、if语句

1)基本形式

if(...) 
{语句}

2)功能介绍

       实现判断功能,当括号内的表达式的值为真(非零的整型、浮点型、布尔型),执行 {  } 内的语句(若为单个语句,可以不加大括号,但一般加上,若为两个及以上的语句,即复合语句,则必须加上),当括号内的表达式的值为假(零),不执行 {  } 内的语句。

3)   else子句

       为了实现分支,可以使用else子句,它的基本形式:

if(...)

{语句}

else
{语句}

        同样,else后面的语句若为单个语句,可以不加大括号,但一般加上,若为两个及以上的语句,即复合语句,则必须加上。当括号内的逻辑表达式的值为假(零),就执行else子句。

        else子句后面还可以再嵌套if-else结构,实现分支后再分支:

if(...)

{语句}

else if(...)
        {语句}

        else if(...)

                {语句}

                else

                {语句}

                   ...

        以上结构称为锯齿状结构,它的好处是:使程序的逻辑更清晰,提高了程序的可读性。此外,还有一种结构:

if(...) 语句;

else if(...) 语句;

else if(...) 语句;

else if(...) 语句;

...

        这种结构与锯齿状结构等价,当大括号内的语句很长时,推荐使用锯齿状结构,反之使用以上结构。

        4) else子句与if的配对

        只需记住这句话:else子句总是与它上面最近的if配对

        观察以下结构:

if (x == 0)
    if (y == 0) error () ;
else
{
    z = X + Y;
    f(&z);
{

        第二行的if语句与第三行的else子句配对。编者在此故意将第一行与第三行对齐,意在误导读者将第一行的if与第三行的else配对。

        如果要把第一行的 if 与第三行的 else 配对,只需多加一个括号:

if (x == 0)
{
    if (y == 0) error () ;
}
else
{
    z = X + Y;
    f(&z);
{

        另外,else子句不能单独存在,必须有if语句与它配对。if语句可以单独使用。

5)应用举例

if(x > 0)
{
    printf("%d是正数“, x);
}
else if(x == 0)
{
    printf("%d是零“, x);
}
else 
{
    printf("%d是负数“, x);
}

2、switch语句

1)基本形式

 switch(  )

{

case 1:语句;break;

case 2:语句;break;

case 3:语句;break;

...

default :语句;break;

}

2)功能介绍

        switch语句用来实现多分支。switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重 if...else 改成更易⽤、可读性更好的形式。它实现多分支的原理是:先判断括号里的变量a(只能是整数类型(如 int、long)、字符类型(char)或者枚举类型,而不能是浮点类型(float)、双精度浮点类型(double)或者布尔类型(boolean))的值,若为1,则执行case 1后的语句,若为2,则执行case 2后的语句,以此类推。注意,case和后边的数字之间必须有空格,语句也可以是复合语句。若语句后没有break;则会一直执行后面的语句,直到最后一个case语句或default语句。所以,一般在每个case语句末尾加上break;

switch (a)
    {
        case 1: b = 30;
        case 2: b = 20;
        case 3: b = 16;
        default: b = 0;
    }
//若 a = 1 ,则 b = 0 ;

二、循环

1、for循环

1)基本形式

for(语句1:语句2:语句3)

{循环体}

       for循环是最常用的循环语句,原因是:for循环将控制循环的关键语句集中在一个括号内,便于管理和维护。接下来介绍这些语句的作用:

       语句1的作用是给循环变量赋初值。

       语句2的作用是给循环设置条件。

       语句3是改变循环变量的值。

       例如:

int i;

for(i = 1 :i <= 2:i++)

{循环体}

        先执行 i = 1 ,再判断 i 是否小于等于 2 ,显然 1 <= 2 为真 ,执行循环体 , 循环体结束后 , 执行 i++ , 此时 i = 2 ,再判断 i 是否小于等于 2 ,显然 2 <= 2 为真 ,执行循环体 , 循环体结束后 , 执行 i++ , 此时 i = 3 ,再判断 i 是否小于等于 2 ,显然 3 <= 2 为假  ,退出循环 ,不再执行循环体。

        for循环的执行流程一般为:语句1---->语句2---->{循环体}---->语句3---->语句2---->{循环体}---->语句3---->语句2   ...   直到语句2判断为假,退出循环。语句1只执行一次,之后不再执行。

       语句1、语句2、语句3都可以省略,可以写成 for( ;语句2;语句3)、for(语句1 ;;语句3)...  甚至可以写成for( ;;)但明显没有意义。要注意,虽然语句1、语句2、语句3都可以省略,但分号不能省略

      语句1、语句2、语句3可以是”多条语句“,例如 for(int i = 1,int j = 1 ;i  <= 10 ; i++ , j++) 是合法的。

      语句1不仅有给循环变量赋初值的功能,还能当场定义循环变量并赋初值,如 for(int i = 1;语句2 ;语句3)。

      可以看出,for循环非常灵活。

2、while循环

1)基本形式

while(...)

{循环体}

2)功能介绍

      先判断括号内的语句是否为真,如果为真,就执行循环体,否则退出循环。如

while(1)

{循环体}

//1 恒为真,所以会一直执行循环体,称为死循环。

注意:while()括号内是循环继续的条件,而不是循环结束的条件。 

3) 技巧

while(k--)
{
    //循环体执行 k 次
}

while(--k)
{
    //循环体执行 k - 1 次
}

3、do-while循环

1)基本形式

do

{循环体}

while(...);

2)功能介绍

        先执行一次循环体,再判断括号内的语句是否为真(括号后要有分号),如果为真,就执行循环体,否则退出循环。这种循环一般用在已知至少要执行一次循环体的情况,如判断一个数是几位数(任何数至少有一位数)。

4、循环的嵌套

        for循环、while循环、do-while循环三者可以相互嵌套。如:

int arrey[3][3];

for( int i = 0 ; i <= 2 ; i++)

{

        for( int j = 0 ; j <= 2 ; j++)//常用这种形式对数组初始化
        {

                 scanf("%d",&a[i][j]);

        }

}

      应注意,在退出内循环后,若再次进入内循环,则仍然要执行语句1,即循环变量赋初值的操作。

      for循环、while循环、do-while循环三者还可以多次嵌套,如:

for( int i = 0 ; i <= 2 ; i++)

{

        for( int j = 0 ; j <= 2 ; j++)
        {

                for( int k = 0 ; k <= 2 ; k++)

                {

                        循环体;//连续嵌套了三个for循环。

                }

        }

}

5、break语句和continue语句

1)基本形式

break;

continue;

2)功能介绍

break语句:彻底结束循环

continue语句:跳过本次循环

以for循环为例:

for( int i = 0 ; i <= 5 ; i++)

{

       if(i == 3)

       break;

       printf("%d ", i );

}

//运行结果: 0 1 2 

for( int i = 0 ; i <= 5 ; i++)

{

       if(i == 3)

       continue;

       printf("%d ", i );

}

//运行结果: 0 1 2 4 5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值