C语言控制语句共有几种?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 C语言 正文

条件语句(分支语句)

这类语句根据条件的真假,决定执行哪一段代码。

a) if 语句

这是最基本的条件语句,用于在某个条件为真时执行一段代码。

形式:

if (表达式) {
    // 如果表达式为真,则执行这里的代码
}

示例:

if (score > 60) {
    printf("及格了!\n");
}

b) if-else 语句

if 的条件为真时,执行 if 块的代码;否则,执行 else 块的代码。

形式:

if (表达式) {
    // 如果表达式为真,执行这里
} else {
    // 如果表达式为假,执行这里
}

示例:

if (score > 60) {
    printf("及格了!\n");
} else {
    printf("不及格,\n");
}

c) if-else if-else 语句(多分支语句)

用于处理多个互斥的条件,从上到下判断,一旦某个条件为真,就执行对应的代码块,并跳过后续的判断。

形式:

if (表达式1) {
    // 如果表达式1为真,执行这里
} else if (表达式2) {
    // 如果表达式1为假且表达式2为真,执行这里
} else {
    // 如果所有表达式都为假,执行这里
}

示例:

if (score >= 90) {
    printf("优秀\n");
} else if (score >= 80) {
    printf("良好\n");
} else if (score >= 60) {
    printf("及格\n");
} else {
    printf("不及格\n");
}

d) switch 语句

switch 语句是一个多分支选择语句,它根据一个变量的值,跳转到对应的 case 标签处执行,它通常用于处理离散的、固定的选项。

形式:

switch (表达式) {
    case 常量1:
        // 如果表达式的值等于常量1,执行这里的代码
        break; // 跳出switch语句,非常重要!
    case 常量2:
        // 如果表达式的值等于常量2,执行这里的代码
        break;
    default:
        // 如果表达式的值不匹配任何一个case,执行这里的代码
        break;
}

示例:

char grade = 'B';
switch (grade) {
    case 'A':
        printf("成绩优秀\n");
        break;
    case 'B':
        printf("成绩良好\n");
        break;
    case 'C':
        printf("成绩及格\n");
        break;
    default:
        printf("成绩不及格\n");
        break;
}

注意switch 的表达式必须是整型(int)、字符型(char)或枚举类型,每个 case 后的 break 语句是必须的,否则会发生“case穿透”,即程序会继续执行下一个 case 的代码。


循环语句

这类语句用于重复执行某一段代码,直到循环条件不满足为止。

a) while 循环(当型循环)

先判断条件,如果条件为真,则进入循环体执行代码,条件可能从一开始就不为真,导致循环体一次也不执行。

形式:

while (表达式) {
    // 只要表达式为真,就重复执行这里的代码
}

示例:

int i = 0;
while (i < 5) {
    printf("i = %d\n", i);
    i++; // 别忘了更新循环变量,否则会死循环
}

b) do-while 循环(直到型循环)

先执行一次循环体,然后再判断条件,如果条件为真,则继续循环。保证循环体至少执行一次

形式:

do {
    // 先执行这里的代码
} while (表达式); // 注意这里的分号不能少

示例:

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

c) for 循环

for 循环是最常用、功能最强大的循环结构,它通常用于循环次数已知的情况,它将循环的初始化、条件和更新操作整合在一行。

形式:

for (初始化表达式; 循环条件表达式; 更新表达式) {
    // 只要循环条件为真,就重复执行这里的代码
}

示例:

// 从0打印到4
for (int i = 0; i < 5; i++) {
    printf("i = %d\n", i);
}

说明

  • 初始化表达式:只在循环开始前执行一次。
  • 循环条件表达式:每次循环开始前都会被判断,如果为假,则循环结束。
  • 更新表达式:每次循环体执行完毕后都会被执行。

跳转语句

这类语句用于无条件地改变程序的执行流程,使程序从当前位置跳转到其他位置。

a) break 语句

break 语句主要用于两个地方:

  1. switch 语句中:用于终止 switch 语句的执行,防止 case 穿透。
  2. 在循环语句中(for, while, do-while:用于立即终止整个循环的执行,并跳转到循环体后面的第一条语句。

示例(在循环中):

for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break; // 当i等于5时,循环立即终止
    }
    printf("%d ", i);
}
// 输出: 0 1 2 3 4

b) continue 语句

continue 语句只能在循环语句(for, while, do-while)内部使用,它的作用是跳过本次循环的剩余部分,直接进入下一次循环的判断。

示例:

for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        continue; // 如果i是偶数,跳过下面的printf,直接进入下一次i++
    }
    printf("%d ", i);
}
// 输出: 1 3 5 7 9

c) goto 语句

goto 是一个无条件跳转语句,它可以将程序的控制权直接跳转到由标记的语句。在结构化编程中,强烈建议避免使用 goto,因为它会使代码逻辑混乱,难以维护,但在某些特定场景(如从深层嵌套循环中跳出),它可能会显得简洁。

形式:

goto 标签;
// ... 其他代码 ...
标签:
// ... 跳转到这里执行 ...

示例:

#include <stdio.h>
int main() {
    int i = 0;
    loop_start:
    printf("%d ", i);
    i++;
    if (i < 5) {
        goto loop_start;
    }
    // 输出: 0 1 2 3 4
    return 0;
}

注意goto 不能跳转到另一个函数内部,也不能跳过变量的初始化语句。


总结表格

类别 语句名称 作用 主要特点
条件语句 if, if-else, if-else if-else 根据条件选择执行路径 处理逻辑分支,条件判断
switch 根据变量的值选择执行路径 处理多分支离散选项,需配合 break
循环语句 while 当条件为真时,重复执行 先判断,后执行,可能一次不执行
do-while 重复执行,直到条件为假 先执行,后判断,至少执行一次
for 按指定次数重复执行 初始化、条件、更新整合在一行,最常用
跳转语句 break 终止 switch 或循环 立即跳出当前结构
continue 跳过本次循环剩余部分 立即进入下一次循环
goto 无条件跳转到标签处 强烈避免使用,破坏代码结构

C语言的控制语句总共是 9种,可以归为上述三大类,理解并熟练运用这些控制语句是编写C程序的基础。

-- 展开阅读全文 --
头像
现代编程语言为何都基于C语言?
« 上一篇 今天
织梦更新主页html时如何操作?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]