[C语言]if语句详解

C语言初阶系列

分支语句和循环语句(1)


目录

C语言初阶系列

前言

一,什么是语句?

1.1如何理解语句?

二,分支语句(选择结构)

2.1,if语句

2.2,if语句的错误的条件写法

2.2,if语句的正确的条件写法

2.3,单分支结构

2.4,双分支结构

2.5,多分支结构        

2.5.1可以实现,使用的很多的嵌套但是很臃肿的写法

2.5.2简洁的写法

2.5.2更简洁的写法

2.6,if语句默认它的后面只能控制一条语句

 2.7,养成良好的代码习惯

2.7.1更人看懂的代码风格 

if语句小技巧

2.8,举例if语句

2.8.1. 判断一个数是否为奇数

2.8.2.输出1 - 100之间的奇数

总结


前言

我们学习C语言,从小白成长为大佬的的探险历程,我们在这章将初步探索if语句这个知识关卡


一,什么是语句?

C语言语句可分为以下五类:
1. 表达式语句
2. 函数调用语句
3. 控制语句
4. 复合语句
5. 空语句

1.1如何理解语句?

我们将使用代码和注释,以及和运行示意图:

int main()
{3 + 5;//这就是一个表达式语句printf("hehe\n");//我们想用printf函数打印hehe这个信息,调用这个函数,//完成之后给个分号,这就是函数调用语句//语句就是大部分情况下一个分号隔开的就是一个语句;//简单的放一个分号,这就是一个语句,但是这个语句什么都不干,这叫空语句//空语句的应用场景,有时候我们需要一条语句,但是这条语句什么都不需要做,就可以使用空语句return 0;
}

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语
言有九种控制语句。
可分成以下三类:
1. 条件判断语句也叫分支语句:if语句、switch语句;
2. 循环执行语句:do while语句、while语句、for语句;
3. 转向语句:break语句、goto语句、continue语句、return语句

二,分支语句(选择结构)

分支语句是面向我们C语言的选择结构,为了实现这种选择结构
C语言给出了分支语言这个语法特点

2.1,if语句

是C语言单子常用的,能够实现分支的这样的语句形式
if语句该怎么去书写呢,

解释一下:
如果表达式的结果为真,则语句执行。
在C语言中如何表示真假?
0表示假,非0表示真。

2.2,if语句的错误的条件写法

我们将使用代码和注释,以及和运行示意图:

//错误写法
int main()
{int age = 0;scanf("%d", &age);if (18<= age <=30)//表达式先判断age>=18,//如果age是50的话,18小于age,这个条件为真,为真就等于1//1又小于等于30,所以这个地方就打印青年了//不是两端去判断age在这个范围内,它是先执行18<= age,在执行age <=30printf("青年\n");return 0;
}

2.2,if语句的正确的条件写法

我们将使用代码和注释,以及和运行示意图:

正确写法
int main()
{int age = 0;scanf("%d", &age);if ( age >=18 && age <= 30)printf("青年\n");return 0;
}

2.3,单分支结构

单分支语法结构:
if (表达式)  
语句;

解释:
if语句的后面的小小括号里面放一个表达式,
表达式的结果如果为真,语句就被执行,表达式的结果如果为假就不被执行
C语言中:0表示假,非0表示为真
表达式如果算出的不是0就是真,语句执行,如果为0就不执行

我们将使用代码和注释,以及和运行示意图:

//单分支的场景
//只处理符合条件的
int main()
{//如果年龄大于等于18 -- 成年//小于18,不管他int age = 0;scanf("%d", &age);if (age >= 18){printf("成年人");}return 0;
}

2.4,双分支结构

双分支语法结构:
if (表达式)
语句1;
else
语句2;

解释:
if如果表达式为真,就执行语句1,
当表达式为假的时候,我也想处理,我就可以走else,就可以执行语句2
要么你从if语句进去,执行语句1,不行就执行else语句,执行语句2,这个里面二选一

我们将使用代码和注释,以及和运行示意图:

int main()
{// 有if有else你不行就我来//如果年龄大于等于18 -- 成年人,否则就打印 -- 未成年人int age = 0;scanf("%d", &age);if (age >= 18){printf("成年人");}else{printf("未成年人\n");}return 0;
}

2.5,多分支结构

多分支语法结构:    
if (表达式1)
语句1;
else if (表达式2)
语句2;
else
语句3;

解释:
if表达式语句,如果表达式语句为真,就执行语句1,
如果不行的话,else if在判断一下下面表达式2,
如果表达式2的语句为真,就执行语句2,
如果表达式2的语句也不为真,就只能执行else的语句3
这里就做到了3选1,当然也可以多选1

多分支结构举例:
 我们使用多分支的条件
age <18  - 未成年
18-30  - 青年
31-50  -中年
51-70  -中老年
 71-99 -老年
 >99   -老寿星


2.5.1可以实现,使用的很多的嵌套但是很臃肿的写法

我们将使用代码和注释,以及和运行示意图:

int main()
{int age = 0;scanf("%d", &age);if (age < 18){printf("未成年\n");}else//else如果是整体的一个逻辑的话,大于等于18,//else里面有很多种类的情况,里面也可以细分{if (age >= 18 && age <= 30)//如果大括号里面只有一条语句。就可以将大括号去掉{printf("青年\n");//if  else这个整体合起来是一条语句}else{if (age >= 31 && age <= 50){printf("中年\n");}else{if (age >= 51 && age <= 70){printf("中老年\n");}else{if (age >= 71 && age <=99 ){printf("老年\n");}else{printf("老寿星\n");}}}}}return 0;
}

 2.5.2简洁的写法

 我们将使用代码和注释,以及和运行示意图:

int main()
{int age = 0;scanf("%d", &age);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 <= 70)printf("中老年\n");else if (age >= 71 && age <=99 )printf("老年\n");elseprintf("老寿星\n");		return 0;
}

  2.5.2更简洁的写法

 我们将使用代码和注释,以及和运行示意图:

//因为有前置条件可以在else if中写出一种条件就行 
//但是条件顺序不能变动,变动就会逻辑错误
int main()
{int age = 0;scanf("%d", &age);if (age < 18)printf("未成年\n");else if ( age <= 30)printf("青年\n");else if ( age <= 50)printf("中年\n");else if ( age <= 70)printf("中老年\n");else if ( age <= 99)printf("老年\n");elseprintf("老寿星\n");return 0;
}

2.6,if语句默认它的后面只能控制一条语句

 我们将使用代码和注释,以及和运行示意图:

int main()
{int age = 0;scanf("%d", &age);if (age >= 18)printf("成年了\n");printf("谈恋爱");//独立的,不被if控制return;
}

如果想让if语句可以控制,就要加一个限制
if后面加上一个大括号,这样if语句才都被控制了

一个大括号对应的是一个代码块

int main()
{int age = 0;scanf("%d", &age);if (age >= 18){//代码块printf("成年了\n");printf("谈恋爱");}return;
}

 2.7,养成良好的代码习惯

要养成良好的代码风格,让别人能够看得懂
容易让大家出现阅读错误的代码风格 

我们将使用代码和注释,以及和运行示意图:

int main()
{int a = 0;int b = 2;if (a == 1)if (b == 2)printf("hehe\n");elseprintf("haha\n");return 0;
}
//看代码感觉结果是haha
//但是结果是不打印
//else是与最近的if相匹配的,这样第一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;
}

2.7.1更人看懂的代码风格 

我们将使用代码和注释,以及和运行示意图:

if语句的书写风格容易误导的写法
if的条件满足就是return x,不满足就返回return y。
if (condition) {return x;
}
return y;
让人一目了然的写法
if (condition)
{return x;
}
else
{return y;
}
在不影响效率的情况下我们要写那种让人一目了然的代码

if语句小技巧

我们将使用代码和注释,以及和运行示意图:

int main()
{int a = 0;//if(a == 5)//这样写少写一个=号,不易发现,没有报错if (5 == a)//当我们写少写一个=号,就会报错,易发现错误//未来我们想判断一个变量和一个常量值是否相等的话,//可以把常量放在等号的左边,这样即使少写了一个等号,就会发现错误,改正printf("hehe\n");return 0;
}

2.8,举例if语句

2.8.1. 判断一个数是否为奇数

我们将使用代码和注释,以及和运行示意图:

int main()
{int n = 0;scanf("%d", &n);//只有变量才能赋值,表达式是不能被赋值的,//少写一个等号就会直接报错的if (n % 2 == 1)//通过模2得到的余数为1的,都是奇数{printf("YES\n");}elseprintf("NO\n");return 0;
}

 2.8.2.输出1 - 100之间的奇数

我们将使用代码和注释,以及和运行示意图:

使用分支语句解题:

int main()
{int i = 1;//循环变量while (i <= 100){if (i % 2 == 1)//通过模2得到的余数为1的,都是奇数printf("%d ", i);//%d后面加一个空格是为了,让我们看的跟清晰i++;}return 0;
}

 不使用分支语句解题:

int main()
{int i = 1;//循环变量while (i <= 100){printf("%d ", i);//%d后面加一个空格是为了,让我们看的跟清晰i+=2;}return 0;
}


总结

以上就是今天要讲的内容,本文仅仅全面介绍了C语言的if语句,可以让你在c语言的探险更加有趣,充实。

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

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

相关文章

python opencv 级联Haar多目标检测

一、基于OpenCV的haar分类器实现笑脸检测 1、Haar分类器介绍 &#x1f680;Haar分类器是一种基于机器学习的目标检测算法&#xff0c;它使用Haar特征描述图像中的目标。Haar特征是基于图像亮度的局部差异计算得出的&#xff0c;可以用来描述目标的边缘、角落和线条等特征。 使用…

Linux下Nginx升级

nginx版本升级不会覆盖配置文件&#xff0c;但以防万一升级前请先备份配置文件或者配置文件夹 默认配置文件地址&#xff1a;/usr/local/nginx/conf/nginx.conf 1.下载 wget -c http://nginx.org/download/nginx-1.24.0.tar.gz 2.解压 tar -xvf nginx-1.24.0.tar.gz 3.nginx…

【论文笔记】图像修复MPRNet:Multi-Stage Progressive Image Restoration 含代码解析

目录 一、介绍 二、使用方法 1.推理 2.训练 三、MPRNet结构 1.整体结构 2.CAB(Channel Attention Block) 3.Stage1 Encoder 4.Stage2 Encoder 5.Decoder 6.SAM(Supervised Attention Module) 7.ORSNet(Original Resolution Subnetwork) 四、损失函数 1.Charbonni…

2. DATASETS DATALOADERS

2. DATASETS & DATALOADERS PyTorch提供了两个数据基元&#xff1a;torch.utils.data.DataLoader和torch.uutils.data.data集&#xff0c;允许使用预加载的数据集以及自己的数据。数据集存储样本及其相应的标签&#xff0c;DataLoader在数据集周围包装了一个可迭代项&…

XFTP完全卸载干净教程

一、卸载应用程序 在控制面版中找到XFTP应用程序进行卸载操作。 二、删除注册表 &#xff08;1&#xff09;按住winR键打开“运行”并输入regedit打开注册表。 &#xff08;2&#xff09;按住ctrlF打开搜索&#xff0c;搜索xftp。 把这个目录下的能搜索到的xftp文件都删掉就行了…

计算机网络——计算机网络体系结构

文章目录 **1 计算机网络概述****1.1 概念****1.2 组成****1.3 功能****1.4 分类****1.5 性能指标** **2 计算机网络体系结构与参考模型****2.1 计算机网络分层结构****2.2 计算机网络协议&#xff0c;接口&#xff0c;服务的概念****2.3 ISO/OSI参考模型和TCP/IP模型** 1 计算…

短视频矩阵系统源码搭建--附赠代码

说明&#xff1a;本开发文档适用于短视频矩阵系统源码开发搭建&#xff0c;短视频seo矩阵源码开发搭建&#xff0c;抖音短视频seo源码开发搭建&#xff0c;抖音矩阵系统源码开发搭建等SaaS类产品开发场景。 短视频矩阵系统开发围绕的开发核心维度&#xff1a; 1. 多账号原理开…

Java框架 Mybatis入门

0目录 Java框架Mybatis 1..框架介绍 2.Mybatis实战 1.框架介绍 补充MVC思想 为什么使用框架&#xff1f; 效率高&#xff0c;成本低 框架是别人写好的&#xff0c;可以直接调用 框架是基于MVC的思想 框架包中含有MVC思想的所有组成模块&#xff1a;控制层&#xff1b;模型…

MVC精讲

前言&#xff1a;框架&#xff0c;架构&#xff0c;设计模式 架构&#xff1a;简单的说架构就是一个蓝图&#xff0c;是一种设计方案&#xff0c;将客户的不同需求抽象成为抽象组件&#xff0c;并且能够描述这些抽象组件之间的通信和调用。 框架&#xff1a;软件框架是项目软件…

使用 appium 进行微信小程序的自动化测试

目录 前言&#xff1a; 微信小程序结构 自动化用例的调整 示例代码 后记 前言&#xff1a; 微信小程序是一种流行的移动应用程序&#xff0c;它在移动设备上提供了丰富的功能和用户体验。为了确保微信小程序的质量和稳定性&#xff0c;自动化测试是必不可少的一环。Appiu…

【HarmonyOS】Stage模型二维码/条码生成与解析

HarmonyOS的官方API中提供了QRCode组件&#xff08;QRCode-基础组件-组件参考&#xff08;基于ArkTS的声明式开发范式&#xff09;-ArkTS API参考-HarmonyOS应用开发&#xff09;&#xff0c;这个组件有个缺点只能用于显示二维码&#xff0c;无法显示条码与解析码内容&#xff…

【Distributed】分布式Ceph存储系统之相关应用

文章目录 一、创建 CephFS 文件系统 MDS 接口1. 服务端操作1.1 在管理节点创建 mds 服务1.2 查看各个节点的 mds 服务1.3 创建存储池&#xff0c;启用 ceph 文件系统1.4 查看mds状态1.5 创建用户 2. 客户端操作2.1 客户端要在 public 网络内2.2 在客户端创建工作目录2.3 在 cep…