Day-15【选择与循环】选择结构-if语句

news2025/6/6 5:28:14

目录

一、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是否小于0
    y=-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是否等于b
    printf("a=b\n");    //真->输入a==b
  else
    printf("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;
else
  index=0;
成绩在: 80-100  A
        70-79  B
        60-69  C
        0-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");
    else
      printf("X<Y\n");
  else
    printf("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__:____;

__:

}

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

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

相关文章

SPL 轻量级多源混算实践 4 - 查询 MongoDB

除了以上常见数据源&#xff0c;还有 NoSQL、MQ 等数据源&#xff0c;其中以 MongoDB 最为常用。我们用 SPL 连接 MongoDB 做计算。 导入 MongoDB 数据。 外部库 SPL 支持的多种数据源大概分两类&#xff0c;一类是像 RDB 有 JDBC 直接使用&#xff0c;或者文件等直接读取&a…

Maestro CLI云端测试以及github cl,bitrise原生cl的测试流程

昨天我们了解了maestro测试框架以及maestro studio工具以及创建我们的第一个flow&#xff0c;然后通过例子在maestro cli云端进行测试请求并且成功&#xff0c;今天我们就在我们自己的app上简单的进行三种测试流程&#xff0c;maestro cli云端测试&#xff0c;github cl集成测试…

25年宁德时代新能源科技SHL 测评语言理解数字推理Verify题库

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

AutoGenTestCase - 借助AI大模型生成测试用例

想象一下&#xff0c;你正在为一个复杂的支付系统编写测试用例&#xff0c;需求文档堆积如山&#xff0c;边缘场景层出不穷&#xff0c;手动编写让你焦头烂额。现在&#xff0c;有了AutoGenTestCase&#xff0c;这个AI驱动的“测试用例生成机”可以从需求文档中自动生成数百个测…

vue+cesium示例:3Dtiles三维模型高度调整(附源码下载)

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

线程池RejectedExecutionException异常

文章目录 1、报错2、定位3、修复4、线程池使用的一点思考 1、报错 检索项目日志时&#xff0c;发现一个异常堆栈信息&#xff0c;核心报错&#xff1a; java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.CompletableFuture$AsyncSupply480a10c7…

当 “欧洲版 Cursor” 遇上安全危机

在 AI 编程助手蓬勃发展的当下&#xff0c;安全问题正成为行业不容忽视的隐忧。近期&#xff0c;AI 编程助手公司 Replit 与号称 “欧洲版 Cursor” 的 Lovable 之间&#xff0c;因安全漏洞问题掀起了一场风波&#xff0c;引发了业界的广泛关注。​ Replit 的员工 Matt Palmer…

【如何在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&#xff1a; 2.异步版本async_spider.py&#xff1a; 经常逛B站的同志们可能知道&#xff0c;B站的404页面做得别具匠心&…

【氮化镓】GaN HMETs器件物理失效分析进展

2021 年 5 月,南京大学的蔡晓龙等人在《Journal of Semiconductors》期刊发表了题为《Recent progress of physical failure analysis of GaN HEMTs》的文章,基于多种物理表征技术及大量研究成果,对 GaN HEMTs 的常见失效机制进行了系统分析。文中先介绍失效分析流程,包括使…

Abaqus连接器弹片正向力分析:

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

鸿蒙生态再添翼:身份证银行卡识别引领智能识别技术新篇章

随着信创国产化战略的深入推进和鸿蒙操作系统&#xff08;HarmonyOS Next&#xff09;的迅速崛起&#xff0c;市场对兼容国产软件生态的需求日益增长。在这一背景下&#xff0c;中安身份证识别和银行卡识别技术应运而生&#xff0c;为鸿蒙生态的发展注入了新的活力。 移动端身份…

NLP学习路线图(十九):GloVe

自然语言处理&#xff08;NLP&#xff09;的核心挑战在于让机器理解人类语言的丰富含义。词向量&#xff08;Word Embeddings&#xff09;技术通过将词语映射到高维实数空间&#xff0c;将离散的符号转化为连续的向量&#xff0c;为NLP任务奠定了坚实基础。在众多词向量模型中&…

如何使用DAXStudio将PowerBI与Excel连接

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

软考 系统架构设计师系列知识点之杂项集萃(79)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;78&#xff09; 第141题 软件测试一般分为两个大类&#xff1a;动态测试和静态测试。前者通过运行程序发现错误&#xff0c;包括&#xff08;&#xff09;等方法&#xff1b;后者采用人工和计算机…

UVa12298 Super Joker II

UVa12298 Super Joker II 题目链接题意输入格式输出格式 分析AC 代码 题目链接 UVa12298 Super Joker II 题意 有一副超级扑克&#xff0c;包含无数张牌。对于每个正合数p&#xff0c;恰好有4张牌&#xff1a;黑桃p&#xff0c;红桃p&#xff0c;梅花p和方块p&#xff08;分别…

【网络安全】SRC漏洞挖掘思路/手法分享

文章目录 Tip1Tip2Tip3Tip4Tip5Tip6Tip7Tip8Tip9Tip10Tip11Tip12Tip13Tip14Tip15Tip16Tip17Tip18Tip19Tip20Tip21Tip22Tip23Tip24Tip25Tip26Tip27Tip28Tip29Tip30Tip1 “复制该主机所有 URL”:包含该主机上的所有接口等资源。 “复制此主机里的链接”:包括该主机加载的第三…

【AFW+GRU(CNN+RNN)】Deepfakes Detection with Automatic Face Weighting

文章目录 Deepfakes Detection with Automatic Face Weighting背景pointsDeepfake检测挑战数据集方法人脸检测面部特征提取自动人脸加权门控循环单元训练流程提升网络测试时间增强实验结果Deepfakes Detection with Automatic Face Weighting 会议/期刊:CVPRW 2020 作者: …

性能优化 - 案例篇:缓冲区

文章目录 Pre1. 引言2. 缓冲概念与类比3. Java I/O 中的缓冲实现3.1 FileReader vs BufferedReader&#xff1a;装饰者模式设计3.2 BufferedInputStream 源码剖析3.2.1 缓冲区大小的权衡与默认值 4. 异步日志中的缓冲&#xff1a;Logback 异步日志原理与配置要点4.1 Logback 异…

ES101系列07 | 分布式系统和分页

本篇文章主要讲解 ElasticSearch 中分布式系统的概念&#xff0c;包括节点、分片和并发控制等&#xff0c;同时还会提到分页遍历和深度遍历问题的解决方案。 节点 节点是一个 ElasticSearch 示例 其本质就是一个 Java 进程一个机器上可以运行多个示例但生产环境推荐只运行一个…