C语言基础语法 2.4 控制结构(条件语句、循环语句)

在C语言中,控制结构是程序的核心部分,它们决定了程序的执行流程。控制结构主要分为条件语句和循环语句。本文将详细介绍这两种控制结构,包括它们的语法、优缺点、注意事项以及丰富的示例代码。

1. 条件语句

条件语句用于根据特定条件的真假来决定程序的执行路径。C语言中主要有以下几种条件语句:

1.1 if 语句

if 语句是最基本的条件语句,用于判断一个条件是否为真。

语法

if (condition) {
    // 当 condition 为真时执行的代码
}

示例

#include <stdio.h>

int main() {
    int a = 10;
    if (a > 5) {
        printf("a is greater than 5\n");
    }
    return 0;
}

优点

  • 简单易懂,适合处理简单的条件判断。

缺点

  • 只能处理单一条件,复杂条件需要嵌套使用。

注意事项

  • 条件表达式必须返回布尔值(0或非0),非0表示真,0表示假。

1.2 if-else 语句

if-else 语句用于在条件为真和假时执行不同的代码块。

语法

if (condition) {
    // 当 condition 为真时执行的代码
} else {
    // 当 condition 为假时执行的代码
}

示例

#include <stdio.h>

int main() {
    int a = 3;
    if (a > 5) {
        printf("a is greater than 5\n");
    } else {
        printf("a is not greater than 5\n");
    }
    return 0;
}

优点

  • 可以处理两种情况,逻辑清晰。

缺点

  • 代码可读性在多层嵌套时会降低。

注意事项

  • else 语句是可选的,可以单独使用 if 语句。

1.3 else if 语句

else if 语句用于处理多个条件。

语法

if (condition1) {
    // 当 condition1 为真时执行的代码
} else if (condition2) {
    // 当 condition2 为真时执行的代码
} else {
    // 当所有条件都为假时执行的代码
}

示例

#include <stdio.h>

int main() {
    int a = 7;
    if (a > 10) {
        printf("a is greater than 10\n");
    } else if (a > 5) {
        printf("a is greater than 5 but less than or equal to 10\n");
    } else {
        printf("a is 5 or less\n");
    }
    return 0;
}

优点

  • 可以处理多个条件,逻辑清晰。

缺点

  • 嵌套过多会导致代码复杂,降低可读性。

注意事项

  • 确保条件的顺序合理,以避免逻辑错误。

1.4 switch 语句

switch 语句用于根据变量的值选择执行的代码块。

语法

switch (expression) {
    case constant1:
        // 当 expression 等于 constant1 时执行的代码
        break;
    case constant2:
        // 当 expression 等于 constant2 时执行的代码
        break;
    default:
        // 当 expression 不等于任何常量时执行的代码
}

示例

#include <stdio.h>

int main() {
    int day = 3;
    switch (day) {
        case 1:
            printf("Monday\n");
            break;
        case 2:
            printf("Tuesday\n");
            break;
        case 3:
            printf("Wednesday\n");
            break;
        default:
            printf("Invalid day\n");
    }
    return 0;
}

优点

  • 适合处理多个离散值的情况,代码简洁。

缺点

  • 只能用于整型或字符型,不能处理范围条件。

注意事项

  • 每个 case 语句后面通常需要 break,以防止“贯穿”到下一个 case

2. 循环语句

循环语句用于重复执行一段代码,直到满足特定条件。C语言中主要有以下几种循环语句:

2.1 for 循环

for 循环用于在已知循环次数的情况下重复执行代码。

语法

for (initialization; condition; increment) {
    // 循环体
}

示例

#include <stdio.h>

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

优点

  • 结构清晰,适合已知循环次数的情况。

缺点

  • 不适合处理未知次数的循环。

注意事项

  • 确保循环条件能够在某个时刻变为假,以避免无限循环。

2.2 while 循环

while 循环用于在条件为真时重复执行代码。

语法

while (condition) {
    // 循环体
}

示例

#include <stdio.h>

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

优点

  • 适合处理未知次数的循环。

缺点

  • 如果条件永远为真,可能导致无限循环。

注意事项

  • 确保在循环体内有条件改变的代码。

2.3 do-while 循环

do-while 循环与 while 循环类似,但它至少会执行一次循环体。

语法

do {
    // 循环体
} while (condition);

示例

#include <stdio.h>

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

优点

  • 确保循环体至少执行一次。

缺点

  • 可能导致不必要的执行,尤其是在条件一开始就为假时。

注意事项

  • do-while 循环的条件在循环体之后检查。

总结

控制结构是C语言编程的基础,合理使用条件语句和循环语句可以使程序逻辑清晰、结构合理。在使用这些控制结构时,开发者应注意代码的可读性和维护性,避免过度嵌套和复杂的逻辑判断。通过不断实践和总结,开发者可以熟练掌握这些控制结构,为编写高效、优雅的C语言程序打下坚实的基础。