C语言分支语句之if的一些用法

目录

  • 引言
    • C语言结构
  • 1. if 语句
    • 1.1 if
    • 1.2 else
  • 2. 分支中包含多条语句
  • 3. 多重选择 else if
  • 4. 嵌套if
  • 5. 悬空else / else与if配对问题

引言

C语言作为一种非常常用的编程语言,具有灵活强大的循环和分支结构。循环结构允许我们重复执行一段代码,而分支结构则允许我们根据条件选择执行不同的代码块。这两个结构在编写程序时非常有用,可以帮助我们实现不同的逻辑和控制流程。在本篇文章中,我们将详细介绍C语言中的分支语句中的if。

C语言结构

C语言是一种结构化控制语言,这里的结构即为顺序机构、选择结构、循环结构。

在C语言中,我们可以使用 ifswitch 实现分支结构,使用 forwhiledo while 实现循环结构。

1. if 语句

1.1 if

if语句的语法形式是这样的

if(表达式)语句

表达式成立(为真),则语句执行; 表达式不成立(为假),则语句不执行;

在C语言中,0为真,非0为假;即如果表达式的结果为0,则语句执行;若表达式结果非0,则语句不执行;

例子,输入一个整数,判断是否为奇数:
在这里插入图片描述

#include<stdio.h>
int main()
{int num = 5;if (num % 2 != 0){printf("%d是奇数", num);}return 0;
}

输出结果
在这里插入图片描述

1.2 else

如果一个数不是奇数,那么这个数就是偶数了,那么我们如何判断这个数是奇数还是偶数呢?

这里就需要 **if…else…**的语句表示形式了,其具体形式如下:

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

例子,输入一个整数,判断他是否为奇数,若为奇数,怎判断为奇数,反之,则判断为偶数;

#include<stdio.h>
int main()
{int num = 0;scanf("%d", &num);if (num % 2 != 0)printf("%d是奇数", num);elseprintf("%d是偶数", num);return 0;
}

在这里插入图片描述

在这里插入图片描述
练习:输入一个年龄,如果大于等于18,则输出为成年,反之为未成年:

#include<stdio.h>
int main()
{int year = 0;printf("请输入年龄:");scanf("%d", &year);if (year >= 18)printf("是成年\n");elseprintf("是未成年\n");return 0;
}

在这里插入图片描述

2. 分支中包含多条语句

默认在 if 和 else 语句中默认只控制一条语句。若想要控制多条语句,则用{}将多条语句括起来。

#include<stdio.h>
int main()
{int a = 0;int b = 0;int c = 0;printf("请输入a和b:");scanf("%d%d", &a, &b);if (a >= b){c = a;a += b;b = c;printf("a=%d\nb=%d", a, b);}else{c = b;b += a;a = c;printf("a=%d\nb=%d", a, b);}return 0;
}

输出结果
在这里插入图片描述

3. 多重选择 else if

在现实生活中我们常有多种选择,在程序中我们也可以用 else if来拓展if else 结构来模拟着中情况。

#include<stdio.h>
int main()
{int age = 0;printf("请输入年龄:");scanf("%d", &age);if (age < 18){printf("未成年\n");}else if (age <= 44){printf("青年\n");}else if (age <= 59){printf("中年\n");}else if (age <= 89){printf("老年\n");}else{printf("老寿星\n");}return 0;
}

输出结果
在这里插入图片描述

4. 嵌套if

实际上,else ifif else的一种变式。即一个新的if语句嵌套 else语句中;

换一句话说,在if else 语句中,else 可以与另一个 if语句连用,形成多重判断;


int main()
{int age = 0;scanf("%d", &age);if (age < 18){printf("少年\n");}else{if (age <= 44){printf("⻘年\n");}else{if (age <= 59){printf("中⽼年\n");}else{if (age <= 89)printf("⽼年\n");elseprintf("⽼寿星\n");}}}return 0;
}

在这里插入图片描述
有了着中嵌套语法,就可以完成更多复杂的逻辑判断;

5. 悬空else / else与if配对问题

如果有有许多 if 和 else,那么 else 只与最近的else配对;

猜一猜下面代码的结果是什么?

#include<stdio.h>
int main()
{int a = 0;int b = 2;if (a == 1)if (b == 2)printf("hehe\n");elseprintf("haha\n");return 0;
}

在这里插入图片描述
很多初学者,上来就判断a=0,不等于1,那就执行else字句,打印haha

但是当你运行代码时, 打印结果却是:啥都不输出;

为什么呢?

这就是悬空else问题,如果有多个if和else,可以记住这样一条原则,else总是跟最近的if匹配;

上面的代码的排版,让else和第一个if对齐,让我们以为else是和第一个if匹配的,当第一个if语句不成立的时候,自然想到接下来要执行else语句,打印haha,但实际else是和第二个if匹配,这样后边的if...else语句是嵌套在第一个if语句内的,如果第一个if语句不成立,那被嵌套的if和else就没机会执行了,最终啥都不打印;

上面代码相当于下面代码

int main()
{int a = 0;int b = 2;if (a == 1){if (b == 2)printf("hehe\n");elseprintf("haha\n");}return 0;
}

改正后代码

int main()
{int a = 0;int b = 2;if (a == 1){if (b == 2)printf("hehe\n");}else{printf("haha\n");}return 0;
}

在这里插入图片描述
只要适当带上大括号,代码的逻辑就会变得更加清晰,所以大家以后在写代码的时候要注意括号的使用,让代码的可读性更高!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络爬虫技术】(1·绪论)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;网络爬虫开发技术入门_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 …

本地部署Graphhopper路径规划服务(graphhopper.sh启动版)

文章目录 文章参考源码获取一、配置Java环境变量二、配置Maven环境变量三、构建graphhopper步骤1. 下载数据2. 配置graphhopper配置文件config-example.yml3. 在项目中启动命令行执行./graphhopper.sh build3.1|、遇到的问题3.1.1、pom.xml中front-maven-plugin-无法下载npm6.1…

跨境电商独立站:Shopify/Wordpress/店匠选哪个?

在面对不断增加的平台运营压力时&#xff0c;不少跨境电商的商家逐渐将注意力转向建立自己的独立站。据《中国跨境出口电商发展报告&#xff08;2022&#xff09;》所示&#xff0c;中国拥有的独立站数量在2022年已接近20万个&#xff0c;这表明独立站已成为卖家拓展海外市场的…

昇思25天学习打卡营第11天|xiaoyushao

今天分享ResNet50迁移学习。 在实际应用场景中&#xff0c;由于训练数据集不足&#xff0c;所以很少有人会从头开始训练整个网络。普遍的做法是&#xff0c;在一个非常大的基础数据集上训练得到一个预训练模型&#xff0c;然后使用该模型来初始化网络的权重参数或作为固定特征提…

苦学Opencv的第十一天:图像的形态学操作

Python OpenCV从入门到精通学习日记&#xff1a;图像的形态学操作 前言 图像形态学是图像处理中的一个重要分支&#xff0c;主要关注图像中物体的形状和结构。通过形态学操作&#xff0c;我们可以对图像进行有效的分析和处理&#xff0c;例如图像的腐蚀与膨胀、开运算与闭运算…

大模型学习笔记十四:Agent模型微调

文章目录 一、大模型需要Agent技术的原因二、Prompt Engineering可以实现Agent吗&#xff1f;&#xff08;1&#xff09;ReAct原理展示和代码&#xff08;2&#xff09;ModelScope&#xff08;3&#xff09;AutoGPT&#xff08;4&#xff09;ToolLLaMA 三、既然AutoGPT可以满足…

利用OSMnx求路网最短路径并可视化(二)

书接上回&#xff0c;为了增加多路径的可视化效果和坐标匹配最近点来实现最短路可视化&#xff0c;我们使用图形化工具matplotlib结合OSMnx的绘图功能来展示整个路网图&#xff0c;并特别高亮显示计算出的最短路径。 多起终点最短路路径并计算距离和时间 完整代码#运行环境 P…

C++——QT:保姆级教程,从下载到安装到用QT写出第一个程序

登录官网&#xff0c;在官网选择合适的qt版本进行下载 这里选择5.12.9版本 点击exe文件下载&#xff0c;因为服务器在国外&#xff0c;国内不支持&#xff0c;所以可以从我的网盘下载 链接: https://pan.baidu.com/s/1XMILFS1uHTenH3mH_VlPLw 提取码: 1567 --来自百度网盘超级…

Linux--网络基础

目录 1.计算机网络背景 2. 初识协议 2.1概念 2.2 协议分层 2.3OSI 七层模型 2.4TCP/IP 五层(或四层)模型 3.再识协议 3.1为什么要有 TCP/IP 协议&#xff1f; 3.2什么是 TCP/IP 协议&#xff1f; 3.3TCP/IP 协议与操作系统的关系(宏观上&#xff0c; 怎么实现的) 3.…

一键解锁:科研服务器性能匹配秘籍,选择性能精准匹配科研任务和计算需求的服务器

一键解锁&#xff1a;科研服务器性能匹配秘籍 HPC科研工作站服务器集群细分领域迷途小书童 专注于HPC科研服务器细分领域kyfwq001 &#x1f3af;在当今科技飞速发展的时代&#xff0c;科研工作对计算资源的需求日益增长&#x1f61c;。选择性能精准匹配科研任务和计算需求的服…

HarmonyOS和OpenHarmony区别联系

前言 相信我们在刚开始接触鸿蒙开发的时候经常看到HarmonyOS和OpenHarmony频繁的出现在文章和文档之中&#xff0c;那么这两个名词分别是什么意思&#xff0c;他们之间又有什么联系呢&#xff1f;本文将通过现有的文章和网站内容并与Google的AOSP和Android做对比&#xff0c;带…

助力樱桃智能自动化采摘,基于嵌入式端超轻量级模型LeYOLO全系列【n/s/m/l】参数模型开发构建果园种植采摘场景下樱桃成熟度智能检测识别系统

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;技术已经渗透到我们生活的方方面面&#xff0c;从智能家居到自动驾驶&#xff0c;再到医疗健康&#xff0c;其影响力无处不在。然而&#xff0c;当我们把目光转向中国的农业领域时&#xff0c;一个令人惊讶的…

python-NLP:2词性标注与命名实体识别

文章目录 词性标注命名实体识别时间命名实体&#xff08;规则方法&#xff09;CRF 命名实体识别方法 词性标注 词性是词汇基本的语法属性&#xff0c;通常也称为词类。词性标注是在给定句子中判定每个词的语法范畴&#xff0c;确定其词性并加以标注的过程。例如&#xff0c;表示…

【React】详解“最新”和“最热”切换与排序

文章目录 一、基本概念和初始化二、切换与排序功能的实现1. 函数定义和参数2. 设置活动 Tab3. 定义新列表变量4. 根据排序类型处理列表4.1 按时间降序排序4.2 按点赞数降序排序 5. 更新评论列表 三、渲染导航 Tab 和评论列表1. map 方法2. key 属性3. className 动态赋值4. onC…

模式Hash和history

vuerouter有两种路由模式Hash和history。区别&#xff1a;Hash为默认模式&#xff0c;url中包含一个#符号的哈希部分。优势&#xff1a;兼容性好&#xff0c;不需要后端服务器的特殊配置。缺点&#xff1a;不够美观&#xff0c;搜索引擎优化较差。History模式使用的浏览器的His…

小程序多排数据横向滚动实现

如何实现多排数据滚动效果 swiper 外部容器 swiper-item 每一页的数据 因为现在有多排数据,现在在swiper-item 中需要循环一个数组 初版 <template><view><view class"container"><view class"swiper-box"><swiper class&qu…

《Utilizing Ensemble Learning for Detecting Multi-Modal Fake News》

系列论文研读目录 文章目录 系列论文研读目录论文题目含义ABSTRACTINDEX TERMSI. INTRODUCTIONII. RELATED WORKA. FAKE NEWS CLASSIFICATION APPROACHES FOR SINGLE-MODALITY 单模态虚假新闻分类方法1) SINGLE-MODALITY BASED CLASSIFICATION APPROACHES USING TEXTUAL FEATUR…

家政项目小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;家政人员管理&#xff0c;家政服务管理&#xff0c;咨询信息管理&#xff0c;咨询服务管理&#xff0c;家政预约管理&#xff0c;留言板管理&#xff0c;系统管理 微信端账号功能…

Servlet1-Servlet程序、请求处理、继承体系

目录 什么是Servlet 手动实现Servlet程序 ​编辑url地址如何定位到Servlet程序去访问 Servlet的生命周期 ​编辑GET和POST请求的分发处理 通过继承HttpServlet类实现Servlet程序 IDEA菜单生成Servlet程序 Servlet类的继承体系 ServletConfig类 ServletContext类 什么…

go语言day19 使用git上传包文件到github Gin框架入门

git分布式版本控制系统_git切换head指针-CSDN博客 获取请求参数并和struct结构体绑定_哔哩哔哩_bilibili &#xff08;gin框架&#xff09; GO: 引入GIn框架_go 引入 gin-CSDN博客 使用git上传包文件 1&#xff09;创建一个github账户&#xff0c;进入Repositories个人仓…