一文读懂C语言选择语句

2023-11-22 13:11

本文主要是介绍一文读懂C语言选择语句,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、if...else 选择语句详解
    • 1.图示 if...else 流程
    • 2. if...else 代码流程
    • 3. if...else 的三种情况
      • 3.1 if语句
      • 3.2 if...else 语句
      • 3.3 if...else if...else 语句
    • 4.代码示例
  • 二、三目运算符(? :)详解
  • 三、switch...case 选择语句详解
    • 1. 图示 switch...case 流程
    • 2. switch...case 代码流程
    • 3. 代码示例

前言

       选择语句是C语言中的重要组成部分,该部分也比较基础,本文将通过最通俗易懂的方式来为大家做出讲解。相信通过本文的学习,让大家一举拿下C语言选择语句的知识点。

一、if…else 选择语句详解

1.图示 if…else 流程

在这里插入图片描述
        用图示来表示 if…else 语句其实就是当条件为真的时候执行某一部分的内容,当条件为假的时候就跳过这部分的内容接着往下执行。

2. if…else 代码流程

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

        if…else语句最常见的流程就是上面这样。当表达式为真的时候执行语句块1的内容,当表达式为假的时候执行语句块2的内容。那么可能有些人就会问了,表达式什么样才是真,什么样才是假?回答这个问题很简单,只要表达式的结果为0,那么表达式就是假,其余情况都是真。

3. if…else 的三种情况

3.1 if语句

if (表达式)
{语句块1;
}

当只有 if 的时候,表达式为真就执行语句块1,否则就跳过语句块的内容。

3.2 if…else 语句

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

当 if…else 的时候,表达式为真就执行语句块1,表达式为假就执行语句块2。

3.3 if…else if…else 语句

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

       当表达式1为真的时候就只执行语句块1的内容,其余语句块不执行。当表达式1为假并且表达式2为真的时候就只执行语句块2的内容,其余语句块不执行。当表达式1和表达式2都为假的时候执行语句块3的内容,其余语句块不执行。在这种情况下,else if是可以无限加的,并不是只能有一个else if。
       需要注意的是else不可以单独出现,if可以单独出现,并且else总是和它同级的那个if 相匹配。

4.代码示例

源代码:

#include <stdio.h>int main()
{int scores = 0;printf("Please enter student scores: ");scanf("%d", &scores);if (scores < 0) {printf("input error\n");  } else if (scores < 60) {printf("Underachievement!\n");} else if (scores < 80) {printf("academically qualified!\n");} else if (scores <= 100) {printf("perfect grade!\n");} else {printf("input error\n");}return 0;
}

二、三目运算符(? :)详解

表达式1 ? 表达式2 : 表达式3 

三目运算符是一个运算符,并且C语言中有且只有一个三目运算符。使用三目运算符可以用来代替 if…else 语句。上面三目运算符的流程为,如果表达式1为真,则将表达式2的结果作为最终运算结果,否则就将表达式3的结果作为最终运算结果。举例例子具体说明下:
源代码:

#include <stdio.h>int main()
{int a = 0, b = 0, max = 0;printf("请输入两个数: ");scanf("%d%d", &a, &b);max = a > b ? a : b;printf("两数中较大的数是: %d", max);return 0;
}

三、switch…case 选择语句详解

1. 图示 switch…case 流程

在这里插入图片描述
       switch…case语句就是,如果表达式1的 结果和下面的表达中任意一个表达式相等,就执行对应的代码块的内容,而其余代码块中的内容不会被执行。

2. switch…case 代码流程

	switch(表达式1{case 表达式2:语句块2;break;case 表达式3:语句块3;break;case 表达式4:语句块4;break;……default:语句块n;break;}

       switch…case语句在代码中的流程一般如上所示。其中表达式1的结果一般是整形常量或字符常量。当表达式的结果和 case 后面的表达式结果一致时,就会执行对应的语句块的内容,否则,就会进入default中,执行语句块n 。然后在break的时候跳出大括号的内容。
在使用 switch…case 语句时有两点需要大家特别注意。

  1. 如果语句块后面没有break,那么程序就会继续执行下面的内容,直到遇到下一个break或后面没有内容时而退出。比方说,表达式1和表达式3的结果相同,程序就会执行语句块3的内容,如果有上面的break,switch…case 语句到此结束,直接跳出 switch 大括号中的所有内容。但是如果这个没有break,那么程序执行完语句块3后还会接着执行语句块4,直到遇到 break 或 switch 大括号后面没有内容而退出。
  2. 在 switch…case 语句中,default 和 case 的位置没有关系,编译器都会先找 case,等 case 不满足条件之后才会找 default。因为一些常规和标准的写法 default 都会在最后面,但是在面试笔试中为了考察大家对于 switch…case 语句的掌握程度,会将 default 写在开头或中间,所以这个时候大家就要特别注意了。

3. 代码示例

#include <stdio.h>int main()
{int scores = 0;char grade = 'Z';printf("Please enter student scores: ");scanf("%d", &scores);if (scores < 0) {printf("input error\n");  } else if (scores < 60) {grade = 'C';} else if (scores < 80) {grade = 'B';} else if (scores <= 100) {grade = 'A';} else {printf("input error\n");}switch(grade){case 'A':printf("perfect grade!\n");break;case 'B':printf("academically qualified!\n");break;case 'C':printf("Underachievement!\n");break;default:printf("input error\n");break;}return 0;
}

这篇关于一文读懂C语言选择语句的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/410385

相关文章

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Mysql常见的SQL语句格式及实用技巧

《Mysql常见的SQL语句格式及实用技巧》本文系统梳理MySQL常见SQL语句格式,涵盖数据库与表的创建、删除、修改、查询操作,以及记录增删改查和多表关联等高级查询,同时提供索引优化、事务处理、临时... 目录一、常用语法汇总二、示例1.数据库操作2.表操作3.记录操作 4.高级查询三、实用技巧一、常用语

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

SQL BETWEEN 语句的基本用法详解

《SQLBETWEEN语句的基本用法详解》SQLBETWEEN语句是一个用于在SQL查询中指定查询条件的重要工具,它允许用户指定一个范围,用于筛选符合特定条件的记录,本文将详细介绍BETWEEN语... 目录概述BETWEEN 语句的基本用法BETWEEN 语句的示例示例 1:查询年龄在 20 到 30 岁

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

一文全面详解Python变量作用域

《一文全面详解Python变量作用域》变量作用域是Python中非常重要的概念,它决定了在哪里可以访问变量,下面我将用通俗易懂的方式,结合代码示例和图表,带你全面了解Python变量作用域,需要的朋友... 目录一、什么是变量作用域?二、python的四种作用域作用域查找顺序图示三、各作用域详解1. 局部作

一文彻底搞懂Java 中的 SPI 是什么

《一文彻底搞懂Java中的SPI是什么》:本文主要介绍Java中的SPI是什么,本篇文章将通过经典题目、实战解析和面试官视角,帮助你从容应对“SPI”相关问题,赢得技术面试的加分项,需要的朋... 目录一、面试主题概述二、高频面试题汇总三、重点题目详解✅ 面试题1:Java 的 SPI 是什么?如何实现一个