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的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
