c语言学习日记之《分支语句》

c语言学习日记之《分支语句》

前言

c语言的结构体分为三种,顺序结构,分支结构,循环结构,这些结构也一一对应了我们日常所需,顺序就意味这从头到尾,分支结构就像是人生的分路口,每一个人有着不一样的人生,循环结构像我们练习代码,练习语言,需要不断不断的练习才能够学的好,学的牢。
请添加图片描述

分支语句

1. if语句

前言
表达式判断 (0为假,非0就为真 记住是非0不是1!!!!)
表达式为真(会执行后面跟随的语句,如果想多条语句执行就加上{},促成代码块。)

1.1 if单分支语句

if(表达式)
语句;
单分支语句演示:在这里插入图片描述

1.2 if双分支语句

if(表达式)
语句;
else
语句;
双分支语句演示:在这里插入图片描述

1.3 if多分支语句

if(表达式)
语句;
else if (表达式)//else也可以再次调用if语句
语句;
else
;
多分支语句演示:
在这里插入图片描述

1.4 if语句中的易混点和良好书写形式

(1)如下列代码所示:大家可能看见第一个if觉得不成功会打印else中的语句,其实不然,第一个语句执行不成功后面的语句也不会执行,什么都打印不出来,因为else是和最近的if相匹配。

#include <stdio.h>

int main()

{

        int a = 0;

        int b = 2;

        if (a == 1)

        if (b == 2)

        printf("hehe\n");

        else

        printf("haha\n");

        return 0;

}


在这里插入图片描述

改写:如果是像下列这样改写,那就和大家伙所想的是一样的了,还记得我们上面的前言吗,当我们想要执行多条语句加上{}就可以变成一个代码块了,这样第一个if不成功就会执行else后面的语句,让我们打印出来看看。

#include <stdio.h>

int main()

{

        int a = 0;

        int b = 2;

        if (a == 1)

     { 
        if (b == 2)

        printf("hehe\n");
        }

        else

        printf("haha\n");

        return 0;

}


结果是这样的:
在这里插入图片描述

(2)上列的代码的逻辑性也不够丰富且不够好看,(再度适量的加入{}更加好看些,如下列代码所示)

#include <stdio.h>

int main()

{

        int a = 0;

        int b = 2;

        if (a == 1)

        {

               if (b == 2)

               {

                       printf("hehe\n");

               }

        }

        else

        {

               printf("haha\n");



        }

        return 0;

}


(3)下列代码中,如果不小心把==写错了写成了=,那就把常量赋值给了变量,就会执行打印,整体的逻辑也不够清晰,我们来改写一下。

int main()

{

        int num = 7;

        if (num == 1)

        {

               printf("成功\n");

        }

}


改写:这样更加的逻辑清晰,并且呢就算写成了=,IDE也是会报错,左操作数必须为左值。

int main()

{

        int num = 7;

        if (1 == num)

        {

               printf("成功\n");

        }

        return 0;

}


2.switch语句

前言:如果有许多许多的分支再选择if else就过于繁琐,这样我们用switch就更加的便捷,这里我们还会学到跳转语句的break语句。

2.1 switch的构成

switch(整型表达式)
{
case(整型常量表达式):
语句;
}

2.2 break语句在switch语句里的应用。

如果我们没有运用break语句在其中就会一直执行case1到case n,这样就没办法实现分支了,像下列代码,运行起来就全部都会打印。

#include <stdio.h>

int main()

{

        int day = 0;

        scanf_s("%d", &day);

        switch (day)

        {

        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;

}


在这里插入图片描述

改写:如果加上break,反之就不会这样。

#include <stdio.h>
int main()
{
int day = 0;
switch(day)
{
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;
}
return 0;
}

在这里插入图片描述

2.3 default子句

如果整型表达式的值和case的标签都不匹配怎么办,这个时候就需要default子句来运用了。
(需要写在case语句可以出现的位置,表达式不匹配case标签时,就会运行default子句后的case语句,只能出现一条default子句,可以出现在switch里的任何位置。)

#include <stdio.h>

int main()

{

        int day = 0;

        scanf_s("%d", &day);

        switch (day)

        {

               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("输入错误\n");

                       break;

        }

        return 0;

}


在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万礼-77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值