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

本文主要是介绍【选择结构程序设计-谭浩强适配】(适合专升本、考研),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

无偿分享学习资料,需要的小伙伴评论区或私信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)语句nelse语句n+1
  • 所有if语句的表达式可以是一个关系表达式(常见)、数值表达式、逻辑表达式、常量、变量(即结果为逻辑值的表达式)。其内部的内嵌语句语句1、语句2和语句n可以是一个简单的语句也可以是一个复合语句,还可以另一个if语句(嵌套),甚至还可以是其他c语句(9种c语句)

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

    if(a>0)y=1;
    elsey=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:breakcase 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');//输出:OABCcase 0:putchar('A');case 1:putchar('B');case 3:putchar('C');   
    }

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

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

  • switch语句也允许嵌套。

这篇关于【选择结构程序设计-谭浩强适配】(适合专升本、考研)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/986836

相关文章

如何选择适合孤独症兄妹的学校?

在探索适合孤独症儿童教育的道路上,每一位家长都面临着前所未有的挑战与抉择。当这份责任落在拥有孤独症兄妹的家庭肩上时,选择一所能够同时满足两个孩子特殊需求的学校,更显得尤为关键。本文将探讨如何为这样的家庭做出明智的选择,并介绍星贝育园自闭症儿童寄宿制学校作为一个值得考虑的选项。 理解孤独症儿童的独特性 孤独症,这一复杂的神经发育障碍,影响着儿童的社交互动、沟通能力以及行为模式。对于拥有孤独症兄

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

如何选择SDR无线图传方案

在开源软件定义无线电(SDR)领域,有几个项目提供了无线图传的解决方案。以下是一些开源SDR无线图传方案: 1. **OpenHD**:这是一个远程高清数字图像传输的开源解决方案,它使用SDR技术来实现高清视频的无线传输。OpenHD项目提供了一个完整的工具链,包括发射器和接收器的硬件设计以及相应的软件。 2. **USRP(Universal Software Radio Periphera

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

为什么现在很多人愿意选择做债务重组?债重组真的就这么好吗?

债务重组,起初作为面向优质企业客户的定制化大额融资策略,以其高效周期著称,一个月便显成效。然而,随着时代的车轮滚滚向前,它已悄然转变为负债累累、深陷网贷泥潭者的救赎之道。在此路径下,个人可先借助专业机构暂代月供,经一段时间养护征信之后,转向银行获取低成本贷款,用以替换高昂网贷,实现利息减负与成本优化的双重目标。 尽管债务重组的代价不菲,远超传统贷款成本,但其吸引力依旧强劲,背后逻辑深刻。其一