【C语言】循环结构-while循环与for循环

while

基本语法及其执行流程

在C语言中,while是一种循环结构,用于重复执行一段代码块,直到给定的条件不再满足。while 循环的基本语法如下:

while (condition) {
    // 循环体
    // 这里的代码会重复执行,直到条件不再满足
}

在while循环中,condition是一个逻辑表达式,它决定了循环是否继续执行。如果 condition 的值一开始就是假,那么循环体中的代码将永远不会执行。

while循环的执行流程如下:

1. 计算并判断小括号里表达式condition的值。若值为真(非零),则进入循环体执行其中的代码。
2. 执行循环体内的代码。
3. 再次计算 `condition` 表达式的值。如果仍然为真,则再次执行循环体内的代码。这个过程会一直重复,直到 `condition` 表达式的值为假(零)。
4. 当 `condition` 的值为假时,循环结束,程序继续执行循环体之后的代码。

例:

#include <stdio.h>

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

在这个例子中,while 循环会重复执行 printf 语句,直到 i 的值不再小于 5。在每次循环迭代时,i 的值会递增,直到达到 5,循环结束。

补充

如何在小括号里条件满足的情况下就跳出这个循环?

举例-示意版

要在 while 循环中的条件满足时跳出循环,可以使用 break 语句。break 语句可以立即终止当前的循环,使程序跳出循环体,然后继续执行循环之后的代码。例:

#include <stdio.h>

int main() {
    int i = 0;
    
    while (1) {
        printf("i is %d\n", i);
        i++;
        
        if (i == 5) {
            break; // 当 i 等于 5 时跳出循环
        }
    }
    
    return 0;
}

在这个例子中,使用 while (1) 来创建一个无限循环,然后在循环体内判断 i 是否等于 5。当 i 等于 5 时,使用 break 语句跳出循环。这样,即使 while 循环的条件始终为真,当满足 if 语句中的条件时,也可以跳出循环。

举例-应用版

当你希望从用户输入的数据中找到特定值时,可以使用 `while` 循环来不断接受输入,并在找到目标值时跳出循环。如何使用 `while` 循环从用户输入的数字中找到特定的值?例:

#include <stdio.h>

int main() {
    int target = 42; // 要查找的目标值
    int input;
    int found = 0; // 标志变量,表示是否找到目标值
    
    printf("请输入一系列数字,以0结束输入:\n");
    
    while (1) {
        scanf("%d", &input);
        
        if (input == 0) {
            break; // 当输入为0时跳出循环
        }
        
        if (input == target) {
            found = 1;
            break; // 当找到目标值时跳出循环
        }
    }
    
    if (found) {
        printf("找到了目标值 %d\n", target);
    } else {
        printf("未找到目标值 %d\n", target);
    }
    
    return 0;
}

在这个例子中,while循环用于接受用户输入的数字,直到用户输入了0为止。在循环体内,程序会检查用户输入的数字是否等于目标值target。如果找到目标值,程序将设置 `found` 标志为1,并使用break语句跳出循环。最后,根据found的值输出相应的提示信息。

for

基本语法及其执行流程

在C语言中,for 循环是一种用于重复执行一段代码块的循环结构,通常用于遍历数组、执行特定次数的操作等场景。for 循环具有更加紧凑的语法形式,适用于在已知循环次数的情况下。

for 循环的基本语法如下:

for (initialization; condition; update) {
    // 循环体
    // 这里的代码会重复执行,直到条件不再满足
}

for 循环的执行流程是这样的:

  1. 执行 initialization,通常是初始化循环变量的值。
  2. 计算 condition 表达式的值。如果这个值为真(非零),则进入循环体执行其中的代码。
  3. 执行循环体内的代码。
  4. 执行 update,通常是对循环变量进行更新操作。
  5. 再次计算 condition 表达式的值。如果仍然为真,则再次执行循环体内的代码。这个过程会一直重复,直到 condition 表达式的值为假(零)。
  6. condition 的值为假时,循环结束,程序继续执行循环体之后的代码。

for 循环与 while 循环相比,更适用于已知循环次数的情况,因为循环的初始化、条件判断和更新都可以在一行中完成,使得代码更加简洁。例:

#include <stdio.h>

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

在这个例子中,for 循环会重复执行 printf 语句,直到 i 的值不再小于 5。在每次循环迭代时,i 的值会递增,直到达到 5,循环结束。

比较 for 循环和 while 循环

  1. for 循环适用于:

    • 循环次数已知,循环变量的初始化、条件判断和更新都可以在一行内完成。
    • 迭代遍历数组或执行一定次数的操作等情况。
    • 语法格式更加固定,更容易在一个循环结构中完成初始化、条件判断和更新操作。
  2. while 循环适用于:

    • 循环次数未知或不确定,循环的条件判断可能依赖于程序运行时的变量。
    • 需要动态调整循环条件的情况。
    • 更加灵活,可以在循环体内部手动控制循环条件。

举例

for 循环的实际应用

计算一个数组中所有元素的总和。由于数组的长度已知,可以使用 for 循环遍历数组,并累加每个元素的值。

#include <stdio.h>

int main() {
    int arr[] = {10, 20, 30, 40, 50};
    int sum = 0;
    int i;

    for (i = 0; i < 5; i++) {
        sum += arr[i];
    }

    printf("数组的总和为:%d\n", sum);

    return 0;
}
通过 for 循环遍历了数组 arr 中的所有元素,并将它们的值累加到变量 sum 中。

while 循环的实际应用

编写一个程序,要求用户输入一系列数字,直到用户输入了负数为止,然后计算这些数字的总和。由于循环次数取决于用户输入的内容,可以使用 while 循环来处理这种情况。示例代码:

#include <stdio.h>

int main() {
    int num;
    int sum = 0;

    printf("请输入一系列数字,以负数结束输入:\n");

    while (1) {
        scanf("%d", &num);
        if (num < 0) {
            break;
        }
        sum += num;
    }

    printf("输入数字的总和为:%d\n", sum);

    return 0;
}

使用 while 循环来不断接受用户输入的数字,直到用户输入了负数为止。循环体内部根据用户的输入进行累加操作,当用户输入了负数时,使用 break 语句跳出循环。

  • 25
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值