Day-15【选择与循环】选择结构-if语句
目录
一、if语句
(1)单分支选择结构
(2)双分支选择结构
(3)多分支选择结构
(4)if-else的嵌套使用
二、开关分支语句(switch)
(1)一般形式
(2)说明:
一、if语句
(1)单分支选择结构
格式:
if(条件) -> 任意格式:非0 -> 为真 0->为假
{语句块} -> 注意当语句块只有一条语句时,可以省略不写{}
规则:如果条件为真,则执行语句块,否则跳过
例如:
if(x>y)
printf("%d",x);
说明:
① if后面的表达式任意类型,语句可以是复合语句
② if下只有一条语句时,可以省略大括号不写
③ if(x)等价于if(x!=0)
if(!x)等价于(x==0)
例题:
求一个数的绝对值
#include <stdio.h>
main()
{int x,y;printf("enter an integer:");scanf("%d",&x);y=x; //将x的值赋给y;if(y<0) //判断y是否小于0y=-y; //若小于0就去相反数printf("\ninteger:%d-->absolute value:%d\n",x,y);
}
运行:
enter an integer: -12
integer: -12 -->absolute value: 12
(2)双分支选择结构
格式:
if (expression条件)
{语句块1; //只有一句话,大括号可以省
}
else
{语句块2:
}
规则:如果条件为真,则执行语句块1,否则执行语句块2;
if语句例:
#include <stdio.h>
main()
{int a,b;printf("输入a:");scanf("%d",&a); //输入a的值printf("输入b:");scanf("%d",&b); //输入b的值if(a==b) //判断a是否等于bprintf("a=b\n"); //真->输入a==belseprintf("a!=b\n"); //假->输出a!=b
}
(3)多分支选择结构
格式:
if (条件1){语句块1}
else if(条件2){语句块2}
else if(条件3){语句块3}
else 语句4
规则:如果条件1成立,执行语句块1.条件2 成立,执行语句2条件3成立,执行语句3都不成立,执行语句4
例:
if(salary>1000)//价格index=0.4;//折扣
else if(salary>800)index=0.3;
else if(salary>600)index=0.2;
else if(salary>400)index=0.1;
elseindex=0;
成绩在: 80-100 A70-79 B60-69 C0-59 D
要求:输入一个同学的成绩,输出它的级别
#include <stdio.h>
main()
{int grade;scanf("%d",&grade);
if(grade>100||grade<0)
printf("非法数值")//限制输入数字的范围if(grade>=80&&grade<=100)printf("A");else if(grade>=70)printf("B")else if(grade>=60)printf("C");else printf("D");
}
键盘上的字符种类分为:
控制字符:__<32
数字:'0'-'9'
大写字母:'A'-'Z'
小写字母:'a'-'z'判断输入字符的种类:
#include <stdio.h>
main()
{char c;printf("输入一个:");ch=getchar();if(ch<32)printf("是控制字符\n");else if(ch>'0'&&c<='9')printf("是数字字符\n");else if(ch>='A'&&c<='Z')printf("是大写字符\n");else if(ch>='a'&&c<='z')printf("是小写字符\n);else printf("其他");}
(4)if-else的嵌套使用
if-else配对原则:缺省{}时,else总是和它上面离最近的未配对的if相配
if(...)if(...)if(...)else...else...
else...
输入两数并判断其大小关系:
#include <stdio.h>
main()
{int x,y;printf("输入x,y:");scanf("%d,%d",&x,&y);if(x!=y)if(x>y)printf("X>Y\n");elseprintf("X<Y\n");elseprintf("X==Y\n");
}
二、开关分支语句(switch)
仍然是一个多分支选择结构
(1)一般形式
switch(表达式) ->表达式不能为小数 表达式中和谁相等,就执行谁后面的语句
{
case e1:语句1;[break;]
case e2:语句2;[break;] //e都为常量,不能变化。是固定的值,也不能是小数
case e3:语句3;[break;] //e就是常量表达式
case e4:语句4;[break;]
case e5:语句5;[break;]
[default:语句;[break;]] 默认,除此之外,都执行它。放到哪里没关系,都可以执行
}
(2)说明:
(1)switch后的表达式以及case后的表达式均不能是实型,可以是整型或字符型等,case后的表达式必须为常量表达式,且值必须互不相同
(2)break是跳出整个复合语句
(3)case后可包含多个可执行语句,且不必加{}
(4)switch可嵌套
(5)default的功能是在其它case后找不到对应常量,则执行default后面语句
(不必再最后一句)
例:
switch(score)
{case 5:printf("very good");case 4:printf("good");case 3:printf("pass");case 2:printf("fail");default: printf("data error");
}
此时:
运行结果:score为5时,输出:very good good pass fail data error
输入一个月份,输出相对应的季节:
#include <stdio.h>
void main()
{int month;scanf("%d",&month);switch(month){case 1:printf("春天");break;case 2:printf("春天");break;case 3:printf("春天");break;case 4:printf("夏天");case 5:printf("夏天");case 6:printf("夏天");case 7:printf("秋天");case 8:printf("秋天");case 9:printf("秋天");case 10:printf("冬天");case 11:printf("冬天");case 12:printf("冬天");default:printf("error"); 这里加不加break都可以}}
如果month是5,则运行结果就是匹配到5后面的结果都输出
执行下面所有的可执行语句
如果想只输出一个对应的结果,需要在固定的输出后面加break,表示跳出循环合并:case 1:case 2:case 3:printf("春天");break;
当输入1时,则开关进入1中,找不到接着继续往下找,知道case3输出春天并跳出。实现了合并功能
输入123都是春天
!!!一定注意:有break和没break的规则不同
读个程序:
void main()
{int x=1,y=0,a=0,b=0;switch(x) //1{switch(y) //0{case 0:a++;break; //匹配此条,执行a++ 此时a=1.跳出此层case 1:b++;break;} 注意:这里没有break则接着后面的语句执行:case 2:a++;b++;break; //执行a++,b++ a=2,b=1碰到break跳出case 3:a++;b++;}printf("\na=%d,b=%d",a,b); 最终输出a=2,b=1
}运行结果:a=2,b=1
总结:
1、☆= ☆!=0
!☆= ☆==0
2、if-else配对原则:缺省{}时,else总是和它上面离他最近的未配对的if相配对
3、(1)switch后面括号中可以是常量或变量表达式,但不能是实型数据
(2)case后面是常量表达式,且不能是实型,且不能有重复
(3)break、default的功能需要注意
4、注意格式书写
switch()
{ case__:____;
__:
}
相关文章:
Day-15【选择与循环】选择结构-if语句
目录 一、if语句 (1)单分支选择结构 (2)双分支选择结构 (3)多分支选择结构 (4)if-else的嵌套使用 二、开关分支语句(switch) (1)…...
定时器时钟来源可以从输入捕获引脚输入
外部时钟模式 和 输入捕获。 核心结论: 外部时钟模式的输入引脚 ≠ 输入捕获功能的输入引脚(通常情况): 外部时钟模式有专用的输入引脚 (ETR) 和可选的替代输入通道(如TI1, TI2)。 输入捕获功能有自己的专…...

SPL 轻量级多源混算实践 4 - 查询 MongoDB
除了以上常见数据源,还有 NoSQL、MQ 等数据源,其中以 MongoDB 最为常用。我们用 SPL 连接 MongoDB 做计算。 导入 MongoDB 数据。 外部库 SPL 支持的多种数据源大概分两类,一类是像 RDB 有 JDBC 直接使用,或者文件等直接读取&a…...
星敏感器:卫星姿态测量的“星空导航仪”
星敏感器:卫星姿态测量的“星空导航仪” 1. 引言 在卫星、航天器和深空探测器的姿态控制系统中,星敏感器(Star Tracker) 是最精确的姿态测量设备之一。它通过识别恒星的位置,计算出航天器在惯性空间中的三轴姿态&…...
Cat.1与Cat.4区别及应用场景
Cat.1 和 Cat.4 都是 LTE(4G)网络中的终端设备类别,主要区别在于 数据传输速率、复杂度和功耗,这直接影响了它们的应用场景和成本。 以下是它们的主要区别: 数据传输速率 (核心区别): Cat.1 (Category 1)&…...
大宽带怎么做
我有10个G的宽带资源,怎样运行P2P才能将收益巨大化,主要有以下几种方式: 1.多设备汇聚模式:使用多台支持千兆网络的服务器或专用PCDN设备(如N1盒子),将10条宽带分别接入不同设备,通过…...

Maestro CLI云端测试以及github cl,bitrise原生cl的测试流程
昨天我们了解了maestro测试框架以及maestro studio工具以及创建我们的第一个flow,然后通过例子在maestro cli云端进行测试请求并且成功,今天我们就在我们自己的app上简单的进行三种测试流程,maestro cli云端测试,github cl集成测试…...
[内核开发手册] ARM汇编指令速查表
ARM汇编指令速查表 指令描述语法示例push将一个或多个寄存器的值压入栈中,更新栈指针寄存器。push {r1, r2, r3}add执行加法并将结果存储到目标操作数中。add r1, r2, #5push.w将指定的寄存器的值压入栈中,并将栈指针向下调整4个字节。push.w {r4, r5, …...

25年宁德时代新能源科技SHL 测评语言理解数字推理Verify题库
宁德时代新能源科技的SHL测评中,语言理解部分主要考察阅读理解、逻辑填空和语句排序等题型,要求应聘者在17分钟内完成30题。阅读理解需要快速捕捉文章主旨和理解细节信息;逻辑填空则要根据语句逻辑填入最合适的词汇;语句排序是将打…...

AutoGenTestCase - 借助AI大模型生成测试用例
想象一下,你正在为一个复杂的支付系统编写测试用例,需求文档堆积如山,边缘场景层出不穷,手动编写让你焦头烂额。现在,有了AutoGenTestCase,这个AI驱动的“测试用例生成机”可以从需求文档中自动生成数百个测…...
区块链技术赋能供应链金融:重塑信任与效率
在当今全球经济一体化的背景下,供应链金融作为连接产业与金融的桥梁,正面临着前所未有的机遇与挑战。然而,传统的供应链金融模式存在着诸多痛点,如信息不对称、信任缺失、操作效率低下等。随着区块链技术的兴起,这些问…...

vue+cesium示例:3Dtiles三维模型高度调整(附源码下载)
接到一位知识星友的邀请,实现他需要3Dtiles三维模型的简单高度调整需求,适合学习Cesium与前端框架结合开发3D可视化项目。 demo源码运行环境以及配置 运行环境:依赖Node安装环境,demo本地Node版本:推荐v18。 运行工具:…...

线程池RejectedExecutionException异常
文章目录 1、报错2、定位3、修复4、线程池使用的一点思考 1、报错 检索项目日志时,发现一个异常堆栈信息,核心报错: java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.CompletableFuture$AsyncSupply480a10c7…...
lanqiaoOJ 1508:N皇后问题 ← dfs
【题目来源】 https://www.lanqiao.cn/problems/1508/learning/ 【题目描述】 在 NN 的方格棋盘放置了 N 个皇后,使得它们不相互攻击(即任意 2 个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成 45角的斜线上。你的任务是…...

当 “欧洲版 Cursor” 遇上安全危机
在 AI 编程助手蓬勃发展的当下,安全问题正成为行业不容忽视的隐忧。近期,AI 编程助手公司 Replit 与号称 “欧洲版 Cursor” 的 Lovable 之间,因安全漏洞问题掀起了一场风波,引发了业界的广泛关注。 Replit 的员工 Matt Palmer…...
[蓝桥杯]生物芯片
生物芯片 题目描述 X 博士正在研究一种生物芯片,其逻辑密集度、容量都远远高于普通的半导体芯片。 博士在芯片中设计了 nn 个微型光源,每个光源操作一次就会改变其状态,即:点亮转为关闭,或关闭转为点亮。 这些光源…...
Spring Boot使用Redis实现分布式锁
在分布式系统中,分布式锁是一种解决并发问题的常用技术。Redis由于其高性能和丰富的特性,成为实现分布式锁的理想选择。本文将详细介绍如何在Spring Boot应用中使用Redis实现分布式锁。 一、环境准备 安装Redis:确保已经安装并运行Redis服务…...

【如何在IntelliJ IDEA中新建Spring Boot项目(基于JDK 21 + Maven)】
AA. 我的开发环境配置与核心工具链解析 一、开发环境全览 C:\Users\Again>java -version java version "21.0.1" 2023-10-17 LTS Java(TM) SE Runtime Environment (build 21.0.112-LTS-29) Java HotSpot(TM) 64-Bit Server VM (build 21.0.112-LTS-29, mixed m…...

(Python网络爬虫);抓取B站404页面小漫画
目录 一. 分析网页 二. 准备工作 三. 实现爬虫 1. 抓取工作 2. 分析工作 3. 拼接主函数&运行结果 四. 完整代码清单 1.多线程版本spider.py: 2.异步版本async_spider.py: 经常逛B站的同志们可能知道,B站的404页面做得别具匠心&…...

【氮化镓】GaN HMETs器件物理失效分析进展
2021 年 5 月,南京大学的蔡晓龙等人在《Journal of Semiconductors》期刊发表了题为《Recent progress of physical failure analysis of GaN HEMTs》的文章,基于多种物理表征技术及大量研究成果,对 GaN HEMTs 的常见失效机制进行了系统分析。文中先介绍失效分析流程,包括使…...
vb.net oledb-Access 数据库本身不支持命名参数,赋值必须和参数顺序一致才行
参数顺序问题:OleDb 通常依赖参数添加的顺序而非名称,为什么顺序要一样? OleDbParameter 顺序依赖性的原因 OleDb 数据提供程序依赖参数添加顺序而非名称,这是由 OLE DB 规范和 Access 数据库的工作机制共同决定的。理解这个问题需要从数据库底层通信…...

Abaqus连接器弹片正向力分析:
.学习重点: • 外部幾何匯入。 • 建立解析剛性面。 • 利用Partition與局部撒點來提高網格品質。 • 材料塑性行為(材料非線性)。 • 考慮大變形(幾何非線性)。 • 接觸(邊界非線性)。 • 平移組裝。 • 設定輸出參數。 • 討論Shear Locking & Hourglassing效應。 1) 設…...

鸿蒙生态再添翼:身份证银行卡识别引领智能识别技术新篇章
随着信创国产化战略的深入推进和鸿蒙操作系统(HarmonyOS Next)的迅速崛起,市场对兼容国产软件生态的需求日益增长。在这一背景下,中安身份证识别和银行卡识别技术应运而生,为鸿蒙生态的发展注入了新的活力。 移动端身份…...
mybatis打印完整的SQL,p6spy
介绍打印完成的SQL,会降低性能,不要在生产环境使用,我只是在本地,自己的代码中设置,不提交。主要是为了方便,在控制台看见SQL的时候,不用去拼接参数,可以直接复制出来执行。 配置方…...

NLP学习路线图(十九):GloVe
自然语言处理(NLP)的核心挑战在于让机器理解人类语言的丰富含义。词向量(Word Embeddings)技术通过将词语映射到高维实数空间,将离散的符号转化为连续的向量,为NLP任务奠定了坚实基础。在众多词向量模型中&…...

如何使用DAXStudio将PowerBI与Excel连接
如何使用DAXStudio将PowerBI与Excel连接 之前分享过一篇自动化文章:PowerBI链接EXCEL实现自动化报表,使用一个EXCEL宏工作薄将PowerBI与EXCEL连接起来,今天分享另一个方法:使用DAX Studio将PowerBI与EXCEL连接。 下面是使用DAX S…...

软考 系统架构设计师系列知识点之杂项集萃(79)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(78) 第141题 软件测试一般分为两个大类:动态测试和静态测试。前者通过运行程序发现错误,包括()等方法;后者采用人工和计算机…...
神经网络基础:从单个神经元到多层网络(superior哥AI系列第3期)
🧠 神经网络基础:从单个神经元到多层网络(superior哥AI系列第3期) 哈喽!各位AI探索者们!👋 上期我们把数学"怪兽"给驯服了,是不是感觉还挺轻松的?今天我们要进…...

UVa12298 Super Joker II
UVa12298 Super Joker II 题目链接题意输入格式输出格式 分析AC 代码 题目链接 UVa12298 Super Joker II 题意 有一副超级扑克,包含无数张牌。对于每个正合数p,恰好有4张牌:黑桃p,红桃p,梅花p和方块p(分别…...
面向对象系统中对象交互的架构设计哲学
更多精彩请访问:通义灵码2.5——基于编程智能体开发Wiki多功能搜索引擎-CSDN博客 一、对象交互的本质与设计矛盾 在面向对象范式(OOP)中,对象间的交互实质上是软件组件解耦与功能复用的动态平衡过程。每个对象作为独立的计算单元,既需要维护…...