白骑士的C语言教学基础篇 1.3 控制流

系列目录

上一篇:白骑士的C语言教学基础篇 1.2 C语言基础语法

在这一节中,我们将介绍C语言中的控制流结构,包括条件语句、循环语句以及循环控制语句。这些结构允许我们根据不同的条件执行不同的代码块,从而使程序更具灵活性和功能性。

条件语句(if, else, switch)

条件语句用于根据表达式的结果执行不同的代码块。C语言中的条件语句包括 'if'、'else if'、'else' 和 'switch'。

if 语句

'if'语句用于判断表达式是否为真,如果为真,则执行相应的代码块结构如下:

cpp 复制代码
if (condition) {
    // 如果condition为真,执行此代码块
}

例如:

cpp 复制代码
int a = 10;

if (a > 5) {
    printf("a is greater than 5\n");
}

if-else 语句

'if-else' 语句在 'if' 条件为假时执行 'else' 代码块,结构如下:

cpp 复制代码
if (condition) {
    // 如果condition为真,执行此代码块
} 

else {
    // 如果condition为假,执行此代码块
}

例如:

cpp 复制代码
int a = 10;

if (a > 15) {
    printf("a is greater than 15\n");
} 

else {
    printf("a is not greater than 15\n");
}

if-else if-else 语句

'if-else if-else' 语句用于检查多个条件,并执行相应的代码块,结构如下:

cpp 复制代码
if (condition1) {
    // 如果condition1为真,执行此代码块
} 

else if (condition2) {
    // 如果condition2为真,执行此代码块
} 

else {
    // 如果以上条件都为假,执行此代码块
}

例如:

cpp 复制代码
int a = 10;

if (a > 15) {
    printf("a is greater than 15\n");
} 

else if (a > 5) {
    printf("a is greater than 5 but not greater than 15\n");
} 

else {
    printf("a is not greater than 5\n");
}

switch 语句

'switch' 语句用于根据表达式的值执行不同的代码块,结构如下:

cpp 复制代码
switch (expression) {
    case value1:
        // 如果expression等于value1,执行此代码块
        break;

    case value2:
        // 如果expression等于value2,执行此代码块
        break;

    // 可以有多个case分支

    default:
        // 如果expression不等于任何case的值,执行此代码块
}

例如:

cpp 复制代码
int a = 2;

switch (a) {
    case 1:
        printf("a is 1\n");
        
        break;

    case 2:
        printf("a is 2\n");

        break;

    case 3:
        printf("a is 3\n");

        break;

    default:
        printf("a is not 1, 2, or 3\n");
}

循环语句(for, while, do-while)

循环语句用于重复执行代码块,直到条件不再满足。C语言中的循环语句包括 'for'、'while'和'do-while'。

for 循环

'for' 循环用于执行一个初始化语句,然后检查条件,如果条件为真则执行循环体,最后执行更新语句,结构如下:

cpp 复制代码
for (initialization; condition; update) {
    // 循环体
}

例如:

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

while 循环

'while' 循环在每次迭代前检查条件,如果条件为真则执行循环体,结构如下:

cpp 复制代码
while (condition) {
    // 循环体
}

例如:

cpp 复制代码
int i = 0;

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

    i++;
}

do-while 循环

'do-while' 循环在每次迭代后检查条件,因此循环体至少执行一次,结构如下:

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

例如:

cpp 复制代码
int i = 0;

do {
    printf("i = %d\n", i);

    i++;
} 
while (i < 5);

循环控制(break, continue)

循环控制语句用于改变循环的执行流程。C语言中的循环控制语句包括 'break' 和 'continue'。

break 语句

'break' 语句用于立即退出循环,不再执行循环体中的剩余语句,例如:

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

输出:

bash 复制代码
i = 0
i = 1
i = 2
i = 3
i = 4

continue 语句

'continue' 语句用于跳过当前迭代中的剩余语句,并开始下一次迭代,例如:

cpp 复制代码
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        continue;
    }

    printf("i = %d\n", i);
}

输出:

bash 复制代码
i = 0
i = 1
i = 2
i = 3
i = 4
i = 6
i = 7
i = 8
i = 9

示例代码

以下是一个综合示例,展示了条件语句、循环语句和循环控制语句的使用:

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


int main() {
    int num, i;

    printf("Enter a number: ");

    scanf("%d", &num);

    // 使用if-else语句判断奇偶性
    if (num % 2 == 0) {
        printf("%d is even.\n", num);
    } 

    else {
        printf("%d is odd.\n", num);
    }

    // 使用for循环计算阶乘
    int factorial = 1;

    for (i = 1; i <= num; i++) {
        factorial *= i;
    }

    printf("Factorial of %d is %d.\n", num, factorial);

    // 使用while循环打印数字
    i = 1;

    while (i <= num) {
        printf("%d ", i);

        i++;
    }

    printf("\n");

    // 使用do-while循环打印数字
    i = 1;

    do {
        printf("%d ", i);

        i++;
    } 
    while (i <= num);

    printf("\n");

    // 使用break和continue控制循环
    printf("Numbers from 1 to 10, skipping 5:\n");

    for (i = 1; i <= 10; i++) {
        if (i == 5) {
            continue; // 跳过5
        }

        printf("%d ", i);
    }

    printf("\n");

    return 0;
}

总结

通过本节的学习,我们已经了解了C语言中的条件语句、循环语句以及循环控制语句的基本用法。这些控制流结构是编写灵活和高效程序的基础。在接下来的章节中,我们将继续探讨C语言的函数和数据结构,进一步提升编程能力。

下一篇:白骑士的C语言教学基础篇 1.4 函数与递归

相关推荐
十年一梦实验室1 分钟前
【C++】相机标定源码笔记- RGB 相机与 ToF 深度传感器校准类
开发语言·c++·笔记·数码相机·计算机视觉
Tech Synapse5 分钟前
Java循环创建对象内存溢出怎么解决
java·开发语言·jvm
蜉蝣之翼❉10 分钟前
c++ 简单线程池
开发语言·c++
WHYBIGDATA21 分钟前
Scala中高级的函数编程
开发语言·后端·scala
知识分享小能手27 分钟前
从新手到高手:Scala函数式编程完全指南,Scala 访问修饰符(6)
大数据·开发语言·后端·python·数据分析·scala·函数式编程
点云侠37 分钟前
matlab 干涉图仿真
开发语言·人工智能·算法·计算机视觉·matlab
2401_8584255543 分钟前
Batch文件中使用tasklist命令:深入掌握进程监控与分析
开发语言·batch
Eiceblue43 分钟前
用Python轻松转换Markdown文件为PDF文档
开发语言·vscode·python·pdf·word
杰哥在此44 分钟前
Java面试题:解释跨站脚本攻击(XSS)的原理,并讨论如何防范
java·开发语言·面试·编程·xss
nice肥牛1 小时前
Python爬取国家医保平台公开数据
开发语言·爬虫·python·国家医保平台