一文读懂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

相关文章

封装MySQL操作时Where条件语句的组织

在对数据库进行封装的过程中,条件语句应该是相对难以处理的,毕竟条件语句太过于多样性。 条件语句大致分为以下几种: 1、单一条件,比如:where id = 1; 2、多个条件,相互间关系统一。比如:where id > 10 and age > 20 and score < 60; 3、多个条件,相互间关系不统一。比如:where (id > 10 OR age > 20) AND sco

【Python知识宝库】上下文管理器与with语句:资源管理的优雅方式

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、什么是上下文管理器?二、上下文管理器的实现三、使用内置上下文管理器四、使用`contextlib`模块五、总结 前言 在Python编程中,资源管理是一个重要的主题,尤其是在处理文件、网络连接和数据库

Linux 云计算底层技术之一文读懂 Qemu 架构

Qemu 架构概览 Qemu 是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件。 正因为 Qemu 是纯软件实现的,所有的指令都要经 Qemu 过一手,性能非常低,所以,在生产环境中,大多数的做法都是配合 KVM 来完成

FPGA开发:条件语句 × 循环语句

条件语句 if_else语句 if_else语句,用来判断是否满足所给定的条件,根据判断的结果(真或假)决定执行给出的两种操作之一。 if(表达式)语句; 例如: if(a>b) out1=int1; if(表达式)         语句1; else         语句2; 例如: if(a>b)out1=int1;elseout1=int2; if(表达式1) 语句1; els

mysql 修改表结构语句

主要还是要参考mysql的官方网站 http://dev.mysql.com/doc/refman/5.7/en/alter-table.html 简单例子: alter table_name alter column old_column_name new_column_name int unsigned;

MySQL学习笔记-join语句类型

join从句的类型:内链接(inner) 全外连接(full outer) 左外连接(left outer) 右外连接(right outer) 交叉链接(cross) 连接条件:使用ON设定连接条件,也可以用WHERE代替 · ON:设定连接条件 · WHERE:进行结果集记录的过滤 一,内连接inner join:  内连接是返回左表及右表符合连接条件的记录,在MySQL中JO

读懂《机器学习实战》代码—K-近邻算法

一,K近邻算法概念 K近邻算法即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。KNN 算法是一种 lazy-learning 算法,分类器不需要使用训练集进行训练,训练时间复杂度为0。KNN 分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为 n,

Oracle和Sql_Server 部分sql语句的区别

比如:A表中, 字段:gxmlflag  number;  比如数据:20210115 字段:gxmldate date ;    比如数据:2021-01-15 09:50:50 一、在Oracle数据库中: 1、insert 和 update 语句: t.gxmlflag = to_char(sysdate,'yyyymmdd'),t.gxmldate=sysdate 比如:update f

PostgreSql中WITH语句的使用

https://blog.csdn.net/chuan_day/article/details/44809125 PostgreSql中WITH语句的使用 With语句是为庞大的查询语句提供了辅助的功能。这些语句通常是引用了表表达式或者CTEs(一种临时数据的存储方式),可以看做是一个查询语句的临时表。在With语句中可以使用select,insert,update,delete语句。当然wit

Post-Training有多重要?一文带你了解全部细节

1. 简介 随着LLM学界和工业界日新月异的发展,不仅预训练所用的算力和数据正在疯狂内卷,后训练(post-training)的对齐和微调方法也在不断更新。InstructGPT、WebGPT等较早发布的模型使用标准RLHF方法,其中的数据管理风格和规模似乎已经过时。近来,Meta、谷歌和英伟达等AI巨头纷纷发布开源模型,附带发布详尽的论文或报告,包括Llama 3.1、Nemotron 340