C语言:分支语句(if语句、switch语句)

简介: C语言:分支语句(if语句、switch语句)

在此篇文章中,我将为你介绍分支语句。那么,首先有一个问题。

一、什么叫做语句?

C语言中,语句可以分为五大类:

       1. 表达式语句        2. 函数调用语句        3. 控制语句        4. 复合语句        5. 空语句

本篇文章中的以下内容,将介绍 控制语句 —— 用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构 )。


二、 分支语句(选择结构)

1. if语句

       if语句中有两种结构:

单分支

//单分支if语句
if(表达式1)
    语句1;

多分支

//多分支
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else if(表达式3)
    语句3;
...

if语句如何执行呢?

表达式 为真则执行对应语句;若 为假,则不执行。

0 为假;非0 为真

接下来,为大家展示一个单分支if语句的运行结果。

若想要执行多条语句,则需要用到代码块功能

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

其中  {  }  为一个代码块。

if语句中 比较常见的几个重点问题:

1. 悬空 else

if (a > 5)
  if (a > 7)
    printf("%d", a);
else
  printf("%d", 5 - a);

else 的匹配: else 仅与离它最近的 if 匹配

2. 代码风格

2.1

如上一段代码,由于其糟糕的代码风格,我们很容易将程序的运行结果判断错误

if (a > 5)
{
  if (a > 7)
    printf("%d", a);
  else
    printf("%d", 5 - a);
}

倘若将上一段代码改写成这样,同学们就不大会判断错误了

2.2

//1
if (a = 5)
{
}
//2
if (a == 5)
{
}
//3
if (5 == a)
{
}

如果我们要写一个if语句,判断a是否与5相等时,采用第三种写法,就能够更少出错了


2. switch 语句

switch(a)
{
    case 1:
        语句1;
    case 2:
        语句1;
    case 3:
        语句3;
    ...
}

当我们输入的 a 为 1时,switch语句 将从 case 1 进入;a 为 2时,switch语句 将从 case2 进入;...  , 以此类推。

如果不加操作,当我们将 case 1 中的语句运行完时, switch语句不会自动停止,而是沿着 case 2 、 case 3  一直运行下去。

要避免这种情况,我们需要在语句结束的地方,加入 break ,这样程序就能自动停止。

在这里,我将给出一个程序运行结果,以展示 switch语句的实际效果。

如果我输入的值是与标签值都不匹配怎么办?  

这里,我要再为你们介绍一个关键字 default

当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行

建议:

在每个 switch 语句中都放一条default子句,甚至可以在后边再加一个 break 。

 


相关文章
|
4月前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
54 8
|
4月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
27 0
|
4月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
94 5
|
4月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
C语言
《C语言及程序设计》实践参考——分段函数求值switch语句版
返回:贺老师课程教学链接  项目要求 【项目:分段函数求值switch语句版】从键盘输入x的值(要求为整型),根据公式1计算并输出x和y的值。要求用switch语句完成。[参考解答] 解法1:各分段的标准都为2的倍数,所以,构造表达式 t= x/2,根据t的取值决定switch分支; #include <stdio.h> #include <math.h> int
2203 0
|
1月前
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
37 3
|
1月前
|
存储 算法 安全
【C语言程序设计——函数】分数数列求和1(头歌实践教学平台习题)【合集】
if 语句是最基础的形式,当条件为真时执行其内部的语句块;switch 语句则适用于针对一个表达式的多个固定值进行判断,根据表达式的值与各个 case 后的常量值匹配情况,执行相应 case 分支下的语句,直到遇到 break 语句跳出 switch 结构,若没有匹配值则执行 default 分支(可选)。例如,在判断一个数是否大于 10 的场景中,条件表达式为 “num> 10”,这里的 “num” 是程序中的变量,通过比较其值与 10 的大小关系来确定条件的真假。常量的值必须是唯一的,且在同一个。
20 2
|
1月前
|
存储 C语言
【C语言程序设计——函数】递归求斐波那契数列的前n项(头歌实践教学平台习题)【合集】
本关任务是编写递归函数求斐波那契数列的前n项。主要内容包括: 1. **递归的概念**:递归是一种函数直接或间接调用自身的编程技巧,通过“俄罗斯套娃”的方式解决问题。 2. **边界条件的确定**:边界条件是递归停止的条件,确保递归不会无限进行。例如,计算阶乘时,当n为0或1时返回1。 3. **循环控制与跳转语句**:介绍`for`、`while`循环及`break`、`continue`语句的使用方法。 编程要求是在右侧编辑器Begin--End之间补充代码,测试输入分别为3和5,预期输出为斐波那契数列的前几项。通关代码已给出,需确保正确实现递归逻辑并处理好边界条件,以避免栈溢出或结果
66 16
|
1月前
|
存储 编译器 C语言
【C语言程序设计——函数】回文数判定(头歌实践教学平台习题)【合集】
算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。如果操作数是浮点数,在 C 语言中是不允许直接进行。的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;注意:每一个数据输出格式为 printf("%4d", i);的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。取余运算要求两个操作数必须是整数类型,包括。开始你的任务吧,祝你成功!
52 1
|
1月前
|
C语言
【C语言程序设计——函数】亲密数判定(头歌实践教学平台习题)【合集】
本文介绍了通过编程实现打印3000以内的全部亲密数的任务。主要内容包括: 1. **任务描述**:实现函数打印3000以内的全部亲密数。 2. **相关知识**: - 循环控制和跳转语句(for、while循环,break、continue语句)的使用。 - 亲密数的概念及历史背景。 - 判断亲密数的方法:计算数A的因子和存于B,再计算B的因子和存于sum,最后比较sum与A是否相等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台对代码进行测试,预期输出如220和284是一组亲密数。 5. **通关代码**:提供了完整的C语言代码实现
61 24

热门文章

最新文章