C++研发笔记13——C语言程序设计初阶学习笔记11
从今天开始我们开始第三模块《分支语句和循环语句》的学习,在本模块中我们将会涉及到以下9个内容:什么是语句、分支语句——if语言、分支语句——switch语句、循环语句——while循环、循环语句——for循环、循环语句——do while循环、折半查找算法、猜数字游戏、goto语句。
第三部分 分支语句和循环语句
一、什么是语句
/*
什么是语句?C语言中由一个分号 ; 隔开的就是一条语句。
比如:printf("hehe");1 + 2;
*//*
C语言中的语句主要分为五类
1、表达式语句
2、函数调用语句
3、控制语句
4、复合语句
5、空语句而我们在第三部分《分支语句和循环语句》中学习到的都是控制语句。控制语句用于控制程序的执行流程,以实现程序的各种结构方式。
C语言是一门结构化的程序设计语言。支持三种结构——顺序结构、选择结构、循环结构
控制语句由特定的语句定义符组成,C语言有九种控制语句,又可细分以下三类:
1、条件判断语句(分支语句):if语句、switch语句
2、循环执行语句:do while语句、for语句、while语句
3、转向语句:break语句、goto语句、continue语句、return语句接下来我们将详细的学习这九种语句。
*/
二、分支语句——if语句
(一)、if语句的语法结构
/*
if 语句的语法结构
1、标准结构:if(表达式)语句;
2、单分支选择结构:if(表达式)语句1;else语句2;
3、多分支选择结构: if(表达式1)语句1;else if(表达式2)语句2;else语句3;
当表达式的结果为真时,则执行对应的语句。
在C语言中,0表示假,非0表示真。
另外if语句也支持嵌套。
*/// 下面我用一个实例——“年龄的判断”,通过不断完善其功能展现if语句的语法结构
// 第一步:当输入的年龄小于18时,显示“未成年”
#include <stdio.h>int main()
{int age = 0;printf("请输入一个年龄:");scanf("%d", &age);if (age < 18)printf("未成年\n");return 0;
}// 上面这段代码,展现了一个if语句的标准结构
// 第二步:当输入的年龄小于18时,显示“未成年”;否则显示“成年”
#include <stdio.h>int main()
{int age = 0;printf("请输入一个年龄:");scanf("%d", &age);if (age < 18)printf("未成年\n");elseprintf("成年\n");return 0;
}// 这是一个标准的单分支选择语句语法结构
// 第三步:将成年继续细分成四个阶段#include <stdio.h>
int main()
{int age = 0;printf("请输入一个年龄:");scanf("%d", &age);if (age < 18)printf("未成年\n");else if (age >= 18 && age < 30)printf("青年\n");else if (age >= 30 && age < 50)printf("中年\n");else if (age >= 50 && age < 80)printf("老年\n");elseprintf("老寿星\n");return 0;
}// 这是一个标准的多分支选择语句语法结构// 上面的代码的执行语句都是单句话,如果要执行多条语句,则应该使用代码块
// 比如下面我用一段代码来展现C语言中if语句的嵌套与执行多条语句#include<stdio.h>int main()
{int choice1 = 0;int choice2 = 0;printf("请选择你是否准备认真学习(1代表认真学习,0代表不学习) >> ");scanf("%d", &choice1);if (1 == choice1){printf("你选择了一条正确的道路.\n");printf("你将获得一个好offer!\n");}else if (0 == choice1){printf("请选择你家是否有百亿家产 (1代表有,0代表没有) >> ");scanf("%d", &choice2);if (1 == choice2)printf("呵呵\n");elseprintf("那你只能卖红薯了\n");}elseprintf("输入错误,请输入0或1\n");return 0;
}
(二)、悬空else以及if书写的代码习惯
// 我们来看下面这段代码
#include <stdio.h>
int main()
{int a = 0;int b = 2;if (a == 1)if (b == 2)printf("hehe\n");elseprintf("haha\n");return 0;
}// 这就是悬空else ,是一种非常不好的代码习惯/*悬空else 是指在有多个 if 语句嵌套的情况下,else 语句与哪个 if 语句匹配不明确的情况。这种情况通常发生在没有使用大括号 {} 明确指定代码块的范围时。悬空 else 会导致代码的逻辑难以理解,并且可能产生意料之外的结果。
*/// 我们应当适当的使用{ }使代码的逻辑更清晰
// else 实际上是与最近的if进行匹配的,所以上面的代码等价于下面这样
#include <stdio.h>
int main()
{int a = 0;int b = 2;if (a == 1){if (b == 2){printf("hehe\n");}else{printf("haha\n");}}return 0;
}// 接下来我们比对几个代码来观察下养成良好代码习惯的重要性// 代码一if (condition)
{return x;
}
return y;// 代码二
if (condition)
{return x;
}
else
{return y;
}// 代码一和代码二的实际含义以及效果是一模一样的
// 但是代码二的形式明显优于代码一,代码一往往会让人产生误解// 代码三
int num = 5;
if (num == 5)
{printf("hehe\n");
}// 代码四
int num = 5;
if (5 == num)
{printf("hehe\n");
}// 代码三和代码四的实际含义以及效果是一模一样的
// 但是我们建议当比较一个变量和一个常量是否相等的时候
// 把常量放在等式的左边
// 这样增强了代码的可读性和一致性,同时也避免了将“==”写成“=”而造成的错误
(三)、练习
1、判断一个数是否为奇数
#include<stdio.h>int main()
{int num = 0;printf("请输入一个整数:");scanf("%d",&num);if (1 == num % 2)printf("奇数");elseprintf("不是奇数");return 0;
}
2、输出1-100之间的奇数
#include<stdio.h>int main()
{int i = 1;while (i <= 100){if (1 == i % 2)printf("%d ", i);i++;}return 0;
}
另外一种写法:
#include<stdio.h>int main()
{int i = 1;while (i <= 100){printf("%d ", i);i += 2;}return 0;
}
// 这个代码的效率明显高于上面的代码,因为其省略了判断的步骤和循环的次数
以上便是本篇笔记的全部内容,我们对第三部分的学习进行了一个开篇,介绍了什么是语句以及对分支语句——if语句进行了详细的讲解。在下一篇笔记中,我们将继续第三部分的学习。
相关文章:
C++研发笔记13——C语言程序设计初阶学习笔记11
从今天开始我们开始第三模块《分支语句和循环语句》的学习,在本模块中我们将会涉及到以下9个内容:什么是语句、分支语句——if语言、分支语句——switch语句、循环语句——while循环、循环语句——for循环、循环语句——do while循环、折半查找算法、猜数…...
html5拖放
1、什么是拖放(Drag 和 Drop) 拖放,字面意思就是拖动,放置 在编程里面也是如此,拖放是一种常见的特性,即抓取对象以后拖到另一个位置。 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。…...
卫导调零天线功率倒置算法原理及MATLAB仿真
卫导调零天线功率倒置算法原理及MATLAB仿真 文章目录 前言一、调零天线简介二、功率倒置自适应算法三、MATLAB仿真四、MATLAB代码总结 前言 \;\;\;\;\; 自适应调零抗干扰技术可以很大程度改善导航抗干扰性能,也是目前导航抗干扰技术中不可或缺的,其研究意…...
【划分型 DP】力扣139. 单词拆分
给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s “leetcode”, wordDic…...
Python学习从0到1 day26 第三阶段 Spark ④ 数据输出
半山腰太挤了,你该去山顶看看 —— 24.11.10 一、输出为python对象 1.collect算子 功能: 将RDD各个分区内的数据,统一收集到Driver中,形成一个List对象 语法: rdd.collect() 返回值是一个list列表 示例: from …...
AWTK fscript 中的 JSON 扩展函数
fscript 是 AWTK 内置的脚本引擎,开发者可以在 UI XML 文件中直接嵌入 fscript 脚本,提高开发效率。本文介绍一下 fscript 中的 ** JSON 扩展函数 ** 1.json_load 加载 json 数据。 原型 json_load(str) > object json_load(binary) > object js…...
动态规划 —— dp 问题-买卖股票的最佳时机III
1. 买卖股票的最佳时机III 题目链接: 123. 买卖股票的最佳时机 III - 力扣(LeetCode)https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/description/ 2. 题目解析 3. 算法原理 状态表示:以某一个位置为结尾或者…...
“绽放艺术风采、激发强国力量” 海南省第十一届中小学生艺术展演活动圆满开展
2024年11月1日,由省教育厅主办、琼台师范学院承办的海南省第十一届中小学生艺术展演省级展演活动在海口正式拉开帷幕。来自全省各市县、省属学校等共计4000余名师生参加本届中小学生艺术展演现场展演活动。 本届展演活动以“绽放艺术风采、激发强国力量”为主题&…...
Linux之文件和目录类命令详解(2)
Linux之文件和目录类命令详解(2) 1、mv-移动文件或重命名2、find-查找文件和目录3、locate-快速查找文件4、du-显示目录或文件的磁盘使用情况5、df-显示文件系统的磁盘空间使用情况6、chmod-更改文件或目录的权限7、chown-更改文件或目录的拥有者8、tree…...
NVR管理平台EasyNVR多品牌NVR管理工具/设备摄像头开启ONVIF的方法
NVR小程序接入平台EasyNVR作为一款功能强大的安防视频监控平台,以其出色的兼容性和灵活性,在智慧校园、智慧工厂、智慧水利等多个场景中得到了广泛应用。本文将重点介绍如何为大华摄像头开启ONVIF协议,以便与EasyNVR进行无缝对接。 大华大部分…...
Pr 视频过渡:沉浸式视频
效果面板/视频过渡/沉浸式视频 Video Transitions/Immersive Video Adobe Premiere Pro 的视频过渡效果中,沉浸式视频 Immersive Video效果组主要用于 VR 视频剪辑之间的过渡。 自动 VR 属性 Auto VR Properties是所有 VR 视频过渡效果的通用选项。 默认勾选&#x…...
SwiftUI开发教程系列 - 第1章:简介与环境配置
1.1 SwiftUI简介 SwiftUI 是 Apple 于 2019 年推出的声明式用户界面框架,旨在简化 iOS、macOS、watchOS 和 tvOS 应用的 UI 开发。与 UIKit 的命令式编程方式不同,SwiftUI 提供了一种声明式语法,让开发者可以以更加直观、简洁的方式构建 UI。…...
gitlab ci/cd搭建及使用笔记
记录下使用gitlab的ci/cd的devops构建过程中,一些易忘点或者踩坑点: 官方文档中英文(建议英文) https://docs.gitlab.com/ee/ci/yaml/artifacts_reports.html https://gitlab.cn/docs/jh/ci/pipelines/schedules.html为什么创建了…...
Xcode 16 中 Swift Testing 的参数化(Parameterized)机制趣谈
概述 我们之前曾在 《用接地气的例子趣谈 WWDC 24 全新的 Swift Testing 入门》系列博文以及《WWDC24(Xcode 16)中全新的 Swift Testing 使用进阶》博文中较为系统地介绍了今年 WWDC 24 中全新的 Swift Testing 测试系统。 不过 Swift Testing 的本领远…...
Python自动化运维DevSecOps与安全自动化
Python自动化运维DevSecOps与安全自动化 目录 🛡️ DevSecOps概念与实践🔍 自动化安全扫描与漏洞修复🧰 基于Python的安全审计与合规性检查🐳 云平台与容器安全:基于Python的容器扫描工具⚠️ 自定义安全检测与漏洞修…...
2024下半年系统架构师考试【回忆版】
2024年11月10日,系统架构师考试如期举行,屡战屡败的参试倒是把北京的学校转了好几所。 本次考试时间 考试科目考试时间综合知识、案例分析8:30 - 12:30论文14:30 - 16:30 综合知识 1、1-1000以内包含5的数字个数 2、 案例分析 1、RESTful 对于前后…...
UE5.4 PCG 自定义PCG蓝图节点
ExecuteWithContext: PointLoopBody: 效果:点密度值与缩放成正比...
迁移学习相关基础
迁移学习 目标 将某个领域或任务上学习到的知识或模式应用到不同但相关的领域或问题中。 主要思想 从相关领域中迁移标注数据或者知识结构、完成或改进目标领域或任务的学习效果。 概述 Target data:和你的任务有直接关系的数据,但数据量少ÿ…...
华为云计算HCIE-Cloud Computing V3.0试验考试北京考场经验分享
北京试验考场 北京考场位置 1.试验考场地址 北京市海淀区北清路156号中关村环保科技示范园区M地块Q21楼 考试场选择北京,就是上面这个地址,在预约考试的时候会显示地址,另外在临近考试的时候也会给你发邮件,邮件内会提示你考试…...
数据分析——学习框架
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
