C语言入门 Day_9 条件判断
目录
前言:
1.if判断
2.else判断
3.易错点
4.思维导图
前言:
我们知道比较运算和逻辑运算都会得到一个布尔型的数据,要么为真(true),要么为假(false)。
今天我们来学习真和假在编程中的实际使用——判断。
在现实生活中,我们经常根据一些条件是否成立,来判断我们接下来的行动。比如“如果明天不下雨,就出去跑步”。
同样的在编程中我们也需要根据不同的条件来执行不同的代码。比如“如果点击[查看图片]按钮,就展示猫咪图片”。
这种在代码中根据不同的条件(真或假),执行不同代码的结构,我们叫它“判断语句”。
1.if判断
1.1
如果判断条件为真(true),就让程序执行某行代码;
如果判断条件为假(false),就让程序不执行某行代码。
1.如果判断条件为真,这里的printf()语句会得到执行:
if(true){printf("会打印这行代码\n");
}
1.条件判断的关键字if
2.括号内是进行判断的条件
3.判断条件的结果,这里是true
4.花括号{},if判断的固定语法格式,括号里面的代码“属于”这个if判断语句
5.if判断具体要执行的代码
2.如果判断条件为假,这里的printf()语句不会得到执行:
if(false){printf("不会打印这行代码\n");
}
1.if条件判断的关键字if
2.括号内是进行判断的条件
3.判断条件的结果,这里是false
4.花括号{},if判断的固定语法格式,括号里面的代码“属于”这个if判断语句
5.if判断具体要执行的代码,由于是false这个代码不会执行
1.2
if
是一个关键字,是英文“如果”的意思,它表明,如果后面括号内的判断条件为真的话,就执行下述代码;否则,就不执行。
具体的判断条件在括号()
里面,它可以是一个比较运算,也可以是一个逻辑运算,当然也可以是一个布尔数。
因为比较运算和逻辑运算本质上也是得到一个布尔数。
花括号{}
,花括号里面的代码“属于”这个if判断,也就是if判断如果成立(真),就会执行花括号里面的代码,如果为不成立(假),就不会执行花括号里面的代码。
在判断条件这里,我们上面代码中直接用的true和false,现在我们来看看比较运算和逻辑运算如何作为判断条件来使用。
1.3
1.比较运算和逻辑运算作为判断条件的代码:
if(5>1){printf("5大于1\n");
}
if(true && true){printf("真且真的结果为真\n");
}
1.一个比较运算的判断条件,5 > 1
2.一个逻辑运算的判断条件,true && true
2.填入一个比较运算5 > 1,注意空格:
if( 5>1 ){printf("5大于1\n");
}
输出结果
5大于1
3.填入一个结果为false的比较运算判断条件2大于4,并观察代码是否会执行:
if( 2>4 ){printf("二大于四\n");
}
我们可以看到,5>1为真,所以代码会执行;2>4为假,所以代码不会执行。
3.填入逻辑运算 true && true:
if( true&&true ){printf("真并且真结果是真\n");
}
输出结果
真并且真的结果是真
4.填入一个逻辑运算true || false:
if(true||false){printf("真或者假的结果是真\n");
}
输出结果
真或者假的结果是真
我们再来重温一遍if判断的关键点:
括号内的判断条件成立(真,true),则会执行花括号中的代码;
括号内的判断条件不成立(假,false),就会跳过(不执行)花括号中的代码。
1.4
如果判断条件不成立,那么if里面的代码就不会得到执行,代码会跳过这些代码,继续往下执行。
if( true&&false ){printf("真并且假的结果是,真!\n");
}printf("真并且假的结果是,假!\n");
eg:
我们用代码来模拟这样一种现实情况:如果今天是星期天,且今天出太阳,我们就输出“我们要去跑步”。
1.我们给布尔变量today_is_sunday赋值为true,today_is_sunny赋值为true,然后让程序进行判断:
bool today_is_sunday=true;
bool today_is_sunny=true;
if(today_is_sunday && today_is_sunny){printf("今天是星期天而且今天是晴天,我要去跑步\n");
}printf("今天去跑步了么\n");
2.今天是周五,所以今天是周天是false,因此today_is_sunday = false,我们再来看看判断:
bool today_is_sunday=false;
bool today_is_sunny=true;
if(bool today_is_sunday && today_is_sunny){printf("今天是星期天且今天是晴天,我要去跑步\n");
}printf("今天不是星期天,或者不是晴天\n");
输出结果
今天不是星期天或者不是晴天
如果if关键字的判断条件成立的话,它“下属”的代码块会得到执行。
比如符合条件的时候输出“如果今天是周五,明天就是周六”
1.5
那如果今天不是周五的话,我们还想输出,“明天就不是周六”,应该怎么实现呢?
第一种思路是,我们可以写两个if判断,
第一个if判断是如果今天是周五,那么输出“明天是周六”;
第二个if判断是如果今天不是周五,那么输出“明天不是周六”,注意我们使用了非运算!
bool today_is_friday=true;
if(today_is_friday){printf("明天是周六\n");
}
if(!today_is_friday){printf("明天不是周六\n");
}
除此以外,我们还可以直接使用else
关键字,来达到同样的效果。
2.else判断
我们知道if
的条件成立的话,if
内部的代码块会被执行。
而else
的作用就是,如果if
的条件不成立,那么else
内部的代码块就会被执行。
它们之间的关系就类似于汉语中的“如果-否则”。
2.1
同样的,如果今天是周五,就输出“明天是周六”;如果今天不是周五,就输出“明天不是周六”:
bool today_is_friday=true;
if(today_is_friday) {printf("明天是周六\n");
} else{printf("明天不是周六\n");
}
1.定义一个布尔变量today_is_friday,并赋值true
2.判断条件today_is_friday
3.判断为真,执行printf()代码
对于if-else
的结构来说的话,只会执行一段代码,要么执行if里面的代码,要么执行else里面的代码。
else
是无法独立出现的,它需要和if
配对出现。
为什么else
不需要像if
一样后面跟一个判断条件呢?
这是因为else
囊括了if
条件以外的所有条件:只要if
判断的条件不成立,就会进入else
的范畴。
else
是一个if条件的补集。
2.2
判断两个人的年龄谁大
1.先做对应的打印输出,先定义两个整型变量my_age和your_age:
2.最后填入else
int my_age=11;
int your_age=16;
if( my_age>your_age ){printf("我年龄更大\n“);
} else {printf("你年龄更大\n");
}
输出结果
你年龄更大
有了if
和else
,我们就可以比较全面的根据不同情况,进行不同的代码执行了。
2.3
除了比较年龄,我们还可以比较身高。
1.定义两个整型变量my_height和your_height:
2.填入if-else:
int my_height=175;
int your_height=177;
if( my_height > your_height ){printf("我更高\n");
} else{printf("你更高\n");
}
输出结果
你更高
在学习if和else之前,我们的代码只能从上至下顺序执行,现在我们可以根据不同的判断条件,来选择代码执行的流向了。这种结构叫做条件判断分支。
3.易错点
if(判断条件){ 只有当判断条件为真(true),才会执行if代码块里的代码
printf("会打应这行代码\n");
} else{ if 条件不成立,执行else代码块里的代码
printf("判断条件不为真\n");
}
if后面的判断条件是需要用括号括起来的;
else后面不用写判断条件,因为else囊括了if条件以外的所有条件。
4.思维导图
在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。
相关文章:

C语言入门 Day_9 条件判断
目录 前言: 1.if判断 2.else判断 3.易错点 4.思维导图 前言: 我们知道比较运算和逻辑运算都会得到一个布尔型的数据,要么为真(true),要么为假(false)。 今天我们来学习真和假在…...

Nodejs-nrm:快速切换npm源 / npm官方源和其他自定义源之间切换
一、理解 Nodejs nrm Nodejs nrm 是一个管理 npm 源的工具。由于 npm 在国内的速度较慢,很多开发者会使用淘宝的 npm 镜像源,但是也会遇到一些问题,例如某些包在淘宝镜像源中不存在,或者淘宝镜像源本身也会有问题。 Nodejs nrm …...

数据驱动洞察:各种词频分析技术挖掘热点数据
一、引言 随着信息时代的发展,人们的关注点日益复杂多样。社交媒体、新闻网站和论坛等平台上涌现了大量的信息,这使得热点分析成为了解社会热点话题和舆情动向的重要手段。词频统计是热点分析的基础,本文将分别介绍基于ElasticSearch、基于S…...
ES6-简介、语法
ES6 ES6简介 ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015)。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语…...

诚迈科技子公司智达诚远与Unity中国达成合作,打造智能座舱新时代
2023 年 8 月 23 日,全球领先的实时 3D 引擎 Unity 在华合资公司 Unity 中国举办发布会,正式对外发布 Unity 引擎中国版——团结引擎,并带来专为次世代汽车智能座舱打造的团结引擎车机版。发布会上,诚迈科技副总裁、诚迈科技子公司…...

算法与数据结构(十)--图的入门
一.图的定义和分类 定义:图是由一组顶点和一组能够将两个顶点连接的边组成的。 特殊的图: 1.自环:即一条连接一个顶点和其自身的边; 2.平行边:连接同一对顶点的两条边; 图的分类: 按照连接两个顶点的边的…...
【Go 基础篇】Go语言 init函数详解:包的初始化与应用
介绍 在Go语言中,init() 函数是一种特殊的函数,用于在包被导入时执行一次性的初始化操作。init() 函数不需要手动调用,而是在包被导入时自动执行。这使得我们可以在包导入时完成一些必要的初始化工作,确保包的使用具有正确的环境…...

wazuh环境配置及漏洞复现
目录 一、wazuh配置 1进入官网下载OVA启动软件 2.虚拟机OVA安装 二、wazuh案例复现 1.wazuh初体验 2.这里我们以SQL注入为例,在我们的代理服务器上进行SQL注入,看wazuh如何检测和响应 一、wazuh配置 1进入官网下载OVA启动软件 Virtual Machine (O…...

Java接收前端请求体方式
💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 文章目录 RequestBodyPathVariableRequestParamValidated方法参数校验方法返回值校验 RequestHeaderHttpServletRequest ## Java接收前端请求体的方式 请求体…...

私有化部署即时通讯平台,30分钟替换钉钉和企业微信
随着企业对即时通讯和协作工具的需求不断增长,私有化部署的即时通讯平台成为企业的首选。WorkPlus作为有10余年行业深耕经验与技术沉淀品牌,以其安全高效的私有化部署即时通讯解决方案,帮助企业在30分钟内替换钉钉和企业微信。本文将深入探讨…...

如何深入理解 Node.js 中的流(Streams)
Node.js是一个强大的允许开发人员构建可扩展和高效的应用程序。Node.js的一个关键特性是其内置对流的支持。流是Node.js中的一个基本概念,它能够实现高效的数据处理,特别是在处理大量信息或实时处理数据时。 在本文中,我们将探讨Node.js中的流…...

MSP430FR2xxx开发(一)添加driverlib
一、新建工程 根据自己手上的硬件型号新建工程,文中已MSP430FR2355为例。 二、添加driverlib 首先去官方下载driverlib. https://www.ti.com.cn/tool/cn/MSPDRIVERLIB?keyMatchMSP430%20DRIVERLIB#downloads 下载后的内容如下: 我这里就选择MSP430…...

【C++】做一个飞机空战小游戏(九)——发射子弹的编程技巧
[导读]本系列博文内容链接如下: 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C】做一个飞…...
34.SpringMVC获取请求参数
SpringMVC获取请求参数 通过ServletAPI获取 将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象 index.html <form th:action"{/test/param}" method"post">用户名&#…...

TC1016-同星4路CAN(FD),2路LIN转USB接口卡
TC1016是同星智能推出的一款多通道CAN(FD)和LIN总线接口设备,CANFD总线速率最高支持8M bps,LIN支持速率0~20K bps,产品采用高速USB2.0接口与PC连接,Windows系统免驱设计使得设备具备极佳的系统兼容性。 支…...
Android源码——从Looper看ThreadLocal
1 概述 ThreadLocal用于在当前线程中存储数据,由于存储的数据只能在当前线程内使用,所以自然是线程安全的。 Handler体系中,Looper只会存在一个实例,且只在当前线程使用,所以使用ThreadLocal进行存储。 2 存储原理 …...

16、Flink 的table api与sql之连接外部系统: 读写外部系统的连接器和格式以及JDBC示例(4)
Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...
MySQL 自定义 split 存储过程
MySQL 没有提供 split 函数,但可以自己建立一个存储过程,将具有固定分隔符的字符串转成多行。之所以不能使用自定义函数实现此功能,是因为 MySQL 的自定义函数自能返回标量值,不能返回多行结果集。 MySQL 8: drop pr…...

专题-【十字链表】
有向图的十字链表表示法:...
微信小程序教学系列(2)
第二章:小程序开发基础 1. 小程序页面布局与样式 在小程序开发中,我们可以使用 WXML(WeiXin Markup Language)和 WXSS(WeiXin Style Sheet)来定义页面的布局和样式。 1.1 WXML基础 WXML 是一种类似于 H…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...