【C语言初阶】 一文详解分支语句 if

news2024/9/22 23:32:50

在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏:《速学C语言》《数据结构篇》

⛺️生活的理想,就是为了理想的生活!

文章目录

  • 前言
      • 结构化程序设计的三种基本结构
      • 💬 分支语句 (选择结构)
      • 📑 if 语句
        • 💬 代码演示:`if`语句的单分支情况
        • 💬 代码演示:`if`语句的单双分支情况
        • 💬 代码演示:`if`语句的多分支情况
      • 💬 if语句中的嵌套
      • 💬 if语句中的注意事项
        • 📜 if 语句中的大括号
        • 📜 悬空else、else的匹配规则
      • 总结

前言

   🌈hello! 各位宝子们大家好啊,相信大家都多多少少了解过if语句吧,但是你真的有了解过,所有if语句的细节吗?学完这篇文章你将知道if语句的所有知识。

结构化程序设计的三种基本结构

📑大家都知道C语言开发出来是为了解决生活中的问题的,而生活中的问题可以大致分为:
📌 顺序结构:

  • 就是按照顺序一步一步往下走

📌选择结构:

  • 分支语句

    • ifswitch

📌循环结构:

  • 循环语句:

    • whliefordo while

本次主要给大家讲解选择结构中的分支语句:if语句、switch语句;

💬 分支语句 (选择结构)

📚那么什么是选择呢?
想我们生活中的,最平常的
今天选择吃吃蛋炒饭呢?
还是吃吃红烧牛肉面条?这个就是选择?
在这里插入图片描述

💡 当然我们生活种还有些人说,这些我都不想吃我就想吃大虾。

  • 这个在C语言中就是多分支语句。

在这里插入图片描述

💡 现在大家明白什么是选择结构了吧! 废话不多下面给大家讲讲讲在C语言中选择语句是怎么实现的。
C语言中选择结构为我们提供了俩个选择语句:
if 语句 switch语句

📑 if 语句

  • if由名知意:就是条件的意思嘛。

先来给大家讲讲if语句的语法是怎么样的?

💬 代码演示:if语句的单分支情况

✅ 语法结构:

if(表达式)
{
	语句;
}    

💭这边来解释一下但分支if语法结构意思:
📌if前面说了是条件所以我们if后面跟的表达式就是条件
📌而下面的括号代表满足这个条件就进入到这个括号里面开始执行括号里面的语句

  • 语法清楚了那么,实战开始
#include <stdio.h>
int main()
{
	int age = 0;
	//输入
	scanf("%d", &age);

	if (age < 18)
		printf("未成年\n");

	return 0;
}

📜说明:
这里的意识是输入一个年龄,我们进行判断,当小于18时我们就输出未成年。

  • 各位铁铁们是不是非常简单,这就是if语句的单分支情况。
💬 代码演示:if语句的单双分支情况

✅ 语法结构:

if(表达式)
{
    语句1;
}
else
{
    语句2;
}

💭这边来解释一下但双分支if语法结构意思:
📌if的单分支我们前面讲了,其实 双分支 也非常简单。else 就是否则的意思。字面上理解就是多了一种情况。有了俩种选择,是吧就是如此的简单!
📌满足if语句后面的表达式条件,就进入if后面跟的 括号 里面 执行语句 ,否则就进入else后面的括号里面 执行语句

  • 语法清楚了那么,实战开始
#include <stdio.h>
int main()
{
	int age = 0;
	//输入
	scanf("%d", &age);

	if (age < 18)
		printf("未成年\n");
	else
		printf("成年\n");

	return 0;
}

ok各位铁汁们,这段代码大家看的懂嘛!
📜说明:
当我们输入的年龄大于18时就输出 成年
当我们输入的年龄小于18时就输出 未成年
这是不是可以选择的就是俩总情况了呢?这个就叫if语句的双分支。

📑那么有人就会问那博主,那我有更多的情况怎么表达呢?

📑这时就会用到if的多分支情况,下面我们来一起看看吧。

💬 代码演示:if语句的多分支情况

✅ 语法结构:

if(表达式1)
{
    语句1;
}
else if(表达式2)
{
    语句2;
}
else
{
    语句3;
}

💭这边来解释一下但双多分支if语法结构意思:
📌if的单双分支我们前面讲了,多分支其实和双分支很像。多了一些条件嘛。条件那么在加上一个if然后在表达式里面写条件就好了。这是不是就好理解多了。
📌多几个条件我们就加几个else if就好了,满足else if后面的表达式条件就进入后面跟的括号里面的语句

  • 语法清楚了那么,实战开始
#include <stdio.h>
int main()
{
	int age = 0;
	//输入
	scanf("%d", &age);
	//<18 青少年
	//18~30 青年
	//31~50 中年
	//51~80 中老年
	//81~100 老年
	//101+ 老寿星
	if (age < 18)
		printf("青少年\n");
	else if (age >= 18 && age <= 30)
		printf("青年\n");
	else if (age >= 31 && age <= 50)
		printf("中年\n");
	else if (age >= 51 && age <= 80)
		printf("中老年\n");
	else if (age >= 81 && age <= 100)
		prnitf("老年\n");
	else
		printf("老寿星\n");
	return 0;
}
else if (age >= 18 && age <= 30)

这句话各位铁子们刚学可能看不懂,相信大家可能会问18~30数学里面直接写:
💭 说明:

  • 18<= age <=30 这个是数学里面的写法。
  • 而这样写C语言会当成什么呢?
  • C语言中会先执行18<=age这个条件,当我们输入15时。18<=15肯定是假的那么就是0。在C语言中假为0,真为1。
  • 18<= age <=30 就会变成0 <=30
  • 看下面这段代码,所以当我们输入15时也会输出青年
    在这里插入图片描述

📌 怎么解决呢?
在C语言中&&是逻辑与的意思就是并且
所以我们这样写18<= age <=30 就完美解决了这个问题。
同时满足18<= ageage <=30俩个条件。

ok各位铁汁们,这下这段代码大家看的懂了嘛!
📜说明:
这里我们就用了if多分支写了多个条件。
输入年龄大于18  输出   青少年
输入年龄18~30   输出   青年
输入年龄31~50   输出   中年
输入年龄51~80   输出   中老年
输入年龄81~100 输出   老年
输入年龄101+   输出  老寿星

💭各位铁子们,明白了嘛,是不是也不难

💬 if语句中的嵌套

📚 在if语句中是支持嵌套使用的大家看。

	if (age < 18)
    {
        printf("青少年\n");
    } 		
    else
    {
        if (age >= 18 && age <= 30)
            printf("青年\n");
        else if (age >= 31 && age <= 50)
            printf("中年\n");
        else if (age >= 51 && age <= 80)
            printf("中老年\n");
        else if (age >= 81 && age <= 100)
            printf("老年\n");
        else
            printf("老寿星\n");
    }
  • 这里我们就使用了 if 语句的嵌套,当输入的年龄大于18了,之后就进入else里面嵌套的if语句里面判断。

💬 if语句中的注意事项

📜 if 语句中的大括号
  • 前面我们的if语句都没有带大括号,大家看下这段代码
//代码一:									//代码二:
	if (18 <= age )							if (18 <= age )							
		printf("青年\n");					{
		printf("成年了\n");						printf("青年\n");	
												printf("成年了\n");
											}	

这俩个语句有什么区别? 运行看一下

在这里插入图片描述

  • 我们的本意是当输入年龄时18时才会输出后面俩条语句。
  • 结果我们输入15时,结果第二条打印语句也输出了。

而带了括号呢?

请添加图片描述
📌 这是为什么嘞!

📜 原因:

  • if语句中只默认跟一条语句,想跟多条语句的话,就要在if语句里面加上大括号然后再大括号里面写语句就可以执行多条了。
  • 所以我们好的习惯是,不管是一条语句还是多条语句都加大括号。
  • 这就是所谓的复合语句,有多条语句。

✅ 模板:

if (18 <= age )	
{
	printf("青年\n");					
	printf("成年了\n");	
}
else
{
	printf("哈哈\n");
}
📜 悬空else、else的匹配规则

大家看一下这段代码,的输出结果是什么。

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if (a == 1)
        if (b == 2)
            printf("hehe\n");
    else
            printf("haha\n");
    return 0;
}
  • 相信很多人都会说,这还不简单,当a不等于1是不就进入else里面打印haha嘛?
  • 真的是这样嘛?我们来看一下

在这里插入图片描述
大家看什么都没输出,啊为什么会是这样呢?

  • 这段代码我们重新手写一下
#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if (a == 1)
        if (b == 2)
            printf("hehe\n");
   	    else
            printf("haha\n");
    return 0;
}

这样才是真正的书写方式,是不是直观很多呢?

  • 这时大家会发现,一个人的代码规范真的特别重要,行为不规范的代码特别容易造成误解!

✅ 模板:
然后我们来讲下为什么?

  • else 是和最近的 if相匹配的
  • 所以当我们a=0时就不会进入里面的if语句进行判断所以就什么都没打印啦。

总结

✅ 归纳:
好了以上就是if语句的全部内容了,关于
  if的语法
  if的大括号
  if的嵌套
  注意事项
  else的匹配规则
就是这些内容了,学会他们你就可以玩转if语句了。
给大家留下一个题目大家学完之后可以去练习练习,巩固一下自己今天学的知识。
判断一个数是否为奇数
看到这里了还不给博主扣个点赞收藏
💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
拜托拜托这个真的很重要!
你们的点赞就是博主更新最大的动力!
有问题可以评论或者私信呢秒回哦。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

平衡二叉树(AVL)

平衡二叉树 基本介绍 左旋转调整成平衡二叉树 右旋转调整成平衡二叉树 双旋转调整成平衡二叉树 上述三种旋转方式的代码实现 class Node:"""创建 Node 节点"""value: int 0left Noneright Nonedef __init__(self, value: int):self.value …

HFS 快速搭建 http 服务器

HFS 是一个轻量级的HTTP 服务工具&#xff0c;3.0版本前进提供Windows平台安装包&#xff0c;3.0版本开提供Linux和macOS平台的安装包。 HFS更适合在局域网环境中搭建文件共享服务或者安装配置源服务器。 甲 非守护进程的方式运行 HFS &#xff08;Ubuntu 22.04&#xff09; 一…

c语言进制的转换2进制转换16进制

c语言进制的转换2进制转换16进制 c语言的进制的转换 c语言进制的转换2进制转换16进制一、16进制的介绍二、八四二一法则2进制转换16进制的方法 一、16进制的介绍 十六进制&#xff1a; 十六进制逢十六进一&#xff0c;所有的数组是0到9和A到F组成&#xff0c;其中A代表10&…

【C++基础入门】42.C++中同名覆盖引发的问题

一、父子间的赋值兼容 子类对象可以当作父类对象使用&#xff08;兼容性) 子类对象可以直接赋值给父类对象子类对象可以直接赋值给父类对象父类指针可以直接指向子类对象父类引用可以直接引用子类对象 下面看一个子类对象兼容性的代码&#xff1a; #include <iostream>…

EasyConnect

EasyConnect 简介下载安装 简介 EasyConnect 是一种远程连接解决方案&#xff0c;它允许用户通过互联网远程访问和控制其设备和资源。 下载 链接: https://pan.baidu.com/s/1JvejSUA8Tma91FOUv6Gswg 提取码: 3fb5 安装

7-4、S加减速转动实现【51单片机控制步进电机-TB6600系列】

摘要&#xff1a;本节介绍实现步进电机S曲线运动的代码 一、目标功能 实现步进电机转动总角度720&#xff0c;其中加减速各90 加速段&#xff1a;加速类型&#xff1a;S曲线   加速角度&#xff1a;角度为90   起步速度&#xff1a;30RPM&#xff0c;   终止速度&#x…

现在java和大数据选什么?

现在java和大数据选什么&#xff1f; 到底是选择大数据还是JAVA&#xff1f;”相信这个问题困惑着许多转行待定人士和高校专业待选的学生。 在普通人眼里可能会觉得这两个专业或者行业没啥区别&#xff0c;都是IT里的&#xff0c;能有啥大不同。这是第一层。最近很多小伙伴找我…

Linux系统中让$前面显示完整的路径

目录 ■修改前效果 ■修改后效果 ■修改方法 ■修改前效果 ■修改后效果 ■修改方法 step1.找到当前用户下面的配置文件【.bashrc】 step2.使用vi命令编辑文件&#xff0c;在最后一行添加如下内容。 export PS1[\u\h $PWD]$ step3.使修改后的文件立即生效 source .bashrc

叮~程序员,你的专属1024程序员节已到账,请注意查收!

“1024&#xff0c;怎么过&#xff1f;” “&#xff1f;&#xff1f;&#xff1f;” “呆子。程序员节&#xff01;” 鲁迅曾说&#xff1a;世界上本没有节日&#xff0c;关注的人多了&#xff0c;便成了节。(hahaha....bushi) 如此小众的节日&#xff0c;外行的人听了好奇&a…

uboot通过图像化界面配置 dns命令

一. 简介 之前文章简单介绍了 uboot图像化配置操作。地址如下&#xff1a; uboot图像化配置操作说明-CSDN博客 本文就以如何使能 dns 命令为例&#xff0c;讲解一下如何通过图形化界面来配置 uboot。 二. uboot 通过图像化界面配置 dns命令 这里所使用的 uboot的源码包&…

M1本地部署Stable Diffusion

下载安装 参考博客: 在Mac上部署Stable Diffusion&#xff08;超详细&#xff0c;AI 绘画入门保姆级教程&#xff09; 安装需要的依赖库 brew install cmake protobuf rust python3.10 git wget 可能中途会存在下载报错或者下载卡主的问题,需要切国内源 brew进行替换源: …

小黑子—spring:第一章

spring入门1.0 一 小黑子对spring基础进行概述1.1 spring导论1.2 传统Javaweb开发困惑及解决方法1.3 三大的思想提出1.3.1 IOC入门案例1.3.2 DI入门案例 1.4 框架概念1.5 初识spring1.5.1 Spring Framework 1.6 BeanFactory快速入门1.7 ApplicationContext快速入门1.8 BeanFact…

SpringBoot项目中的测试类,无法注入类,注入类为空

开发中&#xff0c;需要用到测试类来测试接口 我最开始使用的注入方式是Autowired&#xff0c;但是在执行测试时&#xff0c;注入类报空指针异常&#xff0c;一直为null 后来上网查到几种解决方案&#xff0c;最终在通过下述内容解决了&#xff1a; 1.测试类中添加注解 SpringB…

【云上探索实验室-码上学堂】免费学习领好礼!

走过路过&#xff0c;不要错过&#xff01;上云AI三步走&#xff0c;学着课程奖品有&#xff01; 亚马逊云科技又放福利了&#xff0c;为了让同学们更快入手Amazon CodeWhisperer&#xff0c;官方推出《云上探索实验室-码上学堂》活动&#xff0c;作为一名Amazon CodeWhisperer…

一种晶圆表面形貌测量方法-无图晶圆几何量测系统

晶圆检测机&#xff0c;又称为半导体芯片自动化检测设备&#xff0c;是用于对半导体芯片的质量进行检验和测试的专用设备。它可以用于硅片、硅晶圆、LED芯片等半导体材料的表面检测&#xff0c;通过对晶圆的表面特征进行全面检测&#xff0c;可以有效降低产品的不良率&#xff…

Z41H-40C明杆闸阀型号解析

Z41H-40C型号字母含义 Z41H-40C型号是德特森阀门常用的明杆闸阀型号字母分别代表的意思是: Z——代表阀门类别《闸阀》 4——代表连接方式《法兰》 1——代表结构形式《明杆》 H——代表密封材质《不锈钢合金》 -《分隔键》 40——代表公称压力《4.0MPA》 C——代表阀体…

MongoDB副本集调整节点

点击上方蓝字关注我 MongoDB的副本集&#xff08;Replica Set&#xff09;是一个高可用性、可扩展性和冗余性的数据库解决方案。它能够确保数据库的高可用性&#xff0c;同时保障了数据的安全性。在本文中&#xff0c;我们将探讨如何在一个已经包含三个数据节点的副本集集群中&…

前端(二十四)——轮询与 WebSocket的battle

&#x1f603;博主&#xff1a;小猫娃来啦 &#x1f603;文章核心&#xff1a;轮询与 WebSocket的battle 文章目录 前言轮询的原理及实现WebSocket的原理及实现轮询与WebSocket的比较轮询的应用场景WebSocket的应用场景使用场景的对比与选择WebSocket的安全性考虑WebSocket与服…

匝间冲击耐压试验仪

概述 武汉凯迪正大KDYD2835kV匝间冲击耐压试验仪是采用脉冲波形比较法,以高压冲击波对二线圈或绕组进行过电压的模拟检测&#xff0c;并由示波器来判别二绕组波形差异的一种测试仪器。它能迅速、正确地判断线圈或绕组匝间绝缘电晕放电、局部或相间短路、开路、接线嵌线错误、线…

正点原子嵌入式linux驱动开发——Linux I2C驱动

在电子产品硬件设计当中&#xff0c;I2C 是一种很常见的同步、串行、低速、近距离通信接口&#xff0c;用于连接各种IC、传感器等器件&#xff0c;它们都会提供I2C接口与SoC主控相连&#xff0c;比如陀螺仪、加速度计、触摸屏等&#xff0c;其最大优势在于可以在总线上扩展多个…