C语言--5.分支语句

本文详细介绍了C语言中的分支语句,包括if单分支、双分支及多分支结构,以及switch语句的使用。强调了if语句的匹配规则和else的就近原则,同时展示了switch语句在处理多分支情况下的简洁性。通过实例代码解释了每个分支语句的工作原理,并提到了break在switch中的重要性以及default的使用场景。
摘要由CSDN通过智能技术生成

在编程语言,也包括C语言中,分支语句,也被叫做选择语句是必不可少的,这种语句是为了解决用户在程序选择上的问题而出现的

让我们一起来认识一下在C语言中,分支语句的种种细节吧!

分支语句

分支语句主要可以被分为if语句与switch语句,他们功能相同,在使用条件上稍有不同

if语句

if语句的主要形式有两种,分为单分支和多分支

单分支

if(表达式)
    语句;




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

多分支

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

值得注意的是,这种分支语句,编译器是从上往下匹配的,一旦匹配到某个表达式,就执行其下方的语句

下面会举几个例子,来加强我们对于if分支语句的认识

#include<stdio.h>
int main(){
   int a=10;
   if(a==10){
      printf("hello\n");//hello(因为满足if判断,所以输出hello)
   }
}
***********************************
   int a = 20;
   if(a==10){
     printf("hello 1\n");
   }
   else if(a==20){
     printf("hello 2\n");//输出的是hello 2
   }
   else{
   //do nothing (即使只有两个if判断的条件,第三种什么也不做,我们在结尾也尽量加上else,这是一
   //种好的编码习惯)
   }
***********************************
   int a = 10;
   if(a==10){
     printf("hello 1\n");//输出的是hello 1(因为永远输出先匹配到的那一个,从上往下匹配)
   }
   else if(a==10){
     printf("hello 2\n");
   }
   else{
   //do nothing
   }
***********************************
   int a = 10;
   if(a==10){
     printf("hello 1\n");
   }
   if(a==10){
     printf("hello 2\n");
   }
//(这种情况下两个语句都输出,结论:当语句中只有if而没有else来说明其为多分支时,每一个if都会被
//检测,条件成立都会被执行,而当存在else时,从上到下检测,一旦有条件成立,就直接停止,不执行后
//面的语句)
   int b = 10;
   int a = 10;
   if(a==10){
     printf("hello 1\n");
      if(b==10){
      printf("hello 2\n");
      }
      else{
      printf("hello 3\n")//当b!=10的时候,会在内层嵌套执行此语句
      }
   }
//此时程序两个语句也都输出,这是一个嵌套结构,同时满足了两个if,说明if语句是支持嵌套的,可以多
//重嵌套

提醒:1.if语句建议将花括号带上,语法结构会直观很多  2.else永远和最近的if匹配,叫悬垂else问题,遵循临近原则

switch语句

switch语句也是一种分支语句,常用于多分支

下面我们就来介绍下switch语句的具体用法

可以看到的是,上面这个问题也是一个分支语句,但是用if else来进行实现会显得非常冗余,会有不断地if else,造成浪费,这种情况下就更适用于我们的switch语句

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

还有一种:可以用以判断多个case对应同一个执行语句嗯的

int main()
{
    int day = 0;
    scanf("%d",&day);
    switch(day)
   {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("weekday\n");
            break;
        case 6:
        case 7:
            printf("weekend\n");
            break;
   }
    return 0; }

以上程序用户即可自行输入day的值,当匹配到对应的case语句时,便会执行case语句

几个关键提醒:

1.switch语句只有判定功能,没有分支功能,需要自行加入break来进行退出;如果没有加入break语句进行退出,那么便会从匹配到的case语句一直执行到break或者程序结束。

2.defult可以放在switch语句中任何位置,但是建议放在最后,指的是当没有匹配到任何case语句中,便会执行default语句

3.switch语句中只能放整型或者整形表达式

4.switch语句同样可以在case内部添加新的switch语句或者if语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值