【C语言】分支和循环(上)

【C语言】分支和循环(上)

    • 1、if语句
      • 1.2 else
      • 1.3分支中包含多条语句
      • 1.4嵌套if
      • 1.5悬空else问题
    • 2、关系操作符
    • 3、条件操作符
    • 4、逻辑操作符:与、或、非(取反)(&&,||,!)
      • 4.1逻辑取反运算符
      • 4.2逻辑 与 运算符
      • 4.3逻辑或操作符

前言:C语言是一种结构化的设计语言,这里所指的结果包括:顺序结构选择结构循环结构
在这里插入图片描述
接下来将介绍分支和循环结构,我们可以使用if、switch来实现分支结构,使用for、while、do while实现循环结构

1、if语句

if语句的语法形式如下代码所示:

if( 表达式 )
    语句

表达式如果为真,则下面的语句执行,如果为假,则语句不执行。

在C语言中,0为假(不成立),语句不执行;**非0表示真(成立)**时,语句执行。

eg:输入一个整数,判断是的为奇数:
在这里插入图片描述
if语句原理图如下:
在这里插入图片描述

1.2 else

接上面例子所述,如果一个数不是奇数,那么就是偶数,如果任意一个整数,要怎么判断是奇数还是偶数呢?

这里就可以在if语句后面加上else,构成if…else语句,语法形式如下:

if( 表达式 )
    语句1
else
    语句2

eg1:输入一个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印偶数:
在这里插入图片描述
eg2:输入一个年龄,≥18就输出:成年,否则输出:未成年:
在这里插入图片描述

1.3分支中包含多条语句

默认在if和else语句都只控制一条语句:
在这里插入图片描述
在这里插入图片描述
从上述示例中可以看出,不管是成年(age>=18)或者未成年(age<18),都会打印出“可以赚钱养家糊口了”。说明if语句只能控制一条语句,即:printf(“成年\n”);

这是因为if语句只能控制一条语句,如果if语句为真,则打印成年,if语句为假,则不打印;对于printf(“可以赚钱养家糊口了\n”);是独立于if存在的,不管if语句的条件是真还是假。如果if语句需要同时控制两条语句该怎么实现呢?就需要使用{}将代码括起来,else后也可以跟上大括号。如下代码所示:

在这里插入图片描述
在这里插入图片描述

1.4嵌套if

在if else语句中,else可以与另一个if语句连用,构成多重判断。
eg:要求输入一个整数,判断输入的整数是0,还是正数或者负数。请看代码演示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里的if相当于嵌套在else语句中,形成了嵌套结构

eg:输入一个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:非正数。请看下列代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上就是嵌套if语句的语法,有了嵌套if语句,就可以完成更多复杂逻辑的判断。

练习:
输⼊⼀个⼈的年龄
如果年龄<18岁,打印"少年"
如果年龄在18岁⾄44岁打印"⻘年"
如果年龄在45岁⾄59岁打印"中⽼年"
如果年龄在60岁⾄89岁打印"⽼年"
如果90岁及以上打印"⽼寿星"

在这里插入图片描述

1.5悬空else问题

如果有多个if和else的时候,else总是跟最接近的if匹配
下面以代码举例:

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 5;
	if (a == 1)
		if (b == 5)
			printf("hello world.\n");
	else
		printf("good afternoon.\n");
	return 0;
}

观察上述代码,思考它输出的是什么呢?
我们在初学的时候,会有这样的思路:if先判断a是否等于1,代码中a不等于1,那么就执行else语句,最后得出的结果是:good afternoon.

那我们看看运行代码起来会得到什么结果呢?
在这里插入图片描述
结果得到的是什么也不输出。这是为什么呢?
这就是本小节介绍的悬空else问题。如果有多个if和else,可以记住这样一条规则:else总是跟最接近的if匹配。

代码解析:上述代码让else和第一个if语句对齐,让我们以为else是和第一个if匹配。当第一个if不成立的时候,自然想到的就是执行else语句,打印good afternoon,但实际上else是和第二个if进行匹配的,这样后边的if…else语句是嵌套在第一个if语句中的,如果第一个if语句不成立,那么嵌套的if和else就没有机会执行,最终什么也打印不出来。

这个时候如果加上大括号{ }就会使得代码更加清楚易于理解:

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 5;
	if (a == 1)
	{
		if (b == 5)
			printf("hello world.\n");
	    else
		printf("good afternoon.\n");
	}
	return 0;
}

如果我们希望else确实和第一个if匹配,可以修改成如下代码:

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 5;
	if (a == 1)
	{
		if (b == 5)
			printf("hello world.\n");
	}
	    else
	{
		printf("good afternoon.\n");
	}
	return 0;
}

只要带上适当的大括号,代码的逻辑就会更加清晰,所以写代码的时候可以注意大括号的使用,使得代码可读性更高

2、关系操作符

C语言用于比较的表达式,称为关系表达式,使用的运算符就称为关系操作符
下面介绍6个基本常用的操作符:

> 大于运算符
< 小于运算符
>= 大于等于运算符
<= 小于等于运算符
== 相等运算符
!= 不相等运算符

下面举例理解:

  • m=n
  • m!=n
  • m<n
  • m>n
  • m<=n
  • m>=n

关系表达式通常返回0或1,表示真或者假

C语言中,0表示假,所有非0值表示真(关系表达式中用1表示真)。eg:27>25返回1,19>20返回0。

关系表达式中常常用于if和while结构来判断真假进行循环

#include <stdio.h>
int main()
{
  int num = 0;
  scanf("%d",&num);
  if(num % 5 == 0)//关系表达式运用在if语句中
  printf("%d是5的倍数\n",num);
  return 0;

注意:相等运算符 ==与赋值运算符 = 是两个不一样的运算符,不要混淆。有时候,可能会不小心将相等运算符写成赋值运算符=,虽然可以运行,但得不到我们想要的效果。


if(x =5)

上述示例中,我们原本是想判断x是否与5相等,但是不小心写成了x=5.这个时候式子表示对变量x赋值为5,它的返回值为5(为真),所以if判断总是为真。

为了防止这种错误出现,我们可以将变量写在等号的右边。

if(5 =x)

如果把==写成了=的时候编译器就会报错。

在关系操作表达式中,多个关系运算符不宜连用

eg:错误示范

a>b>c

解析上面的示范:
在这里插入图片描述

eg:输入一个年龄,如果年龄在18-36岁之间,我们称为青年。

在这里插入图片描述

3、条件操作符

条件操作符也叫三目操作符,需要接受三个操作数的,形式如下:

exp1?exp2:exp3

条件操作符的计算逻辑是:如果exp1为真,则计算exp2,计算的结果就是整个表达式的结果。如果exp1为假,则计算exp3,计算的结果就是整个表达式的结果。

eg:使用条件操作符表示下列代码的逻辑:
在这里插入图片描述

参考解答:
在这里插入图片描述

eg2:使用条件表达式实现找两个数中的较大值:

在这里插入图片描述

4、逻辑操作符:与、或、非(取反)(&&,||,!)

逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符:

  • !:逻辑取反运算符(改变单个表达式的真假)
  • &&:逻辑与运算符,表示并且的意思(全真为真,其余全假)
  • ||:逻辑或运算符,就是或者的意思(两侧至少有一个为真,则整个为真)

注意:C语言中,非0表示真,0表示假

4.1逻辑取反运算符

在这里插入图片描述
eg:有一个变量flag,如果flag为假(0),要做什么事情,可以写如下代码:
在这里插入图片描述
在这里插入图片描述
如果flag为真,!flag为假,相反flag为假,!flag为真。
所以上述flag为假,取反后为真,执行if语句的代码。

4.2逻辑 与 运算符

在这里插入图片描述

&&就是与运算符,也是并且的意思,&&是一个双目操作符,使用的方式是a&&b,&&两边的表达式都是真的时候,整个表达式为真,只要有一个是假,则为假。

如果我们要表示6-8月是夏天,代码如何实现呢?
在这里插入图片描述

这里的month既要大于等于6,又要小于等于8,且同时必须满足。

4.3逻辑或操作符

在这里插入图片描述
||就是或运算符,也就是或者的意思,||也是一个双目操作符,使用的方式是a||b,||两边的表达式只要有一个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。

比如:我们说一年中月份是12月或者1月或者2月是冬天,那么我们怎么使用代码体现呢?
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/592633.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小程序引入 Vant Weapp 极简教程

一切以 Vant Weapp 官方文档 为准 Vant Weapp 官方文档 - 快速入手 1. 安装nodejs 前往官网下载安装即可 nodejs官网 安装好后 在命令行&#xff08;winr&#xff0c;输入cmd&#xff09;输入 node -v若显示版本信息&#xff0c;即为安装成功 2. 在 小程序根目录 命令行/终端…

mac nvm install node<version> error 404

mac m2芯片遇到的问题&#xff0c;估计m系列的应该也有这个问题&#xff0c;在这里记录一下 解决方案&#xff1a; ## 需要先处理一下兼容就OK了arch -x86_64 zsh nvm install returns curl: (22) The requested URL returned error: 404 Issue #2667 nvm-sh/nvm GitHub

关于YOLO8学习(五)安卓部署ncnn模型--视频检测

前文 关于YOLO8学习(一)环境搭建,官方检测模型部署到手机 关于YOLO8学习(二)数据集收集,处理 关于YOLO8学习(三)训练自定义的数据集 关于YOLO8学习(四)模型转换为ncnn 简介 本文将会讲解: (1)使用前文生成的ncnn模型,部署到安卓端,并且实现视频中,人脸的检测…

FileBird Pro插件下载:革新您的WordPress媒体库管理

WordPress媒体库是您网站的重要组成部分&#xff0c;它存储了所有的图片、视频、文档等文件。但随着网站的扩展&#xff0c;媒体库的管理变得越来越复杂。FileBird Pro插件&#xff0c;作为一款专为WordPress用户设计的媒体库管理工具&#xff0c;以其直观的界面和强大的功能&a…

【PowerJob】从源码编译到k8s部署

前言 虽然PowerJob官方说支持JPA各种数据源&#xff0c;但在PG数据库的兼容性上&#xff0c;确实存在小问题&#xff0c;issue也有相关原理描述&#xff0c;官方采用的优雅方式并未真正解决问题&#xff0c;因为只解决了从Lob字段读取的时候&#xff0c;自动建表的时候还是会生…

去哪儿网机票服务请求头pre逆向

作者声明&#xff1a;文章仅供学习交流与参考&#xff01;严禁用于任何商业与非法用途&#xff01;否则由此产生的一切后果均与作者无关&#xff01;如有侵权&#xff0c;请联系作者本人进行删除&#xff01; url&#xff1a;aHR0cHM6Ly9tLmZsaWdodC5xdW5hci5jb20v 一、加密位…

噪声嵌入提升语言模型微调性能

在自然语言处理&#xff08;NLP&#xff09;的快速发展中&#xff0c;大模型&#xff08;LLMs&#xff09;的微调技术一直是研究的热点。最近&#xff0c;一篇名为《NEFTUNE: NOISY EMBEDDINGS IMPROVE INSTRUCTION FINETUNING》的论文提出了一种新颖的方法&#xff0c;通过在训…

网络基础-网络设备介绍

本系列文章主要介绍思科、华为、华三三大厂商的网络设备 网络设备 网络设备是指用于构建和管理计算机网络的各种硬件设备和设备组件。以下是常见的网络设备类型&#xff1a; 路由器&#xff08;Router&#xff09;&#xff1a;用于连接不同网络并在它们之间转发数据包的设备…

Unity 编辑器工具 - 资源引用查找器

在Unity项目开发过程中&#xff0c;管理和维护资源之间的引用关系是至关重要的。当然我们项目也是需要这个功能 毕竟项目大了之后查找资源引用还是交给 资源引用查找器 比较好。 功能概述 资源引用查找器允许开发者选择一个目标资源&#xff0c;并在整个项目中查找引用了该资…

docker-compose启动mysql5.7报错

描述一下问题经过&#xff1a; 使用docker compose 部署mysql5.7 文件如下: services:mysql:restart: alwaysimage: mysql:5.7container_name: mysql-devports:- 3306:3306environment:- MYSQL_DATABASEdev- MYSQL_ROOT_PASSWORD123456healthcheck:test: ["CMD", &q…

VMware虚拟机中ubuntu使用记录(5)—— 如何在ubuntu中安装USB相机ros驱动并获取usb摄像头数据

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、ROS下USB相机驱动1.准备工作(1) 下载驱动(2) 创建ROS工作空间 2. 安装usb_cam驱动(1) 安装usb_cam驱动包(2) 编译代码 3. 修改usb_cam驱动的配置文件(1) 查看US…

Unity 性能优化之数据面板(Statistics)(一)

提示&#xff1a;仅供参考&#xff0c;有误之处&#xff0c;麻烦大佬指出&#xff0c;不胜感激&#xff01; 文章目录 前言一、unity 统计数据面板&#xff08;Statistics&#xff09;1.Audio属性2.Graphics属性 二、什么是Draw Call&#xff1f;三、Unity3D stats也可以通过代…

分享一篇关于AGI的短文:苦涩的教训

学习强化学习之父、加拿大计算机科学家理查德萨顿&#xff08; Richard S. Sutton &#xff09;2019年的经典文章《The Bitter Lesson&#xff08;苦涩的教训&#xff09;》。 文章指出&#xff0c;过去70年来AI研究走过的最大弯路&#xff0c;就是过于重视人类既有经验和知识&…

Photoshop中图像编辑的基本操作

Photoshop中图像编辑的基本操作 Photoshop中调整图像窗口大小Photoshop中辅助工具的使用网格的使用标尺的使用注释工具的使用 Photoshop中置入嵌入式对象Photoshop中图像与画布的调整画布大小的修改画布的旋转图像尺寸的修改 Photoshop中撤销与还原采用快捷键进行撤销与还原采用…

Leetcode—422. 有效的单词方块【简单】Plus

2024每日刷题&#xff08;126&#xff09; Leetcode—422. 有效的单词方块 实现代码 class Solution { public:bool validWordSquare(vector<string>& words) {int row words.size();for(int i 0; i < row; i) {// 当前这一行的列数int col words[i].length(…

HTML_CSS学习:浮动

一、浮动简介 相关代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>浮动_简介</title><style>div{width: 600px;height: 400px;background-color: #1c80d9;}img{float:…

c++多线程基础

简介 c多线程基础需要掌握这三个标准库&#xff1a;std::thread, std::mutex, and std::async。 1. Hello, world #include <iostream> #include <thread>void hello() { std::cout << "Hello Concurrent World!\n"; }int main() {std::thread…

如何获得 FHE Circuit Privacy

参考文献&#xff1a; [AJL12] Asharov G, Jain A, Lpez-Alt A, et al. Multiparty computation with low communication, computation and interaction via threshold FHE[C]. EUROCRYPT 2012: 483-501[DS16] Ducas L, Stehl D. Sanitization of FHE Ciphertexts[C]. EUROCRY…

连接和使用vCenter Server嵌入式vPostgres数据库

vCenter Server 早期支持内嵌(embedded)和外部(external)数据库,内嵌数据库就是vPostgres,基于VMware Postgres数据库(PostgreSQL数据库),外部数据库用的多的是Oracle数据库和SQL Server数据库。因为早期使用内嵌的PostgreSQL数据库只能用于小型环境,比如仅支持几十台…

EPAI手绘建模APP颜色、贴图、材质、样式

⑦ 颜色选择页面 1) 颜色环选色。 图 65 颜色选择器-颜色环 2) RGB选色。 图 66 颜色选择器-RGB 3) HSL选色。 图 67 颜色选择器-HSL 4) 国风颜色库选色。 图 68 颜色选择器-国风 5) CSS颜色库选色。 图 69 颜色选择器-CSS 6) 历史颜色&#xff1a;保存最近使用的多个颜色&…