C语言分支循环探秘:解锁编程逻辑的无限可能 篇章1

目录

1.if语句

2.关系操作符

3.条件操作符

4.逻辑操作符:&&,||,!

5.switch语句

6.while循环

7.for循环

8.do-while循环

9.break和continue语句

10.循环的嵌套

11.goto

导入

        C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。

我们可以使用 if,switch,实现选择结构,使用 for,while,do while实现循环结构

1.if语句

1.1 if

if语句的语法形式如下:

if(表达式)
{
    执行语句
}

表达式的结果判断成功为0,否则为非0。0表示假,语句执行,非0表示真,语句不执行。

举例:判断张三是否不能谈恋爱

#include<stdio.h>

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("张三不能谈恋爱\n");
	}
	return 0;
}

1.2 else

如果张三的年龄大于等于18了,那就可以谈恋爱了,那么对于张三是能谈恋爱还是不能谈恋爱该怎么表示呢?

这时就需要 if...else...语句了,语法形式如下:

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

举例:通过张三的年龄,判断张三是否能谈恋爱,年龄小于18则不能谈恋爱,否则可以

#include<stdio.h>

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("张三不能谈恋爱\n");
	}
	else
	{
		printf("张三可以谈恋爱");
	}
	return 0;
}

1.3 分支中包含多条语句

如果 if 或者 else 后面不加大括号,默认只控制一条语句,比如:

	int age = 0;
	scanf("%d", &age);
	if (age > 18)
		printf("张三成年了\n");
	printf("张三不能谈恋爱\n");

你会发现无论输入是否>=18,或者<18,"张三不能谈恋爱"都会打印在屏幕上。

这是因为 if 语句默认只能控制后面的一条语句,如果 if 语句为真,执行printf("张三成年了\n);否则不执行。对于("张三不能谈恋爱\n);是独立存在的,不管 if 语句是否为真都会执行。所以,如果我们要使用 if 语句控制两条语句就需要使用 { } 将代码括起来,else 后面也可以叫上 { }。如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age > 18)
	{
		printf("张三成年了\n");
		printf("张三可以谈恋爱\n");
	}
	else
	{
		printf("张三没有成年了\n");
		printf("张三不能谈恋爱\n");
	}
	return 0;
}

1.4 嵌套if

在 if...else... 语句中,else可以与另一个 if 语句连用,构成多重判断。

比如:通过温度,判断水的固液气三态

#include <stdio.h>
int main()
{
	int temperature = 0;
	scanf("%d", &temperature);
	if (temperature <= 0)
	{
		printf("水是固态\n");
	}
	else if (temperature < 100)
	{
		printf("水是液态\n");//0<temperature<100
	}
	else
	{
		printf("水是气态\n");//100=<temperature
	}
	return 0;
}

以上就是嵌套 if 语句的语法啦,有了嵌套 if 语句,就可以实现更多复杂的逻辑判断。

练习:

1.如果年龄<18岁,打印"少年"
2.如果年龄在18岁⾄44岁打印"⻘年"
3.如果年龄在45岁⾄59岁打印"中⽼年"
4.如果年龄在60岁⾄89岁打印"⽼年"
5.如果90岁以上打印"⽼寿星"
6.输入一个人的年龄

1.5 悬空 else 问题

如果else前面有多个 if 语句,else总是和最近的 if 匹配

例如:

#include <stdio.h>
int main()
{
	int money = 0;
	scanf("%d", &money);
	if (money > 0)
		if (money > 1000)//口袋里的钱小于10块
			printf("haha\n");
	else//如果口袋里的钱为负数
			printf("hehe\n");
	return 0;
}

当口袋里的钱为负数时,你会发现它什么都不会打印。

为什么呢?

这是因为 else 是悬空的,如果 else 前有多个 if 语句,else 语句会只和最近的 if 匹配。实际上,上面的 else 是和 if(money >1000)匹配的,如果我要 else 和第一个 if 语句匹配,那么应该怎么解决呢,这时就可以加上大括号,代码如下:

#include<stdio.h>
int main()
{
	int money = 0;
	scanf("%d", &money);
	if (money > 0)
	{
		if (money > 1000)//口袋里的钱小于10块
		{
			printf("haha\n");

		}
	}
	else//如果口袋里的钱为负数
	{
		printf("hehe\n");
	}
	return 0;
}

而且,加上大括号也可以使得代码的可读性更高,所以,大家以后写代码的时候也要注意大括号的使用喔

if语句 结语

        好了,今天的分支语句就和大家介绍到这里,如果喜欢,记得点赞加收藏,并且关注我喔,我们下期见,拜拜啦~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32 | PWM脉冲宽度调制(第五天按键中断,控制电机正/反转、加速、减速、暂停与继续源码解析)

​ STM32 | PWM脉冲宽度调制(第五天)STM32 | PWM脉冲宽度调制(第五天呼吸灯源码解析)STM32 | PWM脉冲宽度调制(第五天电机速度控制源码解析)PWM 技术在以下其他机器学习领域和应用中也可以发挥作用: 自然语言处理 (NLP):调节文本生成模型(例如 GPT-3)的输出长度和多样…

简明Pytorch分布式训练 — DistributedDataParallel 实践

上一次的Pytorch单机多卡训练主要介绍了Pytorch里分布式训练的基本原理&#xff0c;DP和DDP的大致过程&#xff0c;以及二者的区别&#xff0c;并分别写了一个小样作为参考。小样毕竟还是忽略了很多细节和工程实践时的一些处理方式的。实践出真知&#xff0c;今天&#xff08;简…

微服务(基础篇-007-RabbitMQ)

目录 初识MQ(1) 同步通讯&#xff08;1.1&#xff09; 异步通讯&#xff08;1.2&#xff09; MQ常见框架&#xff08;1.3&#xff09; RabbitMQ快速入门(2) RabbitMQ概述和安装&#xff08;2.1&#xff09; 常见消息模型&#xff08;2.2&#xff09; 快速入门&#xff…

YARN集群 和 MapReduce 原理及应用

YARN集群模式 本文内容需要基于 Hadoop 集群搭建完成的基础上来实现 如果没有搭建&#xff0c;请先按上一篇: <Linux 系统 CentOS7 上搭建 Hadoop HDFS集群详细步骤> 搭建&#xff1a;https://mp.weixin.qq.com/s/zPYsUexHKsdFax2XeyRdnA 配置hadoop安装目录下的 etc…

docker 部署 nali 开源 IP 地理信息归属查询软件

前言 早前用到一个小巧开源的 IP 归属地查询软件&#xff0c;官方提供了 Dockerfile&#xff0c;使用了一段时间觉得还不错&#xff0c;非常简单便捷。 部署 docker 启动 由于该项目会在首次启动自动下载 IP 数据库,所以最好通过挂载目录的方式,将数据库目录挂在到本地,避免…

代码随想录 Day24 理论基础 77. 组合

理论基础 1. 回溯是配合递归算法进行使用的&#xff0c;一般是在递归的下面。回溯的算法是一种暴力的算法&#xff0c;虽然效率并不高&#xff0c;但是常常使用。因为很多时候使用多层for&#xff08;因为层数实在是套多了&#xff09;也不能将题目解答&#xff0c;这个时候就…

HCIP【GRE VPN、MGRE VPN与PPP验证综合实验】

目录 实验要求&#xff1a; 实验拓扑图&#xff1a; 实验思路&#xff1a; 实验步骤&#xff1a; 一、配IP地址 &#xff08;1&#xff09;配置所有设备接口的IP地址&#xff1a; &#xff08;2&#xff09;配置私网与公网接口的缺省路由使得公网可通&#xff1a; 二、P…

学习日记(SSM整合流程_SpringMVC_part_two)

目录 大致流程如下 1、创建工程 2、SSM配置类结构 3、功能模块 代码部分 整体结构 Jdbc.Config MyBatisConfig ServletConfig SpringConfig SpringMvcConfig BookController BookDao Book BusinessException SystemException Cord Result BookService BookserviceImpl jd…

计算机网络 - 基础篇总结

TCP/IP 网络模型有哪几层&#xff1f; 1.应用层 为用户提供应用功能 2.传输层 负责为应用层提供网络支持 使用TCP和UDP 当传输层的数据包大小超过 MSS&#xff08;TCP 最大报文段长度&#xff09; &#xff0c;就要将数据包分块&#xff0c;这样即使中途有一个分块丢失或损坏…

Python耗时统计-可嵌套-生成Timeline-chrome://tracing/预览

Python耗时统计-可嵌套-生成Timeline-chrome://tracing/预览 一.效果二.代码 本文演示了如何用chrome://tracing查看python嵌套代码的耗时成分 一.效果 二.代码 import time import os import threading import queuedef singleeton(cls):单例instance{}def _singleton(*args,…

【opencv】教程代码 —features2D(3)Homography—分解单应性矩阵

decompose_homography.cpp 分解单应性矩阵 left01.jpg boardSize&#xff1a;9x6 squareSize:0.025 left02.jpg 相机内参 #include <iostream> // 引入输入输出流库 #include <opencv2/core.hpp> // 引入OpenCV的核心功能头文件 #include <opencv2/highgui.hp…

MATLAB 自定义中值滤波(54)

MATLAB 自定义中值滤波(54) 一、算法介绍二、算法实现1.原理2.代码一、算法介绍 中值滤波,是一种常见的点云平滑算法,改善原始点云的数据质量问题,MATLAB自带的工具似乎不太友好,这里提供自定义实现的点云中值滤波算法,具体效果如下所示: 中值滤波前: 中值滤波后:…

【Node.js】大文件上传

概述 大文件上传通常采用分片上传。如果因为某些原因上传突然中断&#xff0c;解决问题之后可以接着之前的分片上传&#xff0c;而不需要从头开始上传&#xff0c;也就是断点续传。此外还可以利用多个网络连接并行上传多个分片&#xff0c;提高上传速度。 注&#xff1a;前端不…

动手学机器学习逻辑斯谛回归+习题

逻辑斯谛函数下的线性模型 现需要用线性模型做分类问题&#xff0c;简单的阶跃函数在阈值处不可导&#xff0c;可导处导数均为0&#xff0c;性质不好 所以把0&#xff0c;1问题转化成P(y0|x)&#xff0c;P(y1|x)的问题&#xff0c;这样就把离散的分类任务变成了求概率分布的回…

ROS传感器图像转换

ros通过摄像头来获得图片&#xff0c;传感器数据类型为sensor_msgs中的Image&#xff0c;具体的数据类型组成&#xff1a; sensor_msgs/Image Documentationhttp://docs.ros.org/en/api/sensor_msgs/html/msg/Image.html但是我们一般使用opencv对图像进行处理&#xff0c;所以…

Python字符串字母大小写变换,高级Python开发技术

寻找有志同道合的小伙伴&#xff0c;互帮互助,群里还有不错的视频学习教程和PDF电子书&#xff01; ‘’’ demo ‘tHis iS a GOod boOK.’ print(demo.casefold()) print(demo.lower()) print(demo.upper()) print(demo.capitalize()) print(demo.title()) print(dem…

Python字典操作

假设我们有一个学生信息数据库&#xff0c;其中存储了每个学生的姓名、年龄、性别和成绩。我们可以使用字典来表示每个学生的信息&#xff0c;并将所有学生存储在一个字典列表中。 设计者&#xff1a;ISDF 版本&#xff1a;v1.0 日期&#xff1a;03/29/2024# 定义学生信息字典列…

如何划分训练集、测试集、验证集

训练集、测试集和验证集是在机器学习和数据科学中常用的术语&#xff0c;用于评估和验证模型的性能。它们通常用于监督学习任务中。 1. 训练集&#xff08;Training Set&#xff09;&#xff1a;训练集是用于训练机器学习模型的数据集。在训练期间&#xff0c;模型使用训练集中…

小狐狸ChatGPT付费AI创作系统V2.8.0独立版 + H5端 + 小程序前端

狐狸GPT付费体验系统的开发基于国外很火的ChatGPT&#xff0c;这是一种基于人工智能技术的问答系统&#xff0c;可以实现智能回答用户提出的问题。相比传统的问答系统&#xff0c;ChatGPT可以更加准确地理解用户的意图&#xff0c;提供更加精准的答案。同时&#xff0c;小狐狸G…

图形推理 总结

原则 1.图形相似且元素基本不变&#xff1a;此时多考虑图形的位置移动规律&#xff0c;如平移、旋转、翻转等。 2.图形相似但元素有同有异&#xff1a;这种情况下常考组合叠加-去异存同、去同存异等;元素遍历;部分传递等。 3.图形相异但较规则&#xff1a;常考对称、直曲性、…