当前位置: 首页 > news >正文

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");
}

输出结果

你年龄更大

有了ifelse,我们就可以比较全面的根据不同情况,进行不同的代码执行了。

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接收前端请求体的方式 请求体&#xf…...

私有化部署即时通讯平台,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作为控制器方法的形参&#xff0c;此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象 index.html <form th:action"{/test/param}" method"post">用户名&#…...

TC1016-同星4路CAN(FD),2路LIN转USB接口卡

TC1016是同星智能推出的一款多通道CAN&#xff08;FD&#xff09;和LIN总线接口设备&#xff0c;CANFD总线速率最高支持8M bps&#xff0c;LIN支持速率0~20K bps&#xff0c;产品采用高速USB2.0接口与PC连接&#xff0c;Windows系统免驱设计使得设备具备极佳的系统兼容性。 支…...

Android源码——从Looper看ThreadLocal

1 概述 ThreadLocal用于在当前线程中存储数据&#xff0c;由于存储的数据只能在当前线程内使用&#xff0c;所以自然是线程安全的。 Handler体系中&#xff0c;Looper只会存在一个实例&#xff0c;且只在当前线程使用&#xff0c;所以使用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 函数&#xff0c;但可以自己建立一个存储过程&#xff0c;将具有固定分隔符的字符串转成多行。之所以不能使用自定义函数实现此功能&#xff0c;是因为 MySQL 的自定义函数自能返回标量值&#xff0c;不能返回多行结果集。 MySQL 8&#xff1a; drop pr…...

专题-【十字链表】

有向图的十字链表表示法&#xff1a;...

微信小程序教学系列(2)

第二章&#xff1a;小程序开发基础 1. 小程序页面布局与样式 在小程序开发中&#xff0c;我们可以使用 WXML&#xff08;WeiXin Markup Language&#xff09;和 WXSS&#xff08;WeiXin Style Sheet&#xff09;来定义页面的布局和样式。 1.1 WXML基础 WXML 是一种类似于 H…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...