C语言-基础了解-08-C判断
@C判断
一、C判断
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
下面是大多数编程语言中典型的判断结构的一般形式:

二、判断语句
2.1 if语句
语法
C 语言中 if 语句的语法:
if(boolean_expression)
{
/* 如果布尔表达式为真将执行的语句 */
}
果布尔表达式为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行。
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。

#include <stdio.h>int main ()
{/* 局部变量定义 */int a = 10;/* 使用 if 语句检查布尔条件 */if( a < 20 ){/* 如果条件为真,则输出下面的语句 */printf("a 小于 20\n" );}printf("a 的值是 %d\n", a);return 0;
}
执行结果:

2.2 if…else 语句
一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
语法
C 语言中 if…else 语句的语法:
if(boolean_expression)
{
/* 如果布尔表达式为真将执行的语句 /
}
else
{
/ 如果布尔表达式为假将执行的语句 */
}

#include <stdio.h>int main ()
{/* 局部变量定义 */int a = 100;/* 检查布尔条件 */if( a < 20 ){/* 如果条件为真,则输出下面的语句 */printf("a 小于 20\n" );}else{/* 如果条件为假,则输出下面的语句 */printf("a 大于 20\n" );}printf("a 的值是 %d\n", a);return 0;
}
执行结果:
a 大于 20
a 的值是 100
if…else if…else 语句
一个 if 语句后可跟一个可选的 else if…else 语句,这可用于测试多种条件。
当使用 if…else if…else 语句时,以下几点需要注意:
一个 if 后可跟零个或一个 else,else 必须在所有 else if 之后。
一个 if 后可跟零个或多个 else if,else if 必须在 else 之前。
一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试
语法
C 语言中的 if…else if…else 语句的语法:
if(boolean_expression 1)
{
/* 当布尔表达式 1 为真时执行 /
}
else if( boolean_expression 2)
{
/ 当布尔表达式 2 为真时执行 /
}
else if( boolean_expression 3)
{
/ 当布尔表达式 3 为真时执行 /
}
else
{
/ 当上面条件都不为真时执行 */
}
#include <stdio.h>int main ()
{/* 局部变量定义 */int a = 100;/* 检查布尔条件 */if( a == 10 ){/* 如果 if 条件为真,则输出下面的语句 */printf("a 的值是 10\n" );}else if( a == 20 ){/* 如果 else if 条件为真,则输出下面的语句 */printf("a 的值是 20\n" );}else if( a == 30 ){/* 如果 else if 条件为真,则输出下面的语句 */printf("a 的值是 30\n" );}else{/* 如果上面条件都不为真,则输出下面的语句 */printf("没有匹配的值\n" );}printf("a 的准确值是 %d\n", a );return 0;
}
执行结果:
没有匹配的值
a 的准确值是 100
2.3 嵌套 if 语句
可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。
语法
C 语言中 嵌套 if 语句的语法:
if( boolean_expression 1)
{
/* 当布尔表达式 1 为真时执行 /
if(boolean_expression 2)
{
/ 当布尔表达式 2 为真时执行 */
}
}
#include <stdio.h>int main ()
{/* 局部变量定义 */int a = 100;int b = 200;/* 检查布尔条件 */if( a == 100 ){/* 如果条件为真,则检查下面的条件 */if( b == 200 ){/* 如果条件为真,则输出下面的语句 */printf("a 的值是 100,且 b 的值是 200\n" );}}printf("a 的准确值是 %d\n", a );printf("b 的准确值是 %d\n", b );return 0;
}
执行结果:
a 的值是 100,且 b 的值是 200
a 的准确值是 100
b 的准确值是 200
2.4 switch 语句
一个 switch 语句允许测试一个变量等于多个值时的情况。
语法
C 语言中 switch 语句的语法:
switch(expression){
case constant-expression :
statement(s);
break; /* 可选的 /
case constant-expression :
statement(s);
break; / 可选的 /
/ 您可以有任意数量的 case 语句 /
default : / 可选的 */
statement(s);
}
switch 语句必须遵循下面的规则:
1、switch 语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型。
2、在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
3、case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
4、当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
5、当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
6、不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
7、一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。

#include <stdio.h>int main ()
{/* 局部变量定义 */char grade = 'B';switch(grade){case 'A' :printf("很棒!\n" );break;case 'B' :case 'C' :printf("做得好\n" );break;case 'D' :printf("您通过了\n" );break;case 'F' :printf("最好再试一下\n" );break;default :printf("无效的成绩\n" );}printf("您的成绩是 %c\n", grade );return 0;
}
执行结果:
做得好
您的成绩是 B
2.5 嵌套 switch 语句
可以在一个 switch 语句内使用另一个 switch 语句。
您可以把一个 switch 作为一个外部 switch 的语句序列的一部分,即可以在一个 switch 语句内使用另一个 switch 语句。即使内部和外部 switch 的 case 常量包含共同的值,也没有矛盾。
switch(ch1) {
case ‘A’:
printf(“这个 A 是外部 switch 的一部分” );
switch(ch2) {
case ‘A’:
printf(“这个 A 是内部 switch 的一部分” );
break;
case ‘B’: /* 内部 B case 代码 /
}
break;
case ‘B’: / 外部 B case 代码 */
}
#include <stdio.h>int main ()
{/* 局部变量定义 */int a = 100;int b = 200;switch(a) {case 100: printf("这是外部 switch 的一部分\n");switch(b) {case 200:printf("这是内部 switch 的一部分\n");}}printf("a 的准确值是 %d\n", a );printf("b 的准确值是 %d\n", b );return 0;
}
执行结果:
这是外部 switch 的一部分
这是内部 switch 的一部分
a 的准确值是 100
b 的准确值是 200
三、? : 运算符(三元运算符)
Exp1 ? Exp2 : Exp3;
其中,Exp1、Exp2 和 Exp3 是表达式。请注意,冒号的使用和位置。
? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个表达式的值。

#include<stdio.h>int main()
{int num;printf("输入一个数字 : ");scanf("%d",&num);(num%2==0)?printf("偶数"):printf("奇数");
}
执行结果:

菜鸟编程,学习记录
相关文章:
C语言-基础了解-08-C判断
C判断 一、C判断 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。 C 语言把任何非零和非空的值假定为 true,把零或 null 假…...
用数组名作函数参数的详解,以及形参实参采用数组名,形参实参采用指针变量的几种情况解析
关于地址,指针,指针变量可以参考我的这篇文章: 地址,指针,指针变量是什么?他们的区别?符号(*)在不同位置的解释?_juechen333的博客-CSDN博客https://blog.csd…...
k8s中的PV和PVS
前言:容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)…...
【云原生】Gateway网关选型
网关一般分为流量网关和业务网关,流量网关负责接入所有的流量,并分发给不同的子系统,那在具体的业务接入之前,还有一层业务网关。流量网关提供全局性的、与后端业务应用无关的策略,例如 HTTPS证书卸载、Web防火墙、全局…...
QML Button详解
1.Button简介 Button表示用户可以按下或单击的按钮控件。按钮通常用于执行一个动作,或回答一个问题。典型的按钮有确定、应用、取消、关闭、是、否和帮助。 Button继承自AbstractButton,提供了以下几种信号。 void canceled() //当按…...
【编程实践】什么是好/坏代码?非程序员的示例
What is good/bad code? An illustrated example for non-programmers 什么是好/坏代码?非程序员的示例 目录 What is good/bad code? An illustrated example for non-programmers什么是好/坏代码?非程序员的示例 So what is ‘Bad Code’, as a layperson?那么,作为…...
一个简单的Sublime设置
问题 如果读者熟悉我,应该会发现我经常使用 VSCode 作为主力编辑器,但随着我安装的 VSCode 的插件逐渐增加,我发现对于部分较小的任务使用 VSCode 过于笨重,比如简单的 Markdown 文件编辑工作。 在经过一系列寻找后,…...
c语言经典例题-选择结构程序设计进阶
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 快递费用计算: 题目: 代码思路: 代码表示: 计算一元二…...
NOI 2023春季测试 游记
怎么说,没遇到大波折即幸运。 Day 0 睡到下午三点,然后列了一堆复习计划,大概是左偏树等一些早就忘没的科技。 但是沉迷打块,最后基本什么计划也没完成。 白天睡多了,晚上睡不着,大概半梦半醒过了一整夜…...
【VC 7/8】vCenter Server 基于文件的备份和还原Ⅱ——使用 FTP 协议备份 VC(VAMI 英文)
目录2. 备份 vCenter Server2.1 使用 FTP 协议备份 VC(1)登录 vCenter Server 管理界面(2)进入Backup页面(3)配置 Backup Schedule(4)开始备份(5)备份成功&am…...
Python基础—文件操作(二)
Python基础—文件操作(二) CSV格式文件 逗号分隔值,以纯文本形式存储表格数据 由任意数目的记录组成,记录间以换行符分隔 每条记录由字段组成,字段间用逗号或制表符分隔 每条记录都有同样的字段序列 如有列名,位于文件第一行 每条…...
学校的班级个数【并查集基础应用,Java实现】
题目描述 现有一个学校,学校中有若干个班级,每个班级中有若干个学生,每个学生只会存在于一个班级中。如果学生A和学生B处于一个班级,学生B和学生C处于一个班级,那么我们称学生A和学生C也处于一个班级。 现已知学校中共…...
WSL2使用Nvidia-Docker实现CUDA版本自由切换
众所周知,深度学习的环境往往非常麻烦,经常不同的项目所依赖的 torch、tensorflow 包对 CUDA 的版本也有不同的要求,Linux 下进行 CUDA 的管理比较麻烦,是一个比较头疼的问题。 随着 WSL2 对物理机显卡的支持,Nvidia-…...
pygame9 扫雷游戏2
一、响应鼠标左键事件 pygame.MOUSEBUTTONDOWN 表示鼠标事件发生, pygame.mouse.get_pressed()[0] 确认是鼠标左键被按下 pygame.mouse.get_pos() 获取到鼠标按下时的坐标值。 因此,我们可以在事件逻辑中例用此三个函数判断鼠标事件及对应的坐标&#x…...
逻辑电路代数运算(上)
逻辑代数L是一个封闭的代数系统,由一个逻辑变量集K,常量0和1,以及与或非三种基本运算构成。 参与逻辑运算的变量叫逻辑变量,用字母A,B……表示。每个变量的取值非0 即1。 0、1不表示数的大小,而是代表两种不…...
Rabbit快速入门
入门案例 需求:使用简单模式完成消息传递 步骤: 创建工程(生成者、消费者) 分别添加依赖 编写生产者发送消息 编写消费者接收消息 3.1.2. 添加依赖 往heima-rabbitmq的pom.xml文件中添加如下依赖: <dependenc…...
【react+ts- forwardRef】
reactts- forwardRef1. 学习资料2. 普通input透传2.1 TS版本2.2 JS版本3. TS-Antd-Form组价透传引用传递(Ref forwading)是一种通过组件向子组件自动传递 引用ref 的技术。对于应用者的大多数组件来说没什么作用。但是对于有些重复使用的组件,…...
计算机网络-- 网络层(day06)
文章目录网络层思维导图IPv4地址的应用规划定长的子网掩码变长的子网掩码VLSMIP数据报的发送和转发过程主机发送IP数据报路由器转发IP数据报静态路由选择动态路由选择路由选择协议概述常见的路由选择协议路由器的基本结构路由信息协议RIP的基本工作原理开放最短路径优先OSPF的基…...
docker 镜像
一、介绍 镜像:是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码,运行时需要的库,环境变量和配置文件等)这个打包好的运行环境就是image镜像文件。 只有通过这个镜…...
JUC并发编程与源码分析笔记11-Java对象内存布局和对象头
先从阿里及其它大厂面试题说起 你觉得目前面试,你还有那些方面理解的比较好,我没问到的,我说了juc和jvm以及同步锁机制那先说juc吧,说下aqs的大致流程cas自旋锁,是获取不到锁就一直自旋吗?cas和synchronized区别在哪…...
ROS2 Humble + MoveIt2 + Gazebo 保姆级教程:从零搭建一个六轴机械臂仿真环境
ROS2 Humble MoveIt2 Gazebo 六轴机械臂仿真环境搭建全解析 第一次接触机器人仿真时,我被各种专业术语和复杂的配置流程搞得晕头转向。直到亲手搭建起第一个机械臂仿真环境,看到虚拟机械臂在Gazebo中流畅运动的那一刻,才真正理解了ROS2生态…...
2026年维普AI率检测超标反复怎么办:根本原因和彻底解决方法
2026年维普AI率检测超标反复怎么办:根本原因和彻底解决方法 花了300多块试了7款工具,最后总结出来其实5块钱就能搞定。 维普AI率超标这件事,我走了很多弯路。这篇文章把我的经验教训都整理出来,帮你省钱省时间。核心推荐嘎嘎降A…...
零基础搞懂Harness Engineering(超详细保姆级教程),告别AI胡说八道,收藏这一篇就够了!
2026年第一季度,大模型应用层最具统治力的热词,绝对是「Harness」。 今年三月,LangChain 发布了一篇题为《The Anatomy of an Agent Harness》的实证文章,彻底点燃了所有人的焦虑与狂热。他们在这份报告里引用了一个实验数据对比…...
AI Agent Harness Engineering 的记忆架构:短期、长期与情景记忆的工程实现
AI Agent Harness Engineering 的记忆架构:短期、长期与情景记忆的工程实现 副标题:构建具有类人记忆能力的智能代理系统完整指南 第一部分:引言与基础 (Introduction & Foundation) 1. 引人注目的标题 (Compelling Title) “AI Agent Harness Engineering 的记忆架构…...
Stratovirt安装及使用
文章目录安装创建虚拟机安装 硬件要求 处理器架构:仅支持AArch64和x86_64处理器架构。AArch64需要ARMv8及更高版本且支持虚拟化扩展;x86_64支持VT-x。 软件要求 操作系统:openEuler 20.09及更高版本 我当前安装的stratovirt版本是2.1.0&…...
羊四种行为检测数据集(2000张高质量标注)|YOLO目标检测训练数据集
羊四种行为检测数据集(2000张高质量标注)|YOLO目标检测训练数据集 前言 在智慧养殖与畜牧业数字化转型的背景下,基于计算机视觉的动物行为识别逐渐成为研究与工程应用的热点方向。通过对动物行为的自动检测与分析,可…...
效率飞跃:基于快马ai定制openclaw在ubuntu上的高级自动化部署方案
最近在Ubuntu上部署OpenClaw时,发现手动配置实在太费时间了。作为一个经常需要部署各种开源工具的开发老鸟,我决定探索一套自动化方案来提升效率。经过反复实践,终于总结出一套高效的部署流程,现在分享给大家。 自动化部署方案设…...
小个子春天怎么穿?记住这四二法则显高十厘米
小个子女生的春天穿搭,核心诉求只有一个:显高。但显高不等于穿高跟鞋,也不等于把衣服改短。真正的显高是调整比例,让视觉重心上移。我总结了一个“四二法则”,四个技巧加两个雷区,照着穿,视觉上…...
SMU Debug Tool技术解析与实战指南:释放AMD Ryzen处理器性能潜力
SMU Debug Tool技术解析与实战指南:释放AMD Ryzen处理器性能潜力 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: …...
无需寻找激活码,用快马平台五分钟搭建你的第一个Web项目管理面板原型
最近在折腾一个Web项目管理面板的原型设计,发现用传统方式从零搭建实在太费时间。刚好试用了InsCode(快马)平台,五分钟就搞定了基础功能,完全不需要操心本地环境配置或者找什么激活码。记录下这个超快手的实现过程: 功能拆解 这个…...
