C 语言学习记录:选择语句与循环语句

​        在 C 语言的学习进程中,选择语句和循环语句是构建程序逻辑的重要部分。作为结构化编程语言,C 语言主要包含顺序结构、选择结构和循环结构,其中选择语句和循环语句分别控制着程序的分支走向和重复执行,对实现复杂的业务逻辑起着关键作用。接下来,让我们深入学习这两类语句。

一、选择语句

        在生活中,我们时刻面临着各种抉择,比如是选择去清华、北大还是其他地方深造,是否找朋友玩耍,以及选择及时行乐还是克勤克俭的生活方式等。在 C 语言里,也有相应的机制来处理这些类似的判断和选择,这就是选择语句。C 语言中有两种主要的选择语句结构:if-else结构和switch-case结构。

1.1 if-else 结构

if-else结构用于根据条件的真假来执行不同的代码块。下面是一个根据学生考试分数进行评级的示例:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
    while (1) {
        // 考试分数[90-100] 优秀
        // 考试分数[80-90)  良好
        // 考试分数[70-80)  中等
        // 考试分数[60-70)  及格
        // 考试分数[0-60)   孩子还需努力!
        int score = 0;
        printf("请输入学生的考试成绩:\n");
        scanf("%d", &score);
        if (score >= 90 && score <= 100) {
            printf("优秀!\n");
        }
        else if (score >= 80 && score < 90) {
            printf("良好!\n");
        }
        else if (score >= 70 && score < 80) {
            printf("中等!\n");
        }
        else if (score >= 60 && score < 70) {
            printf("及格!\n");
        }
        else {
            printf("孩子还需努力!\n");
        }
    }
    return 0;
}

        在这段代码中,通过if-else if的链式结构,依次判断输入的分数落在哪个区间,从而输出相应的评级。如果分数在 90 到 100 之间,输出 “优秀”;在 80 到 90 之间,输出 “良好”,以此类推。最后的else块则处理所有其他不符合前面条件的情况,即分数小于 60 时,输出 “孩子还需努力!”。

1.2 switch-case 结构

switch-case结构适用于处理离散的条件判断。例如,根据用户输入的数字来执行不同的电脑操作:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
    while (1) {
        // 碰到:离散条件情况
        // 操作电脑:0-关机  1-重启  2-睡眠  3-锁定
        // [0-5] [6-10] [11-15]  [16-20] 适用:if-elseif
        printf("请输入对电脑的操作:\n");
        printf("0 - 关机  1 - 重启  2 - 睡眠  3 - 锁定\n");
        int i = -1;
        scanf("%d", &i);
        // switch() 中,只能放置变量的值
        switch (i) {
        case 0:
            printf("关机\n");
            // 不能省略:一旦省略,将导致switch出现穿透的情况
            break;
        case 1:
            printf("重启\n");
            break;
        case 2:
            printf("睡眠\n");
            break;
        case 3:
            printf("锁定\n");
            break;
        default:
            printf("错误操作\n");
            break;
        }
    }
    return 0;
}

        在这个例子中,switch语句根据变量i的值进行判断。如果i为 0,执行 “关机” 操作并通过break语句跳出switch结构;如果i为 1,执行 “重启” 操作并跳出,以此类推。default分支用于处理i为其他值的情况,即用户输入了不在 0 到 3 范围内的数字时,输出 “错误操作”。需要注意的是,break语句在switch-case结构中非常重要,如果省略,程序会发生 “穿透” 现象,即继续执行下一个case分支的代码,这可能导致不符合预期的结果。

1.3 选择语句总结

  • 适用场景:在多分支语句中,当判断条件是值调节(即离散的具体值)时,适合使用switch语句;当判断条件是连续范围时,更适合使用if...else语句。例如,判断一个月份属于哪个季节,由于月份是离散的值,可以使用switch语句;而判断一个人的年龄范围属于哪个阶段,由于年龄是连续的范围,使用if...else语句更为合适。

二、循环语句

在生活中,我们经常会做一些规律性、重复性的事情,比如每日更新博客、日复一日刷 B 站等。在 C 语言中,循环语句就是用来处理这类重复执行的任务。C 语言提供了三种循环方式:先验循环for循环和while循环,以及后验循环do-while循环。

2.1 for 循环

for循环通常用于已知循环次数的场景,其语法结构为for (初始变量; 判断条件 ; 变量的改变) {循环体}。下面是一个简单的示例,用于打印从 1 到 5 的表白信息:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
    for (int i = 1; i <= 5; i++) {
        printf("@#*,俺第%d次老虎油!\n", i);
    }
    // 练习:打印 从1到100的所有数
    /*for (int i = 1; i <= 100; i++) {
        printf("i=%d\n", i);
    }*/
    // 问题:打印 [1-100]期间的所有的偶数
    for (int i = 1; i <= 100; i++) {
        // if - 如果
        if (i % 2 == 0) {
            printf("偶数=%d\n", i);
        }
    }
    return 0;
}

在这个代码中,首先定义了一个for循环,初始变量i为 1,判断条件是i小于等于 5,每次循环结束后i自增 1。在循环体中,打印出相应的表白信息。后面还展示了如何打印从 1 到 100 的所有数,以及如何通过if语句筛选出 1 到 100 之间的所有偶数并打印。

2.2 while 循环

while循环也是先验循环,即先判断条件,再执行循环体。其语法结构为while (判断条件) {循环体}。下面是一个与前面for循环功能相同的while循环示例:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
    int i = 1;
    while (i <= 5) {
        printf("@#*,俺第%d次老虎油!\n", i);
        i++;
    }
    return 0;
}

在这个while循环中,初始变量i为 1,只要i小于等于 5,就会执行循环体中的打印语句,并在每次循环结束后将i自增 1,直到i大于 5 时,循环结束。

2.3 do-while 循环

do-while循环是后验循环,即先执行一次循环体,再判断条件。其语法结构为do {循环体} while (判断条件);。以下是一个示例:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
    int i = 1;
    do {
        printf("@#*,我来养你!\n");
        i++;
    } while (i <= 5);
    return 0;
}

在这个do-while循环中,首先执行一次循环体,打印出 “@#*,我来养你!”,然后判断i是否小于等于 5,如果是,则继续执行循环体,否则结束循环。需要注意的是,do-while循环至少会执行一次循环体,这是它与for循环和while循环的重要区别。

2.4 特殊情况:死循环

死循环是指一直执行某一个事情的循环。在 C 语言中,如果作为条件:0 代表False,非 0 代表True。以下是两种常见的死循环写法:

while (1) {
    printf("@#*,我喜欢!\n");
}
for (;;) {
    printf("@#*,我来养你!");
}

while循环中,条件始终为 1(即True),所以会一直执行循环体;在for循环中,省略了初始变量、判断条件和变量的改变,同样会导致循环永远不会结束。在实际编程中,死循环需要谨慎使用,通常用于一些需要持续运行的程序,如服务器程序等,但也需要提供相应的退出机制,以避免程序无法停止。

2.5 中止循环

在循环执行过程中,有时需要提前结束循环或者跳过某次循环,这就用到了continuebreak语句。

  • continue 语句continue语句用于结束当次循环,进入到下一次循环。例如,每天向女朋友表白一次,但偶数天不去,奇数天去表白的示例:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
    for (int i = 3; i <= 100; i++) {
        if (i % 2 == 0) {
            // 跳出当前循环,进入到下一次循环
            continue;
        }
        printf("@#*,第%d次表白:我喜欢你!\n", i);
    }
    return 0;
}

在这个代码中,当i为偶数时,执行continue语句,跳过本次循环的剩余部分,直接进入下一次循环,即不执行表白语句;当i为奇数时,正常执行表白语句。

  • break 语句break语句用于结束整个循环,进入到循环以外的代码。例如,在表白的例子中,假设一辈子只活到 100 岁,并且在第 94 次表白后变心,结束循环:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
    for (int i = 3; i <= 100; i++) {
        if (i % 2 == 0) {
            // 跳出当前循环,进入到下一次循环
            continue;
        }
        if (i == 94) {
            // 结束循环,代码进入到循环以外的代码
            break;
        }
        printf("@#*,第%d次表白:我喜欢你!\n", i);
    }
    printf("循环结束后,继续执行其它代码!");
    return 0;
}

在这个代码中,当i等于 94 时,执行break语句,立即结束整个for循环,然后执行循环后面的打印语句 “循环结束后,继续执行其它代码!”。

通过对选择语句和循环语句的学习,我们能够更加灵活地控制程序的执行流程,实现各种复杂的逻辑功能。在实际编程中,需要根据具体的需求选择合适的语句结构,以提高程序的效率和可读性。希望这篇学习记录能对正在学习 C 语言的小伙伴们有所帮助,如有错误或不足之处,欢迎大家在评论区指正交流!​

#算法##选择##C语言#
C语言学习记录 文章被收录于专栏

C语言的初步学习

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务