【小黑chenchen】:3选择分支与循环

发布于:2022-11-01 ⋅ 阅读:(355) ⋅ 点赞:(0)

选择结构:if语句和switch语句

if语句的三种形式

1.

if(表达式)语句1;

// 单独的一个if语句

2.

if(表达式1)语句1;

else 语句2;

// if 和else组合

3.

if(表达式1)语句1;

else if(表达式2)语句2;

else if (表达式3)语句3;

....

....

....

else 语句n;

// if和else嵌套

■.

if和else默认只控制在它之后离它最近的一条语句

如果一个if或者else要控制多条语句,那么这些多条语句需要复合语句{}括起来,

整体作为一条语句来控制。

■.

else总是与在它之前第一个没有配对的if配对,并且一个else只能和一个if配对。

else不能单独存在。

___________________#

switch语句

一般形式:

switch(判断条件)

{

case 常量1:语句1;

case 常量2:语句2;

case 常量3;语句3;

......

case 常量n:语句n;

default: 语句n+1;

}

■.

switch......case 多分支结构

■.

判断switch之后括号中表达式的值,

如果等于哪个case之后的值就执行那个case之后的语句(包括default语句)。

(default语句可与case语句交换位置也就是改变他们的先后位置)

(只是可能会影响操作结果而已)

■.

case之后的条件(括号里的)只能是整型常量表达式,

不能是小数、变量,也不能造成重复。

■.

break跳转语句,

用于跳出switch结构或者循环结构

例如  case 常量3 :语句3;

                                break;

■.

语句可以为空

例如    case10:

           case 9:printf("A\n");

                          break;

(“合并”,即两个case共用语句)

■.

dafault语句可以省略,不影响switch结构操作运行。

______________________________________#

循环结构

for循环

while循环

do__whlie循环

for循环

for(表达式1表达式2表达式3)

{

    循环体

}

■.

表达式1:条件初始化

表达式2:循环继续的条件

表达式3:改变循环条件里的变量值

■.

分号必不可少,有且只有两个。

■.

for(;;)

类似这样的可以进行无数次循环的,称为死循环或无限循环

(3个表达式相互独立,可各自为空)

例如

    for (int i=0;;i++)
    {
        printf("%d\n", i++);
    }

输出0、2、4、6、8、10......................

______________________________#

while循环

while(表达式)

{

   循环体

}

■.

while之后的括号里必须给定条件,不能为空。

■.

表达式非0为真,为死循环

例1

              int i=0;

              while(1)

              {

                        printf("%d\n",i++);

               }

例二

    int i = 0;
    for (;;)
    {
        printf("%d\n", i++);
        if (i >= 10)                               //    
if判断条件执行break跳出循环
            break;
    }

■.

例如:给学生成绩打相应的等级


    int score = 0;
    int j = 0;
    while (j <5) //重复判断5个同学的成绩等级                        
    {
        scanf("%d", &score);

// if (score<0 || score>100)
            break;

// if (score<0 || score>100)
        {
            printf("请重新输入正确数据\n");
            continue;
        }

        switch (score / 10)
        {
        case 10:
        case 9:
            printf("A\n");
            break;
        case 8:
            printf("B\n");
            break;
        case 7:
        case 6:
            printf("C\n");
            break;
        default:
            printf("D\n");
        }
        j++;
    }

__________#

do__while循环

do

{

    循环体;

}while(表达式)

■.

while(表达式)

分号是结构的一部分,不可少。

■.

do__while循环:先执行循环体,在判断条件。(至少会执行一次循环体)

for循环和while循环:先判断条件,若为真则进入循环,不然不执行循环。

________________________________________________________#

循环的嵌套

循环中有循环(套娃)

执行规则:外层循环执行一轮,

                  内层循环需要整个循环完毕,

                  如此循环下去直至满足特定条件退出循环。

例如:

输出下面的图案

******

******                                           //   可以用for的嵌套循环结构

******

for (int i=0;i<3;i++)                     //   外层循环决定输出多少行

{

      for(int j=0;j<6;j++)        //   内层循环决定每一行输出多少个*号

      {

             printf("*");

      }

      printf("\n");                           // 内层循环整个执行完毕后换行  

}

_________________________________________________#

跳转语句

break语句

continue语句

goto语句

■.

break语句:

跳出并结束整个循环,循环不再继续。

(跳出一个离它最近的循环或switch结构)

只适用于switch结构和循环结构。

(若if_else条件判断结构在上述结构的循环体中,则可以在if_else循环体内加入break语句进行使用)

例如

输出一下图案:

******

******

    for (int i = 0; i<3; i++)
    {

        for (int j = 0; j < 6;j++)
        {
            if (i == 1)
                break;                              // 这里若用continue,在此循环结构中的输出效果相同
            else
                printf("*");

        }

        printf("\n");

    }

■.

continue语句:

跳出本次循环,继续执行下次循环。

(即不再执行本次循环中continue语句后的语句)

只适用于循环语句

continue语句在if__else条件判断结构和switch多分支结构中也可以使用

(前提是两者都在循环结构的循环体内)

■.

goto语句:(跳转到指定的位置)

标记:

.......

goto 标记;                     //     执行goto语句后,会跳转到标记的指定位置

goto 标记;                     //     先后顺序不同,程序运行时操作效果会不同

......

标记:

■.

goto语句可以方便有效的跳出多层循环

例一

for (int i = 0;; i++)
    {
        printf("%d\n", i++);
        if (i >= 10)goto end;                //    跳出该程序所存在的一层循环
    }
    end:

// 输出0、2、4、6、8、10

例二
    for (int i = 0; i<3; i++)
    {

        for (int j = 0; j < 6; j++)
        {
            if (i == 1)
                goto end;                        //   跳出了两层循环

         else
                printf("*");
        }

        printf("\n");

    }
    end:

// 输出一行******图案

例三

int i = 0;
    for (;;)
    {
        while (1)
        {
            do
            {
                printf("%d\n", i++);
                if (i >= 10)goto end;            //    可以方便有效的跳出多层死循环
            } while (1);
        }
    }
    end:

// 输出结果 0、1、2、3、4、5、6、7、8、9

■.

goto语句一般用于多层嵌套循环结构的跳出

(且谨慎使用为好)

_________________________________#

本文含有隐藏内容,请 开通VIP 后查看