关于C语言的控制语句

本文详细介绍了C语言中的条件判断语句(if、else、switch),以及循环执行语句(do-while、while、for)和转向语句(break、continue、goto)。重点讲解了布尔表达式在控制结构中的应用。
摘要由CSDN通过智能技术生成

C语言中主要有以下几种控制语句:

1. 条件判断语句:包括if语句和switch语句。这些语句用于在程序中根据特定条件执行不同的操作。
2. 循环执行语句:包括do-while语句、while语句和for语句。这些语句用于重复执行一段代码,直到满足特定条件为止。
3. 转向语句:包括break语句、continue语句、return语句和goto语句。这些语句用于改变程序的执行流程,例如跳出循环或跳转到程序的其他部分。

—————— —————— ——————

备注:布尔表达式

布尔表达式是逻辑表达式的一种,它使用布尔值(true 或 false)来描述一个条件。在C语言中,布尔表达式通常用于控制结构,如if语句和循环结构(如while、for和do-while)。

一个简单的布尔表达式可能是这样的:


x > 5


这个表达式检查变量x是否大于5。如果x确实大于5,表达式的结果是true;否则,结果是false。

布尔表达式可以由逻辑操作符组合而成,如逻辑与(&&)、逻辑或(||)和逻辑非(!)。

例如:

x > 5 && y < 10:检查x是否大于5且y是否小于10。
x == 5 || y != 10:检查x是否等于5或y是否不等于10。
!x == 0:检查x是否不等于0。

在这些例子中,逻辑与、逻辑或和逻辑非操作符用于组合多个条件,从而形成一个更复杂的布尔表达式。

—————— —————— —————— —————— —————— ——————

一、条件判断语句

if语句:

在C语言中,if和else是两个关键字,它们用于在程序中创建条件分支。下面是关于if和else的一些基本信息:

if 语句:if语句用于测试某个条件,如果该条件为真(非零),则执行一段代码。

if (condition) {

    // 代码块

}

else 语句:

else语句与if语句一起使用,如果if语句中的条件为假(0),则执行else块中的代码。

if (condition) {

    // 代码块1

} else {

    // 代码块2

}

else if 语句:

您还可以使用else if来测试另一个条件,如果第一个条件为假。

if (condition1) {

    // 代码块1

} else if (condition2) {

    // 代码块2

} else {

    // 默认代码块

}

嵌套 if-else:

您可以在一个if-else结构中嵌套另一个if-else结构。

注意:在C语言中,不需要使用括号来包围条件表达式或语句块。然而,为了增加可读性,许多程序员还是使用括号。此外,虽然不推荐这样做,但可以在if或else之后只放置一条语句,并且可以省略大括号。但是,如果有多条语句需要执行,则必须使用大括号将它们括起来。

示例:以下是一个简单的示例,演示了如何使用if-else结构。

#include <stdio.h>

int main() {

    int a = 10;

    int b = 20;

    int max;

    if (a > b) {

        max = a;

    } else {

        max = b;

    }

    printf("最大的数是: %d\n", max);

    return 0;

}

这个程序会找出变量a和b中的最大值,并打印出来。

switch语句:

switch语句在C语言中是一个非常有用的控制结构,它允许基于不同的条件执行不同的代码块。其基本结构如下:
switch (expression) {
    case value1:
        // 代码块1
        break;
    case value2:
        // 代码块2
        break;
    ...
    default:
        // 默认代码块
}

expression:这是一个被评估的值,通常是一个变量或表达式的结果。
case:每个case标签后跟一个值。如果expression的值与某个case标签的值匹配,那么与该case标签关联的代码块将被执行。
break:这个关键字用于结束当前的case代码块,并跳出switch语句。如果不使用break,程序将继续执行下一个case的代码块,这被称为“贯穿”(fall-through)。
default:这是可选的,用于指定当没有任何case标签与expression的值匹配时应执行的代码块。

使用switch语句的一个常见场景是处理枚举值或整数。例如:
#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;
        case 4:
            printf("Thursday\n");
            break;
        case 5:
            printf("Friday\n");
            break;
        case 6:
            printf("Saturday\n");
            break;
        case 7:
            printf("Sunday\n");
            break;
        default:
            printf("Invalid day\n");
    }
    return 0;
}
在上面的示例中,根据变量day的值,程序将打印出相应的星期几。如果day的值不在1到7之间,将打印“Invalid day”。

—————— —————— —————— —————— —————— ——————

二、循环执行语句

for语句:

for语句在C语言中是一个控制结构,用于重复执行一段代码,直到满足某个条件为止。其基本结构如下:
for (initialization; condition; update) {
    // 代码块
}

initialization:这部分通常用于初始化循环控制变量。它只在循环开始时执行一次。
condition:这是一个布尔表达式,在每次循环迭代开始之前被评估。如果这个表达式的结果为真(非零),则执行代码块;如果为假(0),则停止循环。
update:这部分通常用于在每次循环迭代结束后更新循环控制变量的值。
代码块:这是每次循环迭代时要执行的代码。

下面是一个简单的示例,使用for循环打印数字1到5:
#include <stdio.h>

int main() {
    int i;
    for (i = 1; i <= 5; i++) {
        printf("%d\n", i);
    }
    return 0;
}
在这个例子中,i是循环控制变量,初始化为1。在每次循环迭代开始之前,检查i是否小于或等于5(这是条件)。如果是,则打印i的值,然后i增加1(这是更新部分)。这个过程重复进行,直到i的值超过5,此时条件为假,循环停止。

while语句:

while语句在C语言中是一个控制结构,用于重复执行一段代码,直到满足某个条件为止。其基本结构如下:
while (condition) {
    // 代码块
}

condition:这是一个布尔表达式,在每次循环迭代开始之前被评估。如果这个表达式的结果为真(非零),则执行代码块;如果为假(0),则停止循环。
代码块:这是每次循环迭代时要执行的代码。

下面是一个简单的示例,使用while循环打印数字1到5:
#include <stdio.h>

int main() {
    int i = 1;
    while (i <= 5) {
        printf("%d\n", i);
        i++;
    }
    return 0;
}
在这个例子中,i是循环控制变量,初始化为1。在每次循环迭代开始之前,检查i是否小于或等于5(这是条件)。如果是,则打印i的值,然后i增加1(这是在代码块中完成的更新)。这个过程重复进行,直到i的值超过5,此时条件为假,循环停止。

do-while语句:

do-while语句在C语言中也是一个控制结构,用于重复执行一段代码,直到满足某个条件为止。其基本结构如下:
do {
    // 代码块
} while (condition);

code block:这是要重复执行的代码块。
condition:这是一个布尔表达式,在每次循环迭代结束时被评估。如果这个表达式的结果为真(非零),则继续执行代码块;如果为假(0),则停止循环。

while和do-while的区别:

与while语句不同,do-while语句会先执行一次代码块,然后再检查条件。这意味着无论条件最初是否为真,代码块至少会被执行一次。

下面是一个简单的示例,使用do-while循环打印数字1到5:
#include <stdio.h>

int main() {
    int i = 1;
    do {
        printf("%d\n", i);
        i++;
    } while (i <= 5);
    return 0;
}
在这个例子中,i是循环控制变量,初始化为1。首先,代码块会执行,打印i的值并将i增加1。然后,检查条件i <= 5。如果为真,则再次执行代码块。这个过程会重复进行,直到i的值超过5,此时条件为假,循环停止。

—————— —————— —————— —————— —————— ——————

三、转向语句

break语句:

在C语言中,break语句用于提前结束当前循环或switch语句,并跳出该语句块。这意味着一旦遇到break语句,程序将立即跳出循环或switch语句,不再继续执行后续的迭代或case分支。

1. 在循环中使用

当在循环中使用break时,如果满足某个条件,它可以用来提前结束循环。
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break;  // 当i等于5时,结束循环
    }
    printf("%d\n", i);
}
在上面的例子中,当i等于5时,break语句将结束循环,程序将停止执行。

2. 在switch语句中使用

在switch语句中,break可以用来确保程序只执行一个case分支,然后跳出switch语句。如果没有break,程序将继续执行后续的case分支,直到遇到break或switch语句结束。
int value = 2;
switch (value) {
    case 1:
        printf("Value is 1\n");
        break;
    case 2:
        printf("Value is 2\n");
        break;  // 如果没有这一行,程序将继续执行下一个case分支
    case 3:
        printf("Value is 3\n");
        break;
    default:
        printf("Value is neither 1, 2 nor 3\n");
}
在上面的例子中,如果value等于2,程序将打印"Value is 2",然后由于break语句,它将跳出switch语句,不再执行其他case分支。

总的来说,break语句在C语言中用于控制程序的流程,使程序能够在满足特定条件时提前退出循环或switch语句。

continue语句:

在C语言中,continue语句用于控制循环的流程,但它的作用与break语句略有不同。当在循环中使用continue语句时,它会结束当前迭代,并直接开始下一次迭代,跳过循环体中剩余的代码。

 (在循环中使用

当在循环中使用continue时,如果满足某个条件,它可以用来跳过当前迭代。
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        continue;  // 当i等于5时,跳过当前迭代
    }
    printf("%d\n", i);
}
在上面的例子中,当i等于5时,continue语句将结束当前迭代,并直接开始下一次迭代。因此,虽然循环会执行10次,但只有0到4和6到9这8个数字会被打印出来。

continue与break语句的区别:

continue和break的主要区别在于它们对循环的影响:

break用于完全结束循环,而continue仅结束当前迭代。
break会立即跳出循环,而continue会继续执行下一个迭代。


( 注意事项

使用continue时需要注意以下几点:

不要在循环体外部使用continue,因为它是专门为循环设计的。
在嵌套循环中使用continue时,要注意它只会结束最内层的循环。
使用continue时要确保不会导致意外的无限循环或逻辑错误。

总的来说,continue语句在C语言中用于控制循环的流程,使程序能够跳过某些迭代,继续执行下一次迭代。它常用于提前结束当前迭代,并继续执行后续迭代的情况。

goto语句:

goto语句在C语言中是一种无条件转移语句,用于将程序的执行跳转到指定的标签位置。它通常用于在程序中实现特定的流程控制,但在使用时需要谨慎,以避免导致程序结构混乱和难以维护。

1. 语法和使用

goto语句的语法如下:


goto 语句标号;


其中,语句标号是一个有效的标识符,后面加上一个冒号,表示该标签的位置。执行goto语句后,程序将跳转到该标签处并继续执行其后的语句。

例如:
#include <stdio.h>

int main() {
    int i = 0;
loop:
    printf("i = %d\n", i);
    i++;
    if (i < 10) {
        goto loop;  // 跳转到loop标签处继续循环
    }
    return 0;
}
在上面的例子中,程序将无限循环打印数字0到9,直到程序被手动终止。goto语句用于跳转到loop标签处,使循环继续执行。

2. 注意事项

尽管goto语句可以在某些情况下简化代码,但过度使用或不恰当使用会导致程序结构混乱和难以维护。因此,在实际编程中,建议尽可能少用或避免使用goto语句。在使用时,应确保以下几点:

(1. goto语句只能跳转到同一函数内的标签位置。
(2. 避免在循环或条件语句内部使用goto语句,以免导致逻辑错误或无限循环。
在使用goto语句时,应确保程序的结构清晰易懂,易于维护。
(3. 在需要退出多层嵌套循环或条件语句时,可以考虑使用其他结构(如返回值或异常)来替代goto语句。

—————— —————— —————— —————— —————— ——————

总结:

控制语句在C语言中起着至关重要的作用,它们用于控制程序的流程和执行顺序,从而实现各种复杂的程序结构和算法。

  • 34
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值