【C语言】--分支和循环(1)

🍿个人主页: 起名字真南
🧇个人专栏:【数据结构初阶】 【C语言】

请添加图片描述

目录

  • 前言
  • 1 if 语句
    • 1.1 if
    • 1.2 else
    • 1.3 嵌套if
    • 1.4 悬空else

前言

C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构
我们可以用if、switch实现分支结构,for、while、do while实现循环结构。

1 if 语句

1.1 if

	if(表达式){语句}

表达式成立(为真),则执行语句,表达式不成立(为假),则语句不执行。
在C语言中 0 表示假,非 0 表示真。

例子:输入一个整数判断是否为偶数

#include<stdio.h>int main()
{int num = 26;if (num % 2 == 0){printf("偶数");}return 0;
}

在这里插入图片描述

1.2 else

else语句一般是和if语句一起使用

	if(表达式){语句一}else{语句二}

上面的示例表示如果表达式成立则执行语句一,如果条件不成立则执行语句二。
一个if只对应一个else
例子:输入一个整数判断是奇数则输出奇数,不是则输出偶数。

#include<stdio.h>int main()
{int num = 0;scanf("%d", &num);if (num % 2 == 0){printf("偶数");}else{printf("奇数");}return 0;
}

if 和 else 都只能控制一条语句,如果想控制多条语句需要使用 { } 包含。

1.3 嵌套if

在 if else 语句中,else 可以与 另一个if 语句连用,构成多重判断。
例子:要求输入一个整数判断是整数,负数,还是 0.

#include<stdio.h>int main()
{int num = 0;scanf("%d", &num);if (num >  0){printf("正数");}else if (num < 0){printf("负数");}else{printf("0");}return 0;
}

在这里插入图片描述
被红色包围在内的代码就是嵌套在 else 子句中的,构成了嵌套 if 语句

1.4 悬空else

如果有多个 if else 语句,如果我们分不清那两个是互相匹配的可以记住这句话:else 总是和最近的 if 匹配

例子:判断输出内容

int main()
{int a = 0;int b = 2;if (a == 1)if (b == 2)printf("hehe\n");elseprintf("haha\n");return 0;
}

如果第一次接触代码可能会认为 b==2 成立所以输出hehe。或者因为 a不等于1 则输出 haha。但是结果是什么都没有输出。
这就是悬空else问题:>如果有多个 if 和 else ,可以记住这样一条规则:else 总是跟最近的 if 匹配。
上面的排版问题可能会认为else 和第一个对齐所以和第一个else匹配,让我们想到如果第一个if的条件不成立就会执行else然后执行haha这条语句。但实际上else是和第二个if匹配的,这样后面的if else语句都是嵌套在第一个if 语句中的,因为第一个语句不成立所以什么都不执行。
将上面的代码进行修改后会更容易理解

int main()
{int a = 0;int b = 2;if (a == 1){if (b == 2)printf("hehe\n");elseprintf("haha\n");}return 0;
}

如果我们希望else和第一个if匹配也可以这样改

int main()
{int a = 0;int b = 2;if (a == 1){if (b == 2)printf("hehe\n");}else{printf("haha\n");}return 0;
}

只要加上了大括号就可以是代码的逻辑变得更加清晰,增加代码的可读性,所以为了培养成一个好习惯建议大家平常多注意添加大括号。

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

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

相关文章

vue2实例实现一个初步的vuex

vue2实例实现一个初步的vuex 实现源码&#xff1a;vue2-review 1.App.vue 2.store目录下的index.js 3.效果 微信公众号&#xff1a;刺头拾年

MATLAB的.m文件与Python的.py文件:比较与互参

simulink MATLAB的.m文件与Python的.py文件&#xff1a;比较与互参相似之处**1. 基本结构****2. 执行逻辑****3. 可读性和维护性** 差异性**1. 语法特性****2. 性能和应用****3. 开发环境** 互相学习的可能性结论 MATLAB的.m文件与Python的.py文件&#xff1a;比较与互参 在编…

扩展阅读:什么是中断

如果用一句话概括操作系统的原理,那就是:整个操作系统就是一个中断驱动的死循环,用最简单的代码解释如下: while(true){doNothing(); } 其他所有事情都是由操作系统提前注册的中断机制和其对应的中断处理函数完成的。我们点击一下鼠标,敲击一下键盘,执行一个程序,…

重生之我要学后端100--计算机网络部分概念(持续更新)

TCP/IP、DNS、负载均衡器等等 前言一、TCP/IP&#xff08;传输控制协议/互联网协议&#xff09;二、DNS&#xff08;域名系统&#xff09;三、负载均衡器其他网络概念 前言 了解网络基础知识对于后端开发者至关重要&#xff0c;因为这些知识有助于理解应用程序是如何在更广阔的…

中英双语介绍美国的州:麻省,马塞诸塞州(Massachusetts)

中文版 马萨诸塞州&#xff08;Massachusetts&#xff09;位于美国东北部的新英格兰地区&#xff0c;是美国历史最悠久、文化最丰富的州之一。以下是对马萨诸塞州各方面的详细介绍&#xff1a; 人口 截至2020年&#xff0c;美国人口普查数据显示&#xff0c;马萨诸塞州的人口…

C++ 之运算符

作用&#xff1a;用于执行代码的运算 主要的运算符类型&#xff1a; 运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋给变量比较运算符用于表达式的比较&#xff0c;并返回一个真值或假植逻辑运算符用于根据表达式的值返回真值或假植 1 算术运算符 …

Spring MVC中的DispatcherServlet、HandlerMapping和ViewResolver的作用

在Spring MVC框架中&#xff0c;DispatcherServlet、HandlerMapping和ViewResolver是核心组件&#xff0c;它们各自承担着不同的角色和任务&#xff1a; 1.DispatcherServlet&#xff1a;它是Spring MVC生命周期中的前端控制器&#xff0c;负责接收HTTP请求并将它们分发给相应的…

5.x86游戏实战-CE定位基地址

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;4.x86游戏实战-人物状态标志位 上一个内容通过CE未知的初始值、未变动的数值、…

机器学习SVR 随机森林 RBF神经网络做回归预测的MATLAB代码

SVR 参考这篇文章 Libsvm使用笔记【matlab】 close all; clc clear %% 下载数据 load(p_train.mat); load(p_test.mat); load(t_train.mat); load(t_test.mat); %% 数据归一化 %输入样本归一化 [pn_train,ps1] mapminmax(p_train); pn_train pn_train; pn_test mapminma…

设置用户访问hdfs

如果hadoop没有启Kerberos或者从Kerberos获取的用户为null&#xff0c;那么获取HADOOP_USER_NAME环境变量&#xff0c;并将它的值作为Hadoop执行用户。如果我们没有设置HADOOP_USER_NAME环境变量&#xff0c;那么程序将调用whoami来获取当前用户&#xff0c;并用groups来获取用…

JVM相关总结

JVM的些许问题 1.JVM内存区域划分 2.JVM类加载过程 3.JVM的垃圾回收机制 1.JVM的内存区域划分 一个运行起来的Java进程就是一个JVM虚拟机,需要从操作系统申请一大片内存,就会把内存划分成几个区域,每个区域都有不同的作用 常见的面试题 2.JVM类加载过程 熟练背诵 ! ! !…

printf内幕----编程内幕(1)

曾几何时&#xff0c;您有没有在夜深人静的时候想过一个问题&#xff0c;printf内部究竟做了什么&#xff1f;为何可以输出到屏幕上显示出来&#xff1f; 先看看这段熟悉的代码&#xff1a; // // Created by xi.chen on 2017/9/2. // Copyright © 2017 All rights rese…

WordPress中文网址导航栏主题风格模版HaoWa

模板介绍 WordPress响应式网站中文网址导航栏主题风格模版HaoWa1.3.1源码 HaoWA主题风格除行为主体导航栏目录外&#xff0c;对主题风格需要的小控制模块都开展了敞开式的HTML在线编辑器方式的作用配备&#xff0c;另外预埋出默认设置的编码构造&#xff0c;便捷大伙儿在目前…

入门JavaWeb之 JDBC 连接数据库

JDBC&#xff1a;Java Database Connectivity&#xff0c;Java 数据库连接 需要 jar 包支持&#xff1a; java.sql javax.sql mysql-connector-java&#xff08;连接驱动&#xff0c;必须导入&#xff09; 在 MySQL 先建个 jdbc 数据库后 USE jdbc; 执行后再 CREATE TABLE…

15- 22题聚合函数 - 高频 SQL 50 题基础版

目录 1. 相关知识点2. 例子2.15 - 有趣的电影2.16 - 平均售价2.17 - 项目员工 I2.18 - 各赛事的用户注册率2.19 - 查询结果的质量和占比2.20 - 每月交易 I2.21 - 即时食物配送 II2.22 - 游戏玩法分析 IV 1. 相关知识点 函数 函数含义order by排序group by分组between 小值 an…

Chrome备份数据

Chrome备份数据 1、 导出谷歌浏览器里的历史记录 参考&#xff1a;https://blog.csdn.net/qq_32824605/article/details/127504219 在资源管理器中找到History文件&#xff0c;文件路径&#xff1a; C:\Users\你的电脑用户名\AppData\Local\Google\Chrome\User Data\Default …

堆排序思想分享

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

丢失的数字(MissNumber)

丢失的数字 给定一个包含 [0, n] 中 n 个数的数组 nums &#xff0c;找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1&#xff1a; 输入&#xff1a;nums [3,0,1] 输出&#xff1a;2 解释&#xff1a;n 3&#xff0c;因为有 3 个数字&#xff0c;所以所有的数字都…

五、Pentium 微处理器保护模式存储管理,《微机系统》第一版,赵宏伟

一、分段存储管理 Pentium支持分段存储管理、分页存储管理和段页式存储管理。 1.1 分段存储管理的基本思想 一个程序由多个模块组成。 每一个模块都是一个特定功能的独立的程序段。 段式管理&#xff1a;把主存按段分配的存储管理方式。 程序模块→段→段描述符→段描述符…

【设计】在Java后端开发时使用JSONObject完全替代JAVABean(DTO,VO)是否可行?

其实这样做你是得不偿失&#xff0c;不过也要看什么项目&#xff0c;如果你的项目只在只需要实现功能&#xff0c;不在乎健壮性&#xff0c;可持续性那就完全可以。因为我现在公司老项目所有用的POJO的地方都是用JSONObject。代码可读性几乎为0。你用了可能丧失以下功能&#x…