栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

盘复分支语句和循环语句的那些知识

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

盘复分支语句和循环语句的那些知识

目录

1.分支语句

一.if语句

        if语句的语法结构

        多分支

                  悬空else

二.switch

        switch的语法结构

          小结:

         2.3种循环语句

     1.while()

          小结

     2.for循环

         for循环中的一些变形

     3.do-while 循环

总结


1.分支语句

分支语句又叫做条件判断语句,由if语句和switch语句构成

一.if语句 if语句的语法结构

if(表达式)//单分支

语句;

1.注意事项

()内部放表达式,判断的结果,为真,则执行,为假则跳过。在c语言中,非零即为真。

我们来看一道题:“if语句中,0为假,1为真。” ---> 答案是错误的。 1为真是没错,但是呢,它不全,以偏概全了。不能说除了1以外的数字就不是真的。

2.注意事项

if语句后面呢,只能跟一个语句,如果要多个语句,需要用{}。

多分支

第一类:

if(表达式) //满足条件进入if语句中

{

      语句;

}

else //不满足条件进入else语句中

{

      语句;

}

第二类:

if(表达式)

{

   语句;

}

   else if(表达式)

{

   语句;

}

//  .... (还可以继续用 else if)

   else

{
   语句;
}

要注意的是else if后面还需要增加表达式。 

悬空else

#include 

int main()

{

    int a = 0;

    int b = 2;

    if(a == 1)

        if(b == 2)

        printf("hehen");

    else

        printf("hahan");

    return 0;

}

你认为结果是什么呢?可以思考下

答案呢

什么都没执行。

当我们用VS2019的时候,我们可以发现,else与离它最近的if对齐了。

这就是悬空else的匹配原则。

我们在回过来说上面的代码,如果按照它的代码,第一个if与else的对齐。本意上是想:如果 a==1的时候,进去判断b是否等于2,是则打印,不是则跳过,当a != 1 的时候,则打印 haha。

我们可以加上大括号来实现

int main()

{
    int a = 0;

    int b = 2;

    if(a == 1)

    {
        if(b == 2)
 
        {

         printf("hehen");

        }
 
    }

    else

   {

      printf("hahan");

   }

      return 0;

}

运行结果:

二.switch

switch 常用于多分支

switch的语法结构

switch(整型表达式)

{

     case 整形表达式:
                     语句;

     case 整形表达式:
                     语句;

     case 整形表达式:
                     语句;

     case 整形表达式:
                     语句;

}

整形有 char ,int, long , short ,以及无符号的这些类型

我们来看个练习

用switch语句实现

比如:

输入1,输出星期一

输入2,输出星期二

输入3,输出星期三

输入4,输出星期四

输入5,输出星期五

输入6,输出星期六

输入7,输出星期日

那答案是否是这样呢?

int main()
{
     int i = 0;
     scanf("%d", &i);
     switch (i)
     {
          case 1:
                 printf("星期一n");
          case 2:
                 printf("星期二n");
          case 3:  
                 printf("星期三n");
          case 4:
                 printf("星期四n");
          case 5:
                 printf("星期五n");
          case 6:
                 printf("星期六n");
          case 7:
                 printf("星期七n");
     }

      return 0;

}

运行结果:

这并不是我们想要的。

switch(i) ,i 输入多少,相当于是我们从哪个入口(case 整形表达式)进入我们的switch语句中。按照顺序结构一行一行的执行下去。例如这里,我们输入 2 ,找到 case 2 这个入口,进去switch语句中,一步一步的走下去。

如果想要 输入2,输出结果只有星期二,我们就要用到 break。

在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。

我们还需要想一个问题,如果输入的数字,不是1-7中的,我们是不是也需要处理一下。这时我们需要用到default。

default子句

default子句可以写在switch语句中的任意位置。

当switch中表达式的值,与case 标签(所对应的整形的值) 不匹配的时候,就会进入default子句。

一个switch语句中只能有一个default子句

那我们改一下代码看看结果如何:

int main()

{
    int i = 0;
    scanf("%d", &i);
    switch (i)
    {
        case 1:
             printf("星期一n");
             break;
        case 2:
             printf("星期二n");
             break;
        case 3:
             printf("星期三n");
             break;
        case 4:
             printf("星期四n");
             break;
        case 5:
             printf("星期五n");
             break;
        case 6:
             printf("星期六n");
             break;
        case 7:
             printf("星期七n");
             break;
        default:
             printf("输入错误,重新输入");
}
    return 0;
}

小结:

分支语句有2类,if语句和switch语句

else的匹配原则:离else最近的if相匹配

if(表达式)

     语句;

switch(整形表达式)
{
    case 整形表达式:
            语句;
            break;
    case 整形表达式:
            语句;
            break;
     default :
            语句;
}

2.3种循环语句

循环语句中,有三个关键的东西:1.循环变量 2.条件判断部分(用于循环的终止) 3.调整部分(调整循环变量使其达到循环终止的条件)

1.while()

while循环流程图:

语法结构

while(表达式)     //表达式-->循环条件

{

       循环语句;  //循环语句中要有,循环变量调整的部分

}                 //循环变量,在进入while循环之前设置好

我们来看break和continue在循环中的作用

int main()

{

      int arr[] = {1,2,3,4,5,6,7,8,9,10};//定义一个数组

      int n = 0;     //循环变量

      while (n <10)  //循环判断条件

     {

          printf("%d",arr[n]);

          if (n == 6)

          break;

           n++;  //循环调整部分

      }

    return 0;

}

在看看continue

int main()

{

      int arr[] = {1,2,3,4,5,6,7,8,9,10};//定义一个数组

      int n = 0; //循环变量

      while (n <10)//循环判断条件

      {

          printf("%d",arr[n]);

          if (n == 6)

          continue;

          n++;//循环调整部分

     }

      return 0;

}

我们来分析下:

break 在循环中的作用呢,是跳出循环。

continue在循环中的作用,是结束当前条件下的循环,continue下面的语句都不在执行,直接回到判断条件那,重新进入循环。

第二个代码,能不能不死循环呢,成功打印出1234568910呢,

肯定可以的,将我们循环调整部分,放到continue的上面就可以成功打印了。

需要将我们的 三要素进行调整一下。

小结

while循环中,条件判断的次数总比执行循环语句的次数多一次。

continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,

而是直接跳转到while语句的判断部分。进行下一次循环的入口判断

2.for循环

语法结构

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

{

     循环语句;

}

表达式1 --> 循环变量

表达式2 --> 条件判断部分

表达式3 --> 调整部分

for循环流程图

expr -- 表达式

这里的break和我们while循环中的break是一样的;

continue呢存在一点差异。

break:

continue:

在for循环中,使用continue不会遇到死循环,因为我们n++永远是在continue的上面,我们看流程图也是可以发现这一点的

for循环中的一些变形

int main()

{

     //代码1

    for(;;)

    {

        printf("hehen");

    }

    //for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问

题。



    //代码2

    int i = 0;

    int j = 0;

    //这里打印多少个hehe?

   for(i=0; i<10; i++)

   {

       for(j=0; j<10; j++)

      {

         printf("hehen");

      }

    }



  //代码3

   int i = 0;
 
   int j = 0;

    //如果省略掉初始化部分,这里打印多少个hehe?

   for(; i<10; i++)

   {

       for(; j<10; j++)

      {
 
          printf("hehen");

      }

   }



  //代码4-使用多余一个变量控制循环

    int x, y;

    for (x = 0, y = 0; x<2 && y<5; ++x, y++)

    {

        printf("hehen");

    }

        return 0;

}

大家可以尝试的去看看,我们只要增加一个变量 count 来计数就行了。

3.do-while 循环

语法结构

do

{

    循环语句;

}while(表达式);

do-while流程图

do-while循环中,不管满不满足条件,都会执行一次。

上面的while循环我们小结中有写道:while循环中,条件判断的次数总比执行循环语句的次数多一次。

那么do-while循环中,执行循环语句的次数总比判断条件多一次。

在来看看break和continue在do-while循环中的作用

break:

和上面两种循环中一样,跳出循环。

continue:

和我们while循环中一样。我们要将循环调整部分放在continue的上面,我们才能不死循环。

改变后

同样将我们的循环三要素改变。

总结

我们这一次学习,又或是回顾了分支语句和循环语句。

分支语句 2类

if语句,switch语句

if语句中,单分支,多分支,else的匹配原则。

switch语句中,break和default

循环语句 3类

while(表达式), for(表达式1;表达式2;表达式3), do-while(表达式)

循环语句中break和continue在各自循环的作用。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025224.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号