C语言之判断与循环语句知识点总结

目录

if选择结构

单选择结构

双选择结构

多选择结构

代码示例

[switch case语句](#switch case语句)

break语句的用法

while循环语句

do-while循环语句

for循环语句

循环的嵌套

continue语句


if选择结构

当我们需要根据条件的成立与否来执行不同的代码块时,可以使用C语言中的if选择结构。if选择结构可以根据判断条件的结果来决定程序的执行路径,从而实现不同的逻辑分支。

在C语言中,if选择结构有三种形式:单选择、双选择和多选择。下面逐一介绍这三种形式。

单选择结构

单选择结构用if语句实现,它的基本语法如下:

cpp 复制代码
if (条件表达式)
{
    // 当条件成立时执行的代码块
}

其中,条件表达式是一个逻辑表达式,如果它的值为真(非零),则执行if语句后的代码块;如果它的值为假(0),则跳过if语句后的代码块。

双选择结构

双选择结构用if-else语句实现,它的基本语法如下:

java 复制代码
if (条件表达式)
{
    // 当条件成立时执行的代码块
}
else
{
    // 当条件不成立时执行的代码块
}

条件表达式的值为真时,执行if语句后的代码块;条件表达式的值为假时,执行else语句后的代码块。

多选择结构

多选择结构用if-else if-else语句实现,它的基本语法如下:

cpp 复制代码
if (条件表达式1)
{
    // 当条件1成立时执行的代码块
}
else if (条件表达式2)
{
    // 当条件2成立时执行的代码块
}
else if (条件表达式3)
{
    // 当条件3成立时执行的代码块
}
...
else
{
    // 当以上条件都不成立时执行的代码块
}

多选择结构中,条件表达式按顺序进行判断,只有第一个为真的条件对应的代码块会被执行。如果所有条件都不成立,则执行else语句后的代码块。

在实际应用中,可以根据具体需求灵活运用这些选择结构。需要注意的是,条件表达式的值应该是一个逻辑值(0或非零),并且代码块的花括号是必需的,即使代码块只有一行。

代码示例

java 复制代码
#include <stdio.h>

int main() {
    int num = 10;

    if (num > 0) {
        // 单选择:当num大于0时执行以下代码块
        printf("数字为正。\n");
    } else if (num < 0) {
        // 多选择:当num小于0时执行以下代码块
        printf("数字为负数。\n");
    } else {
        // 双选择:当num等于0时执行以下代码块
        printf("数字为零。\n");
    }

    return 0;
}

在这个示例中,我们首先判断num是否大于0,如果是,则打印"数字为正。"。如果不是,则继续判断num是否小于0,如果是,则打印"数字为负数。"。如果num既不大于0也不小于0,那么它必定等于0,于是打印"数字为零。"。

switch case语句

当我们需要根据不同的取值来执行不同的代码块时,可以使用C语言中的switch case语句。switch case语句是一种多选择结构,它可以根据表达式的值来选择执行相应的代码块。

switch case语句的基本语法如下:

cpp 复制代码
switch (表达式)
{
    case 值1:
        // 当表达式的值等于值1时执行的代码块
        break;
    case 值2:
        // 当表达式的值等于值2时执行的代码块
        break;
    case 值3:
        // 当表达式的值等于值3时执行的代码块
        break;
    ...
    default:
        // 当表达式的值与上述所有值都不匹配时执行的代码块
        break;
}

switch关键字后面的表达式的值会与各个case后面的值进行比较,如果匹配,则执行对应的代码块。如果没有匹配的值,可以使用default关键字指定一个默认的代码块。在每个case的代码块末尾使用break关键字来终止switch语句的执行,否则会继续执行下一个case的代码块,直到遇到break或整个switch语句结束。

以下是一个简单的示例来说明switch case语句的用法:

cpp 复制代码
#include <stdio.h>

int main() {
    int day = 4;

    switch (day) {
        case 1:
            printf("Monday\n");
            break;
        case 2:
            printf("Tuesday\n");
            break;
        case 3:
            printf("Wednesday\n");
            break;
        case 4:
            printf("Thursday\n");
            break;
        case 5:
            printf("Friday\n");
            break;
        default:
            printf("Weekend\n");
            break;
    }

    return 0;
}

在这个示例中,我们根据变量day的值来选择打印相应的星期几。因为day的值为4,所以匹配到了case 4,并执行了对应的代码块,打印"Thursday"。

需要注意的是,switch case语句只能用于判断整型或字符型的值,不能用于判断浮点数、字符串等其他类型的值。每个case后面的值必须是一个常量表达式,而不能是变量。

break语句的用法

在C语言中,break语句是一种控制语句,用于终止循环或switch语句的执行。当程序执行到break语句时,会立即跳出当前的循环或switch语句,并开始执行下一条语句。

break语句通常用于以下两种情况:

1、终止循环

当我们需要在满足某个条件时退出循环时,可以使用break语句。例如,在一个for循环中,当遇到某个特定条件时,我们希望立即退出循环,可以这样写:

cpp 复制代码
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break;
    }
    printf("%d\n", i);
}

上述代码中,当i等于5时,执行break语句,跳出for循环,不再执行后续的代码块。

2、终止switch语句

在C语言中,switch语句中的每个case后面都需要使用break语句来终止该case的执行,否则程序将继续执行下一个case的代码块。例如:

cpp 复制代码
switch (num) {
    case 1:
        printf("One\n");
        break;
    case 2:
        printf("Two\n");
        break;
    default:
        printf("Other\n");
        break;
}

在上述代码中,当num的值为1时,执行case 1的代码块,并在末尾使用break语句来终止该case的执行。如果没有break语句,程序将继续执行下一个case的代码块,直到遇到break或switch语句结束。

需要注意的是,break语句只能用于循环语句或switch语句中,不能在其他地方使用。同时,当嵌套多个循环或switch语句时,break语句只会终止最内层的循环或switch语句的执行,如果需要终止外层的循环或switch语句,可以使用标签(label)和goto语句来实现。

while循环语句

在C语言中,while循环是一种常用的迭代结构,它会根据给定的条件重复执行一段代码块,直到条件不再满足为止。while循环的基本语法如下:

cpp 复制代码
while (条件)
{
    // 循环体代码块
}

在每次循环开始之前,会首先判断条件是否满足。如果条件为真(非零),则执行循环体代码块;如果条件为假(零),则跳过循环体,继续执行后续的代码。

以下是一个简单的示例来说明while循环的用法:

cpp 复制代码
#include <stdio.h>

int main() {
    int i = 0;

    while (i < 5) {
        printf("%d\n", i);
        i++;
    }

    return 0;
}

运行结果:

cpp 复制代码
0
1
2
3
4

在这个示例中,我们使用while循环打印从0到4的整数。循环的条件是i < 5,当i小于5时,执行循环体代码块,打印i的值,并将i递增1。当i等于5时,条件不再满足,循环结束。

需要注意的是,如果循环条件一开始就不满足,那么循环体代码块将不会执行,循环会被跳过。

在使用while循环时,需要注意避免无限循环的情况。如果循环条件始终为真,循环将永远不会结束,这可能会导致程序陷入死循环,造成系统资源的浪费。因此,在编写while循环时,确保循环条件能够在某个时刻变为假,以便终止循环。

do-while循环语句

在C语言中,do-while循环是一种迭代结构,它与while循环相似,但是它会先执行一次循环体代码块,然后再根据给定的条件决定是否继续执行循环。do-while循环的基本语法如下:

cpp 复制代码
do {
    // 循环体代码块
} while (条件);

与while循环不同的是,do-while循环的条件是在循环体执行之后进行判断。即使条件不满足,循环体至少会被执行一次。

以下是一个简单的示例来说明do-while循环的用法:

cpp 复制代码
#include <stdio.h>

int main() {
    int i = 0;

    do {
        printf("%d\n", i);
        i++;
    } while (i < 5);

    return 0;
}

运行结果:

cpp 复制代码
0
1
2
3
4

在这个示例中,我们使用do-while循环打印从0到4的整数。循环体代码块会先执行一次,然后再判断条件i < 5是否满足。只要条件为真,即i小于5,就会继续执行循环体,打印i的值,并将i递增1。当i等于5时,条件不再满足,循环结束。

需要注意的是,与while循环一样,确保循环条件能够在某个时刻变为假,以便终止循环。否则,如果循环条件始终为真,就会导致无限循环的情况。

do-while循环的一个常见应用是在需要至少执行一次循环体的情况下,再根据条件进行后续的迭代。

for循环语句

在C语言中,for循环是一种常用的迭代结构,它允许我们根据给定的条件重复执行一段代码块,通常用于已知循环次数的情况。for循环的基本语法如下:

cpp 复制代码
for (初始化表达式; 循环条件; 更新表达式) {
    // 循环体代码块
}

for循环由三个部分组成:

  1. 初始化表达式(Initialization Expression):在循环开始前执行一次的表达式,用于初始化循环变量或设置初始条件。
  2. 循环条件(Loop Condition):在每次循环开始之前进行判断的表达式,如果条件为真(非零),则执行循环体代码块;如果条件为假(零),则跳出循环。
  3. 更新表达式(Update Expression):在每次循环结束后执行的表达式,用于更新循环变量或改变循环条件。

以下是一个简单的示例来说明for循环的用法:

cpp 复制代码
#include <stdio.h>

int main() {
    for (int i = 0; i < 5; i++) {
        printf("%d\n", i);
    }

    return 0;
}

运行结果:

cpp 复制代码
0
1
2
3
4

在这个示例中,我们使用for循环打印从0到4的整数。初始化表达式为int i = 0,将循环变量i初始化为0。循环条件为i < 5,只要条件为真,即i小于5,就执行循环体代码块,打印i的值。更新表达式为i++,每次循环结束后将i递增1。当i等于5时,条件不再满足,循环结束。

需要注意的是,for循环中的三个部分都可以省略,但分号必须保留。例如,如果我们只想实现一个无限循环,可以这样写:

cpp 复制代码
for (;;) {
    // 无限循环体代码块
}

在这种情况下,循环条件被省略,循环将一直执行下去,除非在循环体内部使用break语句或其他方式跳出循环。

循环的嵌套

在C语言中,循环的嵌套指的是在一个循环结构内部包含另一个循环结构。通过循环的嵌套,我们可以实现更复杂的迭代控制和逻辑处理。C语言支持将任意类型的循环结构嵌套在其他循环结构内部,包括for循环、while循环和do-while循环。

下面是一个示例,展示了两个for循环的嵌套:

cpp 复制代码
#include <stdio.h>

int main() {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 2; j++) {
            printf("i = %d, j = %d\n", i, j);
        }
    }

    return 0;
}

运行结果:

cpp 复制代码
i = 0, j = 0
i = 0, j = 1
i = 1, j = 0
i = 1, j = 1
i = 2, j = 0
i = 2, j = 1

在这个示例中,我们使用两个for循环进行嵌套。外层循环控制变量i从0到2的迭代,内层循环控制变量j从0到1的迭代。内层循环的每次迭代都会完整地执行一遍,然后外层循环才会进入下一次迭代。这样,内层循环会在外层循环的每一次迭代中都被执行。

循环的嵌套可以用于处理多维数据结构(如二维数组)的遍历、实现复杂的逻辑判断和控制流程等。然而,需要注意的是,循环的嵌套可能会导致代码可读性降低和性能问题,尤其是当嵌套层数过多或循环体内部的操作较为复杂时。因此,在使用循环的嵌套时,需要仔细考虑代码结构和性能影响。

continue语句

在C语言中,continue语句是一种控制流语句,用于跳过当前循环迭代中的剩余代码,直接进入下一次迭代。当循环体内部遇到continue语句时,该语句后面的所有代码都将被忽略,直接开始下一次迭代。

continue语句通常用于在循环结构中进行条件判断,以便跳过某些不需要执行的迭代。以下是一个示例,展示了如何使用continue语句:

cpp 复制代码
#include <stdio.h>

int main() {
    for (int i = 0; i < 5; i++) {
        if (i == 2) {
            continue;
        }
        printf("%d\n", i);
    }

    return 0;
}

运行结果:

cpp 复制代码
0
1
3
4

在这个示例中,我们使用了一个for循环来迭代从0到4的整数。在每次迭代中,我们使用一个if语句来判断迭代变量i是否等于2。如果是,就执行continue语句,跳过当前迭代中的剩余代码;否则,就打印i的值。

需要注意的是,continue语句只能出现在循环结构内部,否则会导致编译错误。此外,如果嵌套了多层循环结构,在使用continue语句时需要注意,它只会跳过当前循环结构中的代码,而不是跳出所有嵌套的循环结构。

相关推荐
爱吃生蚝的于勒2 分钟前
C语言最简单的扫雷实现(解析加原码)
c语言·开发语言·学习·计算机网络·算法·游戏程序·关卡设计
Ai 编码助手5 分钟前
Go语言 实现将中文转化为拼音
开发语言·后端·golang
hummhumm7 分钟前
第 12 章 - Go语言 方法
java·开发语言·javascript·后端·python·sql·golang
hummhumm7 分钟前
第 8 章 - Go语言 数组与切片
java·开发语言·javascript·python·sql·golang·database
何曾参静谧8 分钟前
「QT」文件类 之 QDir 目录类
开发语言·qt
何曾参静谧10 分钟前
「QT」文件类 之 QTemporaryDir 临时目录类
开发语言·qt
杜杜的man12 分钟前
【go从零单排】Directories、Temporary Files and Directories目录和临时目录、临时文件
开发语言·后端·golang
qq_3089574712 分钟前
Gin 框架入门(GO)-1
开发语言·golang·gin
HUODUNYUN1 小时前
小程序免备案
网络·web安全·小程序·1024程序员节
杨荧1 小时前
【JAVA毕业设计】基于Vue和SpringBoot的宠物咖啡馆平台
java·开发语言·jvm·vue.js·spring boot·spring cloud·开源