初识C语言—— 选择结构程序设计

article/2025/4/22 22:24:34

文章目录

  • 一、if语句
  • 二、if语句的基本形式
    • 1.if语句形式
    • 2.if...else语句形式
    • 3.else if语句形式
  • 三、if的嵌套形式
  • 四、条件运算符
  • 五、switch语句
    • 1switch语句的基本形式
    • 2.多路开关模式的switch语句
  • 六、if...else语句和switch语句的区别
  • 七、总结

一、if语句

在C语言程序中,我们有时候需要完成一些不同的判断操作,这是我们利用的就是if语句。
if语句就如同十字路口的红绿灯一样,通过判断不同的条件,决定是否进行操作

二、if语句的基本形式

在if语句中,首先判断表达式的值,然后根据该值的情况控制程序流程。表达式的值不等于0就是真值,反之为假值。if语句有if、if…else、else…if这三种形式,下面我们将会为大家一一介绍。

1.if语句形式

if语句通过对表达式进行判断,根据判断的结果决定是否进行相应的操作。

if语句的一般形式如下:

if(表达式)
{语句
}

其语句的执行流程图如下:
在这里插入图片描述
if后面的括号中的表达式就是要继续判断的条件,后面的语句部分则是对应的操作。如果if判断括号中的表达式为真,就执行后面语句的操作,反之则不执行。下面是一个简单的例子

if(num == 1)
{printf("Hello CSDN");
}

这行代码的含义其实很简单,我们判断变量num == 1的表达式。如果条件成立,那么我们就执行下列的语句,打印处”Hello CSDN“,反之如果为假,则不进入if语句内部执行语句。

2.if…else语句形式

在C语言中,我们除了可以指定在条件为真时执行某些语句之外,我们还可以在条件为假是执行另外一段代码。这在C语言中我们可以利用else语句来完成,其一般形式如下:

if(表达式)语句块1;
else语句块2;

其语句的执行流程图如下所示:
在这里插入图片描述
在if后的括号判断表达式的结果,如果判断的结果是真值,则执行紧跟在if后的语句块中的内容:如果判断的结果为假值,则执行else语句后的语句块内容。简单来讲就是,当if语句检验的条件为假的时候,就执行相应的else语句后面的语句或者语句块,我们可以举一个小例子:

if(price)
{	printf("the price is ture");
}
else
{printf("the price is false");
}

在上面代码中,如果if判断变量price的值为真,则执行if后面的语句块,如果if判断的结果为假值,则执行else下面的语句块。

3.else if语句形式

利用if和else语句的组合我们还可以实现else if语句,这是对一系列互斥的条件进行检验,一般形式如下:

if(表达式1)
{语句1;
}
else if(表达式2)
{语句2;
}
...
else if(表达式m)
{语句m;
} 
else(表达式n)
{语句n;
}

在这里插入图片描述
由流程图我们不难看出,首先对if语句中的表达式1进行判断,如果结果为真值,则执行后面跟着的语句1,然后跳过else if语句和else语句,反之如果判断为假值,则判断表达式2,接下来就都是一样的套路了,当所有的判断都不成立的时候,即都为假值是,就会执行else后的语句块。
一起来看这个例子:

if(num == 1)
{...   //语句块1
}
else if(num == 2)
{...   //语句块2
}
else if(num == 3)
{...   //语句块3
}
else
{...   //语句块4
}

上述代码的含义就是使用if语句判断变量num的值是否为1,如果为1,则执行后面语句块中的内容,然后跳过后面else if和else语句的判断与执行。如果不为1,那么接下来会判断num和2之间的关系,如果判断结果为真,则进入语句块2执行,后续也是一样的流程,如果都判断不成立,则会执行最后else内的语句块。

三、if的嵌套形式

if语句中又含有一个或多个if语句,这种情况我们就将其称为if语句的嵌套
一般形式如下:

if(表达式1)
{if(表达式2){语句块1}	else{语句块2}
}
else
{if(表达式3){语句块3}	else{语句块4}
}

使用if语句的嵌套形式,可对判断的条件进行细化,然后在进行相应的操作。
这里就不举额外的实例了,大家可以自己尝试一下,其实就是个举一反三的过程,你懂了if语句的正确使用,那么学会使用基础的嵌套也自然不在话下。

四、条件运算符

我们在使用if语句的时候,可以通过表达式判断表达式为”真“或”假“,从而执行相应的表达式,举个小例子

if(a > b)
{min = b;	
}
else
{min = a;
}

上面的代码我们就可以使用条件运算符"?:"来进行简化,例如:

min = (a > b) ? b : a;

条件运算符可对一个表达式的值的真假情况进行检验,然后根据检验结果返回另外两个表达式中,其一般形式如下:

表达式1 ? 表达式2 : 表达式3;

在运算中,首先会对第一个表达式的值进行检验,如果值为真,则返回第二个表达式的结果值。如果表达式为假,则返回第三个表达式的结果值。例如上面那个代码,实现判断表达式a>b,如果判断为真,则将b的值赋给min变量,如果判断为假,则把a的值赋给max变量。

五、switch语句

从上文的介绍我们可以知道,if语句只有两个分支可供选择,而我们在解决实际问题中常常需要用到多分支的选择。当然,如果选择用if语句层层嵌套,也可以实现这一目的,但这容易使得程序冗杂,可读性差。这个时候,switch语句在处理多分支选择情况的优势就体现出来了。

1switch语句的基本形式

switch语句是多分支选择语句。例如,我们现在要检测某个变量的所有可能取值,我们就可以使用switch语句,如下所示:

switch(表达式)
{case 1:语句块1case 2:语句块2;case 3:语句块3;case 4:语句块4;...case n:语句块n;default:默认情况语句块;
}

流程图如下:
在这里插入图片描述
由流程图我们可以知道,switch后面括号的表达式就是要进行判断的条件。在switch的语句块中,使用case关键字表示检验条件符合的各种情况,其紧跟后的语句就是相关的操作了。此外,我们还可以看到有一个default的关键词,这个关键字和else…if语句中的else异曲同工之妙,如果没有符合条件的情况,那么就会执行default后的默认情况语句。
我们可以来看一段实例:

switch(num)
{case 1:printf("Java\n");break;case 2:printf("Python\n");break;case 3:printf("MySQL\n");break;default:printf("Error\n");break;
}

其中switch判断变量num的值,利用case语句检验num值的不同情况。假设返回的是2,则执行case为2时的情况,执行后通过break跳出switch语句,不再执行switch下面的代码。

注:每个switch语句只能有一个default语句,而且default语句是可以省略的。

2.多路开关模式的switch语句

这里直接用语言描述过于抽象,我们先来看一段代码:

switch(表达式)
{case 1:语句1break;case 2:case 3:语句2break;...default:某人语句break;
}

我们可以看到,如果在case2后不使用break语句,那么符合检验时与case3检验时的效果是一样的。也就是说,使用多路开关模式使得多种检验条件使用一种解决方式。

六、if…else语句和switch语句的区别

通过上文的介绍,我知道if…else语句以及switch语句都用于根据不同的情况检验条件并做出相应的判断。那么二者之间有无区别呢?接下来我们会从二者的语法和效率两方面进行比较。
①.语法的比较
if需要配合else关键字来使用,switch需要配合case关键字来使用:if语句是先对条件进行判断,switch语句是后进行判断。
②.效率的比较
if…else结构对于少量的检验,判断速度是比较快的,但是随着检验的增长,判断的速度会越来越慢,其中默认情况是最慢的。
而switch结构中,除了default默认情况之外,所有的case检验速度都是相同的,default默认情况比其他情况都要快。

七、总结

本文介绍了选择结构的程序设计方式,包括if语句和switch语句,同时对if…else语句和else…if语句的形式进行了分析,还区分了if…else语句和switch语句的差异。希望本文对大家有所帮助,一键三连哦!


http://chatgpt.dhexx.cn/article/9hfUpmao.shtml

相关文章

顺序结构 与 选择结构

1、顺序结构 流程:就是"程序代码的执行"顺序。 流程控制: 规定的语句,按照 哪几种方式 执行。(这几种方式 指的是 顺序结构、选择结构、循环结构) 顺序结构:按照程序(自上而下&…

选择结构语句

if条件语句 ifelse的多层叠加 格式流程图代码console结论 ifelse ifelse语句 格式流程图代码console结论 if条件语句 1.if()…else的多层叠加 格式 if(判断语句){ 执行if语句1 }else{ 执行esle语句1} if(判断语句…

C语言中的选择结构

C语言中的条件控制语句选择结构 在C语言中,一共有三种程序结构:顺序结构、选择结构(分支结构)和循环结构。顺序结构,从头到尾一句接着一句的执行下来,直到执行完最后一句;选择结构,…

顺序结构、选择结构

1、顺序结构 计算机执行程序的步骤是从上到下依次执行。 2、选择结构 选择结构也叫条件控制语句,主要有if语句、if…else语句、条件表达式exp1? exp2:exp3、switch语句。 1)if语句、if…else语句 if语句主要有单分支、双分支和多分支三…

if选择结构

if选择结构一共有三种分别是 if 型 if else 型 if else if else型 第一种 if型 使用场景:需要进行判断时使用; int a 1, b 1; if (a b){System.out.println(&qu…

选择结构(一)

一 流程控制 1.有三种基本结构:顺序结构、选择结构、循环结构 顺序结构 选择结构 循环结构 2.流程控制语句是控制程序中各语句执行顺序的语句 二 选择结构 1.根据一定的条件有选择地执行或跳过特定的语句 2.选择结构可以分为单分支、双分支、多分支 3.语法:if ( 表达式 ) {…

C语言 选择结构

一.选择结构 1. 单分支选择结构 2. 双分支选择结构 3. 多分支选择结构 1. 单分支选择结构 1.1何为单分支选择结构? 从开始到结束之间只有一条路可供选择。 1.2何为双分支结构? 从开始到结束之间有两条路可供选择。 1.3何为多分支结构? 从开…

C语言——选择结构

选择结构和条件判断 (一)if语句——实现两个分支 if 语句可以写成不同形式 if (表达式) 语句1——可以没有else语句if (表达式) 语句 1 else 语句 2 ——————————有else语句if (表达式…

c语言 选择结构例题

目录 1、if 语句的例题 2、switch 语句例题 前面我有一篇讲选择结构的文章,同学们可以先看一下,温习温习。 应该就在前面几篇,我复制不了链接了,尴尬了。 1、if 语句的例题 先来一张图,将if 语句步骤简单的走一下…

python选择结构

1.选择结构 1.1单分支结构 1.1.1 语法&#xff1a; if 表达式:语句块 1.1.2. 流程图 1.1.3 例&#xff1a;输入2个数&#xff0c;输出最大值&#xff1a; aint(input()) bint(input()) maxa if a<b:maxb print(max) 1.1.4.注意&#xff1a; 表达式&#xff1a;一般表…

C语言的选择结构

选择结构 C语言有两种选择语句:(1)if语句:用来实现两个分支的选择结构 (2)switch语句:用来实现多分支条件的选择结构 例子:计算ax^2 + bx + c = 0的方程的根。 流程图: 代码: #include<stdio.h>#include<math.h>//计算ax^2 + bx + c = 0的方程的根。…

二、选择结构

目录 1.JavaScript的组成 1.三大核心 2.window对象的常用方法 2.if选择结构 3.多重if选择结构 4.嵌套if选择结构 5.switch选择结构 6.三元表达式 1.JavaScript的组成 1.三大核心 ESMAScript 核心语法&#xff08;标准规范&#xff09;-> ES6BOM 浏览器对象模式&am…

选择结构的使用

一、掌握if结构语句 二、掌握switch分支结构 三、两种结构语句的比较 学习结构之前首先要明白为什么要学习结构&#xff0c;结构有什么作用&#xff0c;有哪些结构&#xff0c; 首先我们要明白java代码中&#xff0c;程序运行的原理是从上到下一行一行运行的&#xff0c;如果…

C语言-选择结构

目录 选择结构 一、if-else语句 1.单选择 2.双选择 3.多选择 二.switch语句 选择结构 选择结构用于判断给定的条件&#xff0c;根据判断的结果判断某些条件&#xff0c;根据判断的结果来控制程序的流程 一、if-else语句 1.单选择 单选择通过if语句就可以实现&#xff0c…

Insert keyframe giving keying set failed to insert any key frames问题(已解决)

Blender 2.81 beta 问题描述 骨骼动画&#xff0c;进入姿态模式以后&#xff0c;调整了姿势然后按I键尝试插入关键帧&#xff0c;但是报错&#xff0c;报错信息很费解 “插入关键帧的帧位置” 于是切换到英文版显示 “Insert keyframe giving keying set failed to insert any…

论文阅读笔记:(2015, ijrr) Keyframe-based visual–inertial odometry using nonlinear optimization

算是基于滑窗的VIO的必读文章吧&#xff0c;很详细地说了边缘化~ paper: http://in.ruc.edu.cn/wp-content/uploads/2021/01/Keyframe-Based-Visual-Inertial-Odometry-Using-Nonlinear-Optimization.pdfhttp://in.ruc.edu.cn/wp-content/uploads/2021/01/Keyframe-Based-Vis…

ORB-SLAM2源码笔记(4)——帧Frame和关键帧KeyFrame

Frame类中的相机参数为static类型&#xff0c;表示所有Frame对象共享一份相机参数 特征点提取ExtractORB 在Frame类构造函数中调用成员变量mpORBextractorLeft和mpORBextractorRight的()运算符进行特征点提取. 畸变矫正前的左目特征点是mvKeys[i]. 畸变矫正后的左目特征点是m…

《UnityAPI.Keyframe关键帧》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Keyframe+inTangent+outTangent+立钻哥哥++OK++)

《UnityAPI.Keyframe关键帧》 版本 作者 参与者 完成日期 备注 UnityAPI_Keyframe_V01_1.0 严立钻 2020.06.28 #《UnityAPI.Keyframe关键帧》发布说明&#xff1a; “UnityAPI.Keyframe关键帧”是对UnityAPI中Keyframe关键帧类的剖析和拓展&…

ORB-SLAM2算法10之图像关键帧KeyFrame

文章目录 0 引言1 KeyFrame类1.1 构造函数1.2 成员函数1.3 关键帧之间共视图1.3.1 AddConnection1.3.2 UpdateBestCovisibles1.3.3 UpdateConnections1.3.4 EraseConnection1.3.5 SetBadFlag 1.4 地图点1.5 生成树 2 KeyFrame用途 0 引言 ORB-SLAM2算法7详细了解了System主类和…

CSS3 @keyframe动画的基本用法与常见错误用法

前言 随着CSS3的推出与普及&#xff0c;其各种属性开始被广泛使用。尤其是其动画功能&#xff0c;对于一些简单的动画实现&#xff0c;实在没必要用Javascript去实现&#xff0c;这是keyframes动画就派上了用场。今天来讲一下keyframes的一些基本的用法和常见坑。 【本文志于…