三、C语言中的分支与循环—if语句 (1)

news2024/11/25 22:44:26

在这一章节中我们的学习内容如下,咱们一步步来。

分支结构


1. if语句
2. 关系操作符
3. 条件操作符
4. 逻辑操作符:&& , || , !
5. switch语句

循环结构

6. while循环
7. for循环
8. do-while循环
9. break和continue语句
10. 循环的嵌套
11. goto语句

本章分支结构的学习内容如下:

三、C语言中的分支与循环—if语句 (1)

三、C语言中的分支与循环—关系操作符 (2)

三、C语言中的分支与循环—条件操作符 与逻辑操作符(3)

三、C语言中的分支与循环—switch语句(4)分支结构 完


本章循环结构的学习内容如下:

三、C语言中的分支与循环—while循环 (5)

三、C语言中的分支与循环—for循环 (6)

三、C语言中的分支与循环—do-while循环 (7)

三、C语言中的分支与循环—break和continue语句(8)循环结构 完  


 

1. if 语句的语法

注意if这句后面没有分号

1 if (表达式)
2     语句;

如果表达式为真,则语句执行;如果表达式为假,则后面那一语句不执行。

1)判断输入整数是奇数还是偶数

咱们思考这个判断条件,可以写成对该整数关于2取模的结果是否为0

同时注意if后的执行语句需要缩进,按下Tab键即可

int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 0)//注意这句后面没有分号;
        //注意判断左右表达式是否相等的符号是“==”
	    printf("%d是偶数",num);
	return 0;
}

输入10

输入9后,因为if()括号内的表达式为假,该语句不执行

2.else的用法

对于奇数偶数这种非此即彼的问题,我们可以用if....else....来处理,如果为真就怎样,否则就怎样

我们来改善上一个代码

int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 0)
		printf("%d是偶数",num);//if后的表达式为真执行这一句
	else
		printf("%d是奇数", num);//否则,if后的表达式为假执行这一句
	return 0;
}

3. 如何让if和else控制多条语句

1)if和else默认控制一条语句,如果有多条,则代码运行出错;

如果只有if ,代码没有错误,但是从第二条往下就不归if管了,继续执行:

2)解决方案:加花括号

int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 0)
	{
		printf("%d是偶数\n", num);
		printf("%d可以被2整除\n", num);
	}
	else
	{
		printf("%d是奇数\n", num);
		printf("%d不可以被2整除\n", num);
	}
	return 0;
}

4.嵌套if

当我们的问题有多种选择的时候,可以选择嵌套的方法,主要是自己需要梳理清楚逻辑

1)判断输入的数是0,还是正数,负数

可以嵌套进if或者else的任意一个中

形式1 嵌套进if中

//判断输入的数是0,还是正数,负数
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num != 0)
    {
        if (num > 0)
		    printf("输入的值为正数");
		else
			printf("输入的值为负数");
	}	
	else
		printf("输入的值为0");
	
	return 0;
}

形式2 嵌套进else中

//判断输入的数是0,还是正数,负数
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num == 0)
		printf("输入的值为0");
	else
	{
		if (num > 0)
			printf("输入的值为正数");
		else
			printf("输入的值为负数");
	}
	return 0;
}

也可以用if else if else这种写法,注意想要控制多条语句时需要打上花括号

if-else if-else 结构是一种条件控制语句,用于在多个条件之间进行选择执行。这种结构允许程序根据不同的条件执行不同的代码块。下面是其基本结构和工作原理的解释:

if (condition1) 
{
    // 代码块1: 当 condition1 为真时执行
} 
else if (condition2) 
{
    // 代码块2: 当 condition1 为假且 condition2 为真时执行
} 
else if (condition3) 
{
    // 代码块3: 当 condition1 和 condition2 都为假且 condition3 为真时执行
} 
else {
    // 代码块4: 当所有上面的条件都不满足时执行
}

所以该问题的代码还可以写作:

int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num == 0)
		printf("输入的值为0");
	else if(num > 0)
			printf("输入的值为正数");
	else
			printf("输入的值为负数");
	return 0;
}

2)练习题

  1. 输⼊⼀个⼈的年龄
  2. 如果年龄<18岁,打印"少年"
  3. 如果年龄在18岁⾄44岁打印"⻘年"
  4. 如果年龄在45岁⾄59岁打印"中⽼年"
  5. 如果年龄在60岁⾄89岁打印"⽼年"
  6. 如果90岁以上打印"⽼寿星"
这里涉及了&&,与操作符,我们下节继续
int main()
{
	int age = 0;//初始化
	int r = scanf("%d", &age);
	if (age < 18)
		printf("少年\n");
	else
	{
		if (age <= 44)
			printf("青年\n");
		else if (age <= 59 && age >= 45)
			printf("中老年\n");
		else if (age <= 89 && age >= 60)
			printf("老年\n");
		else
			printf("老寿星\n");
	}
	return 0;
}

5. 悬空else问题

悬空else:当有多个 `if` 语句嵌套而没有足够的 `else` 语句时,就可能产生悬空else的情况。例如:

if (condition1)
    if (condition2)
        statement1;
    else
        statement2;

在这个例子中,`else` 语句到底是与第一个 `if` 语句匹配,还是与第二个 `if` 语句匹配呢?这就是悬空else问题。C和C++,有一个清晰的规则来处理这个问题:`else` 总是与最近的未匹配的 `if` 与之配对。因此,在上面的例子中,`else` 与第二个 `if`(`if (condition2)`)配对。

为了避免悬空else问题带来的混淆,建议总是使用大括号 `{}` 明确地指明 `if-else` 语句的范围,即使语句体只有一行。例如:

if (condition1)
 {
    if (condition2) 
    {
        statement1;
    }
} 
else 
{
    statement2;
}

这样的代码结构可以清晰地表达程序的逻辑,避免悬空else问题。

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

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

相关文章

kubeadm创建k8s集群

kubeadm来快速的搭建一个k8s集群&#xff1a; 二进制搭建适合大集群&#xff0c;50台以上。 kubeadm更适合中下企业的业务集群。 部署框架 master192.168.10.10dockerkubelet kubeadm kubectl flannelnode1192.168.10.20dockerkubelet kubeadm kubectl flannelnode2192.168.1…

vue3 + TS + vite 搭建中后台管理系统(完整项目)

vue3 TS vite 搭建中后台管理系统&#xff08;完整项目&#xff09; 前言1、搭建步骤及方法2、集成多种插件功能&#xff0c;实现中后台按需使用3、新手学TS如何快速进入状态、定义TS类型4、layout搭建四款常见风格6、大屏搭建效果5、vue3Ts运营管理系统总结&#xff1a; 前言…

2020年认证杯SPSSPRO杯数学建模C题(第一阶段)抗击疫情,我们能做什么全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 C题 抗击疫情&#xff0c;我们能做什么 原题再现&#xff1a; 2020 年 3 月 12 日&#xff0c;世界卫生组织&#xff08;WHO&#xff09;宣布&#xff0c;席卷全球的冠状病毒引发的病毒性肺炎&#xff08;COVID-19&#xff09;是一种大流行病。…

Mybatis Plus 基础功能 BaseMapper和基础配置以及注解

文章目录 Mybatis Plus导入依赖定义Mapper约定常见配置 Mybatis Plus 导入依赖 官网看一下也行plus官网 spring boot3 版本<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><vers…

易点易动固定资产管理系统集成企业微信,帮助企业全生命周期管理固定资产

在现代企业中&#xff0c;固定资产管理是一项至关重要的任务。固定资产的高效管理可以提高企业的运营效率、降低成本&#xff0c;并确保资产的安全和稳定。然而&#xff0c;传统的固定资产管理方法往往复杂繁琐&#xff0c;容易出现信息不准确、流程不畅和数据不一致的问题。为…

Pikachu--字符型注入(get)

Pikachu--字符型注入&#xff08;get&#xff09; 提交方式是get提交&#xff0c;直接在浏览器地址栏里输入注入语句得出结果 判断注入类型 我们要输入数据库里面有的名字 比如vince 输入1 and 12 错误结果 输入 1 and 11 正确结果 判断为字符型注入 判断字段数 输…

一起玩儿物联网人工智能小车(ESP32)——24. 变量与函数(二)

摘要&#xff1a;本文介绍变量和函数的基本知识 在前面一篇中了解了变量&#xff0c;接着就来了解一下函数。函数是程序中的一个关键概念&#xff0c;它可以简化程序的编写&#xff0c;使代码更加模块化、可复用&#xff0c;提高程序的可读性。其实在之前已经多次遇到函数了&am…

python下载wheel并安装

一、查看当前python 版本兼容信息 pip debug --verbose C:\python\37>pip debug --verbose WARNING: This command is only meant for debugging. Do not use this with automation for parsing and getting these details, since the output and options of this command…

探索LinkedIn:使用TypeScript和jsdom库的高级内容下载器

概述 LinkedIn是一个专业的社交网络平台&#xff0c;拥有超过7亿的用户和数以亿计的职位、公司和教育机构的信息。对于数据分析师、市场营销人员、招聘人员和其他对LinkedIn数据感兴趣的人来说&#xff0c;能够从LinkedIn上获取和分析这些信息是非常有价值的。 因此&#xff0…

如何利用Oracle官方网站不登录账号下载和安装非最新版本的JDK(版本自由选择)

一、JDK概述 JDK&#xff08;Java Development Kit&#xff09;是Java开发工具集&#xff0c;是针对Java编程语言的软件开发环境。它包含了Java编译器、JRE&#xff08;Java运行时环境&#xff09;以及其他一些用于开发、调试和测试Java应用程序的工具&#xff0c;是Java开发人…

【日积月累】Java Lambda 表达式

目录 【日积月累】Java Lambda 表达式 1.前言2.语法3.应用场景3.1简化匿名内部类的编写3.1简化匿名内部类的编写3.2简化集合类中的操作3.3实现函数式接口3.4简化多个方法的调用3.5简化异步编程 4.总结5.参考 文章所属专区 日积月累 1.前言 Lambda表达式是一个匿名函数&#…

计算机毕业设计——SpringBoot 房屋销售租赁平台 房屋购物网站(附源码)

1&#xff0c;绪论 1.1 背景调研 在房地产行业持续火热的当今环境下&#xff0c;房地产行业和互联网行业协同发展&#xff0c;互相促进融合已经成为一种趋势和潮流。本项目实现了在线房产平台的功能&#xff0c;多种技术的灵活运用使得项目具备很好的用户体验感。 这个项目的…

微信小程序封装vant 下拉框select 单选组件

先上效果图&#xff1a; 主要是用vant 小程序组件封装的&#xff1a;vant 小程序ui网址&#xff1a;vant-weapp 主要代码如下: 先封装子组件&#xff1a; select-popup 放在 components 文件夹里面 select-popup.wxml: <!--pages/select-popup/select-popup.wxml--> &…

Flume基础知识(三):Flume 实战监控端口数据官方案例

1. 监控端口数据官方案例 1&#xff09;案例需求&#xff1a; 使用 Flume 监听一个端口&#xff0c;收集该端口数据&#xff0c;并打印到控制台。 2&#xff09;需求分析&#xff1a; 3&#xff09;实现步骤&#xff1a; &#xff08;1&#xff09;安装 netcat 工具 sudo yum …

RT-Thread学习

RT-Thread是以Apache License v2开源许可发布的物联网操作系统。 RT-Thread有十多年的历史&#xff0c;在开发过程中也放在Github上由大家协同开发&#xff0c;并发布一个个版本&#xff0c;导致不同人群面对多样的版本无从下手。 RT-Thread的版本/分支有以下几种可供选择&…

51单片机(STC8)-- GPIO输入输出

文章目录 I/O口相关寄存器端口数据寄存器端口模式配置寄存器&#xff08;PxM0&#xff0c;PxM1&#xff09;端口上拉电阻控制寄存器(PxPU)关于I/O的注意事项 配置I/O口I/O设置demoI/O端口模式LED控制&#xff08;I/O输出&#xff09;按键检测&#xff08;I/O输入&#xff09; S…

低代码搭建,助力批发零售行业解决方案的快速实现

引言 随着技术的快速发展&#xff0c;低代码技术作为一种高效的业务解决方案&#xff0c;正日益在批发零售行业中展现其巨大的应用潜力。其所带来的快速搭建、灵活性和成本效益&#xff0c;对于现代批发零售业务的管理和发展具有重要意义。 本文旨在探讨低代码技术在批发零售…

Groovy操作JSON和XML及对文件的处理

文章目录 1Groovy对Json的操作1.1 Groovy自带工具处理Json1.2 使用java第三方类库gson处理json 2 Groovy对xml的操作2.1 对象转换成xml2.2 xml转换成对象 3 Groovy操作文件3.1 文本文件操作3.2 对象写入文件和从文件中读出 1Groovy对Json的操作 1.1 Groovy自带工具处理Json ​…

跨年烟花-Html5实现_附完整源码【可直接运行】

文章目录 &#x1f37b;前言&#x1f538;目录结构⚫完整源码&#x1f535;源码分析&#x1f4ae;注意事项 &#x1f488;总结 &#x1f37b;前言 随着科技的进步和互联网的普及&#xff0c;人们对于跨年庆祝的方式也在不断变化。传统的烟花燃放虽然美丽&#xff0c;但存在环境…

气泵方案|车载充气泵的芯片和传感器

无线车载充气泵方案由一块PCBA板集成其所需的功能&#xff0c;其充气原理是发动机通过两根三角带驱动气泵曲轴&#xff0c;进而驱动活塞进行打气&#xff0c;打出的气体通过导气管导入储气筒。另一方面储气筒又通过一根导气管将储气筒内的气体导入固定在气泵上的调压阀内&#…