[C语言]if语句详解

news2024/11/25 7:07:37

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 <=30
	printf("青年\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");
	else
		printf("老寿星\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");
	else
		printf("老寿星\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");
	else
		printf("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");
		else
			printf("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");
	}
	else
		printf("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.coloradmin.cn/o/765152.html

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

相关文章

Houdini Vex 补缺

一. transorm —— move—— scale—— rot1.这里 补2 个函数 quaternion( ) &#xff08;角度&#xff08;弧度制&#xff09;, 轴&#xff09; 获取4元数 qroate( ) &#xff08;quaternion &#xff0c;点坐标&#xff09; 进行旋转 案例&#xff1a; 参考 视频连接 般 b站…

【山河送书第三期】:《Python机器学习:基于PyTorch和Scikit-Learn 》赠书四本!!

【山河送书第三期】&#xff1a;《Python机器学习&#xff1a;基于PyTorch和Scikit-Learn 》 前言内容简介作者简介参与方式 前言 近年来&#xff0c;机器学习方法凭借其理解海量数据和自主决策的能力&#xff0c;已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务…

如何向资深开发人员寻求帮助(并获得帮助)

在程序开发过程中&#xff0c;我们时常会遇到让人挠头的问题。如何寻求帮助&#xff0c;尤其是如何向资深开发人员寻求帮助&#xff0c;是一门值得学习的技艺。这并不只是简单地把问题抛出来&#xff0c;而是需要学会在何时求助&#xff0c;如何提问&#xff0c;如何理解答案&a…

股票量化系统QTYX选股框架实战案例集|越强的龙头出分歧,越大可能出反包-230717...

前言 “实战案例个股画像”系列和大家分享我基于QTYX选股框架&#xff0c;在实战中选股的案例&#xff0c;和大家一起见证QTYX选股框架逐步完善的过程&#xff0c;帮助大家理解QTYX的精髓。 关于QTYX的使用攻略可以查看链接&#xff1a;QTYX使用攻略 关于QTYX初衷和精髓可以查看…

怎么用Midjourney制作表情包

要使用Midjourney制作表情包&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 打开Midjourney的官方网站或下载Midjourney应用程序&#xff0c;并登录你的账户。 2. 在Midjourney中&#xff0c;选择创建新项目或表情包。 3. 在项目中&#xff0c;你可以选择使用预设的模…

【学习笔记】浅谈最小生成树及重构树

板子传送门 定义 生成树 一个连通图的生成树是一个极小的连通子图&#xff0c;它包含图中全部的 n n n 个顶点&#xff0c;但只有构成一棵树的 n − 1 n-1 n−1 条边。 最小生成树 其实就是一个图中最小的一个生成树 所谓一个 带权图 的最小生成树&#xff0c;就是原图中…

Label基本用法

作用&#xff1a;是一个标签&#xff0c;可以用来显示文本&#xff1b; 常用属性&#xff1a; 常用事件&#xff1a; 后台代码示范&#xff1a; //d单击标签时触发private void label1_Click(object sender, EventArgs e){MessageBox.Show("标签被单击");//获取标签…

Python(十九)python中的注释

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

优化算法之梯度下降|Matlab实现梯度下降算法

题目要求&#xff1a; 使用Matab实现梯度下降法 对于函数&#xff1a; min ⁡ f ( x ) 2 x 1 2 4 x 2 2 − 6 x 1 − 2 x 1 x 2 \min f(x)2 x_{1}^{2}4 x_{2}^{2}-6 x_{1}-2 x_{1} x_{2} minf(x)2x12​4x22​−6x1​−2x1​x2​ 试采用 MATLAB实现最速下降法求解该问题, 给…

深度学习路线

深度学习路线 机器学习视频 吴恩达 http://open.163.com/special/opencourse/machinelearning.html 神经网络深度学习在线教程 共六章 http://neuralnetworksanddeeplearning.com 《神经网络设计》 国外经典教程 第十一章 反向传播 CNN:《Notes On Convolutional Neutral Netw…

h5live 2.0.1 合入测试

直接超过1个G 有消息进来&#xff0c;就是不显示

SpringBoot 整合 RabbitMQ demo

Rabbit Windows安装教程 本文只做Demo案例的分享&#xff0c;具体只是需自行百度 一、生产者 1.application.properties 配置Rabbit的基本信息 #rabbit 主机IP spring.rabbitmq.host127.0.0.1 #rabbit 端口 spring.rabbitmq.port5672 #rabbit 账号 可自行创建 这里是默认的 …

秀offer:大学老师15w、工商银商20w、字节40w,去哪个?

一个粉丝小伙伴给我发消息&#xff1a; 孟哥&#xff0c;想问下三个offer如何选择&#xff0c;我和家里人的意见不一样。我是双非的小硕。比较喜欢大学的氛围&#xff0c;才应聘了下。是一个三本的民办的&#xff0c;二本的完全够不上。工商在南京&#xff0c;待遇还算不错。字…

安卓进程间通信浅谈

Case: /Users/lucas/AndroidStudioProjects/aidldemo-master 一&#xff1a;操作系统 从操作系统原理去看&#xff0c;进程通信主要有三个方法&#xff1a;共享存储、消息传递、管道通信。 二&#xff1a;安卓中的IPC 进程间通信的几种方式&#xff1a;Intent&#xff08;Bu…

使用Visual Studio打造强大的程序,从添加第三方库开始

使用Visual Studio打造强大的程序&#xff0c;从添加第三方库开始 博主简介一、引言二、理解第三方库三、下载和安装第三方库四、示例代码和演示五、总结 博主简介 &#x1f4a1;一个热爱分享高性能服务器后台开发知识的博主&#xff0c;目标是通过理论与代码实践的结合&#x…

Vscode自定义注释模板

首先安装插件Doxygen Documentation Generator&#xff0c;安装完成之后点击Doxygen插件的设置&#xff0c;按照下面的步骤打开settings.json进行编辑&#xff1a; 在settings.json中追加如下代码&#xff1a; "doxdocgen.file.copyrightTag": ["Copyright (C),…

如何在Arch Linux上安装最新的GNOME Alpha/Beta版本

导读这是为那些想在 Arch Linux 上安装下一个主要版本的 GNOME 桌面环境的 alpha 或 beta 开发版的用户提供的快速而又肮脏的教程&#xff0c;仅供测试之用。 每次有新的 GNOME alpha 版本发布&#xff0c;人们都会问我如何在各种 GNU/Linux 发行版上安装。我总是告诉他们&…

SUM(整除分块)

题目描述 给定 x &#xff0c;y , 求 的值 . 其中 &#xff0c; 代表向下取整 输入描述 第一行一个正整数 T(1≤T≤100)&#xff0c; 表示测试用例的数目。每个测试用例占一行。 接下来的 T 行&#xff0c;每行两个正整数 x, y 。 输出描述 输出共 T 行&#xff0c;…

Laravel文档阅读笔记-How to enable CORS on Laravel

使用中间件为http响应头添加Access-Control-Allow-Origin 1.创建Cors中间件&#xff1a; $ php artisan make:middleware Cors 2.编辑中间件&#xff1a; <?phpnamespace App\Http\Middleware;use Closure;class Cors {/*** Handle an incoming request.** param \Ill…

wordpress后台的路径都是空白,进不了后台怎么办?

主题或插件冲突&#xff1a;某些主题或插件可能与其他已安装的主题或插件不兼容&#xff0c;导致登录页面显示为空白。您可以通过禁用所有插件和将主题更改为默认主题来查看是否解决了问题。如果解决了问题&#xff0c;则可以逐个重新启用插件以找出是哪个插件造成冲突。 PHP错…