避免循环死循环

简介: 避免循环死循环

以下是几个避免循环死循环的示例,涵盖了不同类型的循环结构和场景:

 

1. 使用 for 循环和已知迭代次数

 

当你知道循环需要执行的确切次数时,可以使用 for 循环。

 

#include <stdio.h>
 
int main() {
    int i;
    for (i = 0; i < 10; i++) { // 循环10次
        printf("这是第 %d 次迭代\n", i + 1);
    }
    return 0;
}

 

2. 使用 while 循环和条件变量

 

在 while 循环中,确保循环条件能够在某个点上变为假。

 

#include <stdio.h>
 
int main() {
    int count = 0;
    while (count < 10) { // 当 count 小于 10 时循环
        printf("这是第 %d 次迭代\n", count + 1);
        count++; // 更新 count 的值
    }
    return 0;
}

 

3. 使用 do-while 循环确保至少执行一次

 

即使条件在一开始就为假,do-while 循环也会执行一次。

 

#include <stdio.h>
 
int main() {
    int input;
    do {
        printf("请输入一个正整数(输入0退出):");
        scanf("%d", &input);
        if (input > 0) {
            printf("你输入了正整数:%d\n", input);
        }
    } while (input != 0); // 当 input 不为 0 时继续循环
    printf("退出循环。\n");
    return 0;
}

 

4. 使用 break 语句提前退出循环

 

当满足某个条件时,使用 break 语句可以立即退出循环。

#include <stdio.h>
 
int main() {
    int i;
    for (i = 0; i < 100; i++) { // 假设循环本应执行100次
        if (i == 10) { // 但当 i 等于 10 时提前退出
            break;
        }
        printf("这是第 %d 次迭代\n", i);
    }
    printf("循环在 i = %d 时被中断。\n", i);
    return 0;
}

5. 检查用户输入以避免死循环

 

确保用户输入不会导致死循环。

#include <stdio.h>
 
int main() {
    char choice;
    do {
        printf("请输入一个选项(A/B/C):");
        scanf(" %c", &choice); // 注意前面的空格,用于跳过任何空白字符
        switch (choice) {
            case 'A':
                // 处理选项 A 的逻辑
                break;
            case 'B':
                // 处理选项 B 的逻辑
                break;
            case 'C':
                // 处理选项 C 的逻辑
                break;
            default:
                printf("无效选项,请重新输入。\n");
                break; // 无效输入时,不退出循环,等待用户重新输入
        }
    } while (choice != 'Q' && choice != 'q'); // 当用户输入 Q 或 q 时退出循环
    printf("退出循环。\n");
    return 0;
}

 

6. 使用函数返回值控制循环

有时,可以从函数中返回一个值来控制循环是否继续。

#include <stdio.h>
 
int shouldContinue() {
    // 根据某些条件决定是否继续循环
    // 这里只是一个简单的示例,总是返回 1
    return 1; // 返回非零值表示继续循环
}
 
int main() {
    int i = 0;
    while (shouldContinue()) { // 当 shouldContinue 返回非零值时循环
        printf("这是第 %d 次迭代\n", i++);
        // 根据需要,可以在某个点上修改 shouldContinue 的逻辑以返回 0
    }
    return 0;
}

在实际应用中,根据具体情况选择适当的方法来避免循环死循环。

相关文章
|
6月前
|
机器学习/深度学习
while循环
该内容是关于编程中的`while`循环结构介绍。它以markdown格式展示了`while`循环的基本形式:`while(表达式) 语句;`,并提到如果需要多条语句,可以用大括号包裹。接着,提供了两个实例:一是打印1到10的数字,二是逆序输出一个正整数的每一位。每个实例都配有一个展示结果的图片。
52 2
|
6月前
|
算法
do while循环及练习
do while循环及练习
39 0
|
6月前
do while循环
该内容介绍了编程中的循环语句,强调了`do while`循环与`while`和`for`循环的区别。`do while`循环先执行循环体再判断条件,确保至少执行一次,而`while`和`for`先判断条件再执行。通过示例展示了`do while`循环打印1-10和计算正整数位数的应用,指出在某些情况下,`do while`循环更为合适。
48 0
|
6月前
|
C语言
c循环
c循环
35 0
|
6月前
|
C++
C++ 循环
C++ 循环
39 0
|
6月前
|
Python
phython中while循环
phython中while循环
|
6月前
|
Shell 开发工具
while do done, until do done(不定循环)
【1月更文挑战第7天】。
62 0
|
C语言
C 中的循环
C 中的循环
|
C语言 C++
C++——循环
C++——循环