【选择结构程序设计-谭浩强适配】(适合专升本、考研)

无偿分享学习资料,需要的小伙伴评论区或私信dd。。。

无偿分享学习资料,需要的小伙伴评论区或私信dd。。。

无偿分享学习资料,需要的小伙伴评论区或私信dd。。。

完整资料如下:纯干货、纯干货、纯干货!!!

关注专栏:<后续持续更新>


目录

选择结构语句

1.if分支语句

if语句的嵌套

2.switch分支语句


选择结构语句

分类:if分支语句(双分支)、switch分支语句(多分支)

1.if分支语句

分类:单分支if、双分支if、多分支if(类似switch)

⚠️注意:本质上来说if的双分支与多分支属于一种分支,所以理论上常说if只能提供两个分支选择,即认为if无法进行多分支。

格式:

1.单分支if:
  if(表达式)
    语句1...
  
2.双分支if:
  if(表达式)
    语句1...
  else
    语句2...
    
3.多分支if:
  if(表达式1)
    语句1...
  else if(表达式2)
    语句2...
    ...
  else if(表达式n)
    语句n
  else
    语句n+1
  • 所有if语句的表达式可以是一个关系表达式(常见)、数值表达式、逻辑表达式、常量、变量(即结果为逻辑值的表达式)。其内部的内嵌语句语句1、语句2和语句n可以是一个简单的语句也可以是一个复合语句,还可以另一个if语句(嵌套),甚至还可以是其他c语句(9种c语句)

  • 整个if语句可以写在多行(推荐)也可以写在一行。

    if(a>0)
      y=1;
    else
      y=2;
    //等同于if(a>0)y=1;else y=2;(语句不要忘记加分号)
  • 如果if、else后面的语句只是一个简单的语句,那么花括号可以参略。如果是一个复合语句则不能省略。

    int b;
    if(3<0)
      {
        printf("分数");
        b=100;
      }  
        printf("b=%d\n",b);//因为if语句不成立,所以b=100不会执行,则b自然由系统根据数据类型随机赋值
    ​
    int b;
    if(3<0)
        printf("分数");
        b=100;
    ​
        printf("b=%d\n",b);//虽然if语句不成立,但b=100不属于if语句的内容,即赋值成立,自然输出b=100
  • if语句无论写在几行,都是一个整体,属于同一个语句,即不要误认为if语句是一个语句、else语句是一个语句,不要误以为看见if的内嵌语句有了分号就以为if语句结束了,还要观察其后面的else。

  • if语句表达式的结果为逻辑值(1【真】、0【假】)。即若表达式为数值(非零为真,0为假)。若是变量或常量(判断数据:数值(非零为真,0为假)、字符串(非空为真、空为假))

  • 单分支判断为真就执行。双分支必须执行一个。多分支只要判断到为真,执行完其后的语句就会跳出if。

    if(3){
        printf("a");//输出a就跳出if语句
    }else  if(3){
        printf("b");//哪怕后面也为真,也不会被执行
    }

  • 关系表达式a>b>c没有语法错误,只是不能表达正确的数学表达式。正确为a>b&&a>c&&b>c。

  • 双分支if语句可以使用条件表达式替换。

if语句的嵌套

定义:在一个if语句中又包含一个或多个if语句称为if语句的嵌套

  • else语句不能单独使用,必须与if语句配合使用,每一个else都会与其上面最近的if配对。每一个if都会与其后面的else配对,若后面没有else,则认为if分支语句结束

  • 为避免二义性混淆,最好用花括号把内嵌部分括起来。

2.switch分支语句

说明:switch属于多分支语句,类似if语句的多分支语句

格式:

switch(表达式)
  {
    case  常量1:语句1;break;
    case  常量2:语句2;break;
    ...
    case  常量n:语句n;break;
    default:语句n+1;break;
  }
  • switch后面的表达式只能是整型、字符型、枚举型的常量、变量或表达式,case后面只能是整型、字符型、枚举型的常量或常量表达式。(即switch后面可以是变量或常量,但是case后面只能是常量,且只限于整型、字符型、枚举型)

  • case与default都起标号作用,用来标记一个位置,他们的顺序可以颠倒不影响结果(前提有break)。default是在所有匹配项都不成立的情况下执行,也可以省略,但是若没有匹配到对应的值,则不执行任何语句。

  • 不同的case后面的常量值不允许相同,否则会出现语法报错。

    char a=97;
    switch(a){
        case 97:putchar('A');break;
        case 'a':putchar('B');break;//报错!!!哪怕转换为97的字符形式,也不允许相同
        case 97:putchar('C');break;//常量值相同,报错!
        case 1>0:break
        case 1:break;//这里也会报错,因为上面1>0为1
    }

  • break的作用:跳出switch(如果没有break,那么switch在找到匹配的标号入口后,会把后面所有的标号后面的语句不加判断的连续执行这点与if多分支区别:if多分支在判断到为真时会自动跳出if语句)

    char a=1;
    switch(a){
        case 0:putchar('A');
        case 1:putchar('B');//以下内容全部输出
        case 3:putchar('C');
    }
    //输出:BC

  • switch的花括号可以省略,但是只限于case语句只有一个。

  • switch默认执行顺序是从上往下依次执行,没有匹配到再执行default。若default移到前面,则依次执行遇到default则会先绕开,没有匹配到再执行default,若把default移到前面,则需要在最后加上break,否则会输出default下面的语句。

    char a=11;
    switch(a){
        default :putchar('O');//输出:OABC
        case 0:putchar('A');
        case 1:putchar('B');
        case 3:putchar('C');   
    }

  • 多个case可以共用一组语句

    case 1:
    case 2:
    case 3:printf(">60");break;

  • switch语句也允许嵌套。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uni-app跨端兼容

1.样式兼容 小程序端不支持*选择器&#xff0c;可以使用&#xff08;view,text&#xff09; 页面视口差异(tabar页、普通页) H5端默认开始scoped 例如骨架屏样式出现问题&#xff0c;需要将之前的样式拷贝到骨架屏中 提示&#xff1a;H5端是单页面应用&#xff0c;scoped隔离…

【吊打面试官系列】Java高并发篇 - 如何创建守护线程?

大家好&#xff0c;我是锋哥。今天分享关于 【如何创建守护线程&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 如何创建守护线程&#xff1f; 使用 Thread 类的 setDaemon(true)方法可以将线程设置为守护线程&#xff0c;需要注意的是&#xff0c;需要在调用 …

家政服务新体验——家政小程序开发,让生活更轻松!

一、引言 随着现代生活节奏的加快&#xff0c;家政服务已经成为越来越多家庭不可或缺的一部分。然而&#xff0c;传统家政服务方式往往存在预约不便、服务质量参差不齐等问题。为了解决这些问题&#xff0c;我们精心打造了一款家政小程序&#xff0c;为您带来全新的家政服务体…

Codeforces Round 843 (Div. 2) B. Gardener and the Array (构造)

原题地址 The gardener Kazimir Kazimirovich has an array of n n n integers c 1 , c 2 , … , c n c_1, c_2, \dots, c_n c1​,c2​,…,cn​. He wants to check if there are two different subsequences a a a and b b b of the original array, for which f ( a ) …

学习笔记:Adaptive Platform(AP)适配到RTOS

一、背景 1、AP版本 Adaptive Platform AUTOSAR R20-11版本标准支持C14。CM模块支持DDS、SOME/IP协议 2、RTOS RTOS-A核&#xff0c;当前完全支持POSIX PSE51、POSIX PSE52接口&#xff0c;POSIX PSE53部分支持&#xff0c;POSIX PSE54基本不支持。详细接口参考&#xff1a…

《三》菜单栏_工具栏_状态栏动作与实现

上期我们创建了辣么多的动作&#xff0c;那么这次我们要是开始实现这些动作&#xff0c;撸起袖子来吧&#xff1a; //菜单动作&#xff08;ACtion&#xff09;QAction *newAct;//新建QAction *openAct;//打开QAction *saveAct;//保存QAction *saveAsAct;//另存为QAction *prin…

学习java

在实验室看见这本书&#xff0c;无聊看了下&#xff0c;写出了第一个java代码 成功下载了eclipse并且汉化。 写了自己的第一个java程序&#xff1a; package ttttt;public class ttttt {public static void main(String[] args) {System.out.println("hello world")…

DS高阶:B树系列

一、常见的搜索结构 1、顺序查找 时间复杂度&#xff1a;O(N) 2、二分查找 时间复杂度&#xff1a;O(logN) 要求&#xff1a;&#xff08;1&#xff09;有序 &#xff08;2&#xff09;支持下标的随机访问 3、二叉搜索树&#xff08;BS树&#xff09; 时间复杂…

免费的国内版 GPT 推荐,5个国产ai工具

提起AI&#xff0c;大家第一个想到的就是GPT。 虽然它确实很厉害&#xff0c;但奈何于我们水土不服&#xff0c;使用门槛有些高。 不过随着GPT的爆火&#xff0c;现在AI智能工具已经遍布到各行各业了&#xff0c;随着时间的推移&#xff0c;国内的AI工具也已经“百花盛放”了…

哈希重要思想——位图详解

一&#xff0c;概念 所谓位图&#xff0c;就是用每一位来存放某种状态&#xff0c;适用于海量数据&#xff0c;数据无重复的场景。通常是用来判断某个数据存不存在的。 为了方便理解我们引入一道面试题&#xff0c; 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无…

UniAD大模型开路,智能车驶入AGI时代

作者 |老缅 编辑 |德新 在刚刚结束不久的北京车展上&#xff0c;除一众明星车型亮相&#xff0c;供应链企业也开始大秀肌肉&#xff0c;其中尤其以端到端大模型为代表&#xff0c;焕新一代的智驾技术栈掀起了新一轮热潮。 作为首个提出感知决策一体化自动驾驶通用模型的公司&…

C++学习笔记3

A. 求出那个数 题目描述 喵喵是一个爱睡懒觉的姑娘&#xff0c;所以每天早上喵喵的妈妈都花费很大的力气才能把喵喵叫起来去上学。 在放学的路上&#xff0c;喵喵看到有一家店在打折卖闹钟&#xff0c;她就准备买个闹钟回家叫自己早晨起床&#xff0c;以便不让妈妈这么的辛苦…

创新点!CNN与LSTM结合,实现更准预测、更快效率、更高性能!

推荐一个能发表高质量论文的好方向&#xff1a;LSTM结合CNN。 LSTM擅长捕捉序列数据中的长期依赖关系&#xff0c;而CNN则擅长提取图像数据的局部特征。通过结合两者的优势&#xff0c;我们可以让模型同时考虑到数据的时序信息和空间信息&#xff0c;减少参数降低过拟合风险&a…

STM32_HAL_RTC_解决恢复电源时再一次初始化

1问题 板子再次恢复电源时直接初始化了时间 2解决思路 在初始化函数&#xff08;MX_RTC_Init();&#xff09;中增加判断&#xff0c;判断是否是二次初始化 将值放入备份存储其中 3问题图 4解决后的源码 /* RTC init function */ void MX_RTC_Init(void) {/* USER CODE BE…

C++青少年简明教程:C++数据类型

C青少年简明教程&#xff1a;C数据类型 数据类型定义了变量可以存储哪些类型的数据&#xff0c;以及对这些数据可以进行哪些操作。C提供了丰富的数据类型供开发者使用。 下面是 C 中常见的数据类型&#xff1a; ★整型&#xff08;int&#xff09;&#xff1a;整数类型的数据…

零一万物发布千亿参数模型Yi-Large,李开复呼吁关注TC-PMF,拒绝Ofo式烧钱打法

5月13日&#xff0c;在零一万物成立一周年之际&#xff0c;零一万物 CEO 李开复博士携带千亿参数 Yi-Large 闭源模型正式亮相&#xff0c;正式进军全球 SOTA 顶级大模型之首&#xff0c;在斯坦福最新的 AlpacaEval 2.0 达到全球大模型 Win Rate 第一。除此之外&#xff0c;零一…

【代码随想录】【动态规划】背包问题 - 完全背包

完全背包 模板&#xff1a;完全背包问题 问题描述 完全背包问题与01背包问题唯一的区别在于&#xff1a; 在01背包中&#xff1a;每个物品只有一个&#xff0c;要么放入背包&#xff0c;要么不放入背包在完全背包中&#xff1a;每个物品有无限多个&#xff0c;可以不放入背…

迪安诊断数智中心战略与PMO负责人徐黎明受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 迪安诊断技术集团股份有限公司数智中心战略与PMO负责人徐黎明先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“软件研发项目管理指标体系建设实践”。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#xff01; …

Rx(Reactive Extensions)的由来

既然我们已经介绍了响应式编程&#xff0c;现在是时候了解我们的明星了:响应式扩展&#xff0c;通常简称为Rx。微软开发了Reactive扩展库&#xff0c;使其易于处理事件流和数据流。在某种程度上&#xff0c;时变值本身就是一个事件流;每个值更改都是一种类型的事件它会更新依赖…

电流反馈型运放设计要点总结

目录 前言 基本架构 CFB和VFB运算放大器的差异 总结&#xff1a;电流反馈(CFB)与电压反馈(VFB) 前言 最近一个项目用到THS3491&#xff0c;发生了震荡&#xff0c;这是一个电流型反馈运放&#xff0c;借此机会&#xff0c;温故一下&#xff0c;电流运放的相关设计知识 基本架…