分支语句(if、if-else、if-else if...else、switch)

简介: 在c语言中有三种程序结构。1 . 顺序结构2 . 分支结构3 . 循环结构本文章讲的是分支结构

一、单分支语句

1 . if

if(表达式)\\此处对表达式进行判断,结果为真即运行,结果为假不运行。
{
  语句;\\上面为真才执行此语句
}//如果只有一条语句可以不加大括号,超过一条一句最好加上,
//当然一条语句最好也加上,这里只是说可以不加,为什么要加下面悬空else问题会讲到。

在if表达式里面,0为假,非0即为真!

  • 单分支语句的作用就是在程序上多出一条分支,使程序多出一种可能,对if后的表达式进行判断,结果为真执行if里面的语句,结果为假直接跳过if 和其里面的语句

代码如下(示例):

int i = 0;
if(i == 1)//因为i是0不等于1所以结果为0,也就是假。
{
  printf("haha");//表达式为假,此处不运行。
}
if i = 0;
if( i == 0)//因为i是0等于0结果为1,也就是真。
{
  printf("haha")//表达式为真,输出haha。
}

二、双分支语句

1.if…else

双分支语句一定会执行其中一个语句,如果if后面的表达式为真的话执行语句1,为假的话执行语句2

用法如下。

if(表达式)
{
  语句1;//为真执行语句1。
}
else
{
  语句2;//为假执行语句2。
}

代码如下(示例):

int a = 0;
if(a == 1)//因为a为0不等于1所以为假。
{
  printf("hehe");
}
else
{
  printf("haha");//表达式为假,执行语句2,输出haha。
}
int a = 0;
if(a == 0)//因为a为0等于0所以为真。
{
  printf("hehe");//表达式为真,执行语句1,输出hehe。
}
else
{
  printf("haha");
}

2.悬空else问题

为什么前面说

代码如下(示例):

这里大家先猜猜程序结果是什么?答案在下面。

int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");
    return 0;
}

14c3c6e3c22c4fbabe519c85bced01ad.png

  • 结果什么也没有输出,为什么?

因为else自动与距离最近的if进行组合,换种写法大家就明白了。

int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
    {
        if(b == 2)
        {
            printf("hehe\n");
      }
      else
        {
          printf("haha\n");
      }
    }
    return 0;

所以写分支语句的时候要养成习惯,加上大括号,这样会避免没必要的麻烦。

多分支语句

1.if…else if…else

 if(表达式1)
 {
  语句1;//表达式1为真执行语句1
 }
 else if(表达式2)
 {
  语句2;//表达式2为真执行语句2
 }
 else
 {
  语句3;//表达式1、2都不为真则执行语句3
 }
  • 这里的else if 也可以写多个,按照情况决定,但是语句的结果只有一个!遇到表达式为真,则执行对应的语句然后退出此分支语句

代码示例



int main()
{
 int age = 0;
    scanf("%d", &age);//假设这里输入19
    if(age<18)//19不小于18结果为假向下继续走
   {
        printf("少年\n");   }
    else if(age>=18 && age<30)//19小于30大于18结果为真
   {
        printf("青年\n");//输出青年退出分支语句
   }
    else if(age>=30 && age<50)
   {
        printf("中年\n");
   }
    else if(age>=50 && age<80)
   {
        printf("老年\n");
   }
    else
   {
        printf("寿星\n");
   }
}
  • 此程序输出青年

2.switch…case

switch(整型表达式)//这里是一个整形表达式
{
    case 整形常量表达式1://当整形表达式等于整形常量表达式1的时候输入执行语句1
        语句1;
        break;//break用于终止循环,如果不写会一直向下执行直到程序结尾或者遇到break为止;
    case 整形常量表达式2://当整形表达式等于整形常量表达式2的时候输入执行语句2
        语句2;
}
  • 这里的case可以有多个,按照情况而定。

代码示例

int main()
{
    int day = 0;
    scanf("%d",&day);//假设这里输入3
    switch(day)
   {
        case 1://day不等于1向下执行
            printf("星期一\n");
            break;
        case 2://day不等于2向下执行
            printf("星期二\n");
            break;
        case 3://day等于3执行语句
            printf("星期三\n");//输出星期三
            break;//break的作用是跳出语句
        case 4:
            printf("星期四\n");
            break;    
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期天\n");    
            break;
   }
    return 0;
}

default

switch case语句里面还可以加default,default的作用相当于else,只能存在一个,可以写在switch case的任意case中间,程序会先执行完所以case才会执行default,不过习惯上我们把它写在结尾









































相关文章
|
算法 网络协议 测试技术
国密SSL协议之性能测试
国密SSL在实际上线和使用过程中,性能就是一个必须面对的问题。 国密SSL和标准SSL相比,算一个新生事物,没有完善齐备的性能测试工具。 本文针对国密SSL性能测试,描述了相关指标,并提供一些基本的方法和工具。
2430 0
国密SSL协议之性能测试
|
SQL 关系型数据库 MySQL
mysql tar 包 完美安装
通过本地安装sql服务
哪些情况可能会导致 try-catch 语句不捕获异常?
【10月更文挑战第12天】在实际应用中,可能还会存在其他一些情况导致异常不被捕获。因此,在使用`try-catch`语句时,需要仔细考虑各种可能的情况,以确保异常能够被正确地捕获和处理。
1264 56
|
Java
《阿里巴巴Java开发规约》插件使用详细指南
阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件。今天就为大家详细介绍一下IDEA插件与Eclipse插件的安装使用。
18114 2
《阿里巴巴Java开发规约》插件使用详细指南
|
移动开发 开发框架 .NET
TIOBE 6月榜单:Visual Basic排名下滑
【6月更文挑战第21天】### TIOBE 2023年6月编程语言指数:VB跌至第9 Visual Basic在编程语言排名中从第7位降至第9位,反映出市场竞争和技术趋势变化。VB,以其直观设计和易用性成名,面临C#、Web及移动开发语言崛起的挑战。排名下滑源于技术进步、教育偏好的转移及生态系统竞争。VB需适应新技术,如.NET Core,以维持生命力。教育市场和社区支持将是VB未来发展的关键,通过整合现代技术、项目导向学习和在线资源,VB可能在特定领域找到新机遇。
313 6
|
安全 Java 数据库
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(上)
第2章 Spring Security 的环境设置与基础配置(2024 最新版)
303 0
|
JavaScript Java 测试技术
基于SpringBoot+Vue的新闻推荐系统附带文章和源代码
基于SpringBoot+Vue的新闻推荐系统附带文章和源代码
383 3
|
机器学习/深度学习 Python
利用Python实现一个简单的机器学习模型:线性回归详解
利用Python实现一个简单的机器学习模型:线性回归详解
480 2
|
JSON Java fastjson
JSON与Java的两种解析方式
JSON与Java的两种解析方式
|
设计模式 缓存 搜索推荐
高德信息业务DDD实战 - 聊聊用领域重构胶水代码
本文记录了搞得信息业务DDD实战中如何用领域重构代码
高德信息业务DDD实战 - 聊聊用领域重构胶水代码