问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C语言循环结构详解

创作时间:
作者:
@小白创作中心

C语言循环结构详解

引用
CSDN
1.
https://m.blog.csdn.net/2301_76297596/article/details/144935210

C语言中的循环结构是程序设计中的重要组成部分,它允许我们重复执行一段代码,直到满足特定的条件为止。这种机制极大地提高了代码的效率和灵活性,使得处理重复性任务变得轻而易举。本文将详细介绍C语言中的三种主要循环结构:for循环、while循环和do-while循环,并通过实例展示它们的用法和特点。

一、for循环

1. 语法结构

for循环是C语言中最常用的循环结构之一,其语法格式如下:

for (初始化表达式; 条件表达式; 更新表达式) {
    // 循环体语句
}
  • 初始化表达式:在循环开始前执行一次,通常用于初始化循环控制变量。
  • 条件表达式:在每次循环迭代之前进行求值。如果条件为真(非零),则执行循环体;如果条件为假(零),则跳出循环。
  • 更新表达式:在每次循环体执行完毕后执行,通常用于更新循环控制变量的值。

2. 执行流程

  • 首先执行初始化表达式。
  • 然后判断条件表达式的值,如果为真,则执行循环体语句;如果为假,则结束循环。
  • 执行完循环体语句后,执行更新表达式。
  • 再次判断条件表达式的值,重复上述步骤,直到条件表达式的值为假。

3. 示例代码

下面是一个使用for循环计算1到100的整数和的示例:

#include <stdio.h>
int main() {
    int sum = 0;
    for (int i = 1; i <= 100; i++) {
        sum += i;
    }
    printf("1到100的整数和为:%d\n", sum);
    return 0;
}

在这个示例中,初始化表达式int i = 1定义并初始化了循环控制变量i;条件表达式i <= 100判断i是否小于等于100;更新表达式i++在每次循环后将i的值加1。循环体语句sum += i用于累加i的值。

二、while循环

1. 语法结构

while循环的语法格式如下:

while (条件表达式) {
    // 循环体语句
}

其中,条件表达式在每次循环迭代之前进行求值。如果条件为真,则执行循环体;如果条件为假,则跳出循环。

2. 执行流程

  • 判断条件表达式的值,如果为真,则执行循环体语句;如果为假,则结束循环。
  • 执行完循环体语句后,再次判断条件表达式的值,重复上述步骤,直到条件表达式的值为假。

3. 示例代码

下面是一个使用while循环实现猜数字游戏的示例:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
    int number, guess;
    srand(time(NULL));
    number = rand() % 100 + 1;  // 生成1到100之间的随机数
    printf("请猜一个1到100之间的整数:");
    scanf("%d", &guess);
    while (guess != number) {
        if (guess > number) {
            printf("猜大了,请再猜:");
        } else {
            printf("猜小了,请再猜:");
        }
        scanf("%d", &guess);
    }
    printf("恭喜你,猜对了!\n");
    return 0;
}

在这个示例中,首先生成一个1到100之间的随机数number,然后让用户输入猜测的数字guess。通过while循环不断判断guess是否等于number,如果不相等,则根据猜测的大小给出提示,并让用户继续猜测,直到猜对为止。

三、do-while循环

1. 语法结构

do-while循环的语法格式如下:

do {
    // 循环体语句
} while (条件表达式);

与while循环不同的是,do-while循环先执行一次循环体语句,然后再判断条件表达式的值。如果条件为真,则继续执行循环体;如果条件为假,则跳出循环。

2. 执行流程

  • 首先执行循环体语句。
  • 然后判断条件表达式的值,如果为真,则再次执行循环体语句;如果为假,则结束循环。

3. 示例代码

下面是一个使用do-while循环计算用户输入的整数之和,直到用户输入0为止的示例:

#include <stdio.h>
int main() {
    int num, sum = 0;
    do {
        printf("请输入一个整数(输入0结束):");
        scanf("%d", &num);
        sum += num;
    } while (num != 0);
    printf("输入的整数之和为:%d\n", sum);
    return 0;
}

在这个示例中,首先执行循环体语句,提示用户输入一个整数,并将其累加到sum中。然后判断num是否不等于0,如果是,则继续循环;如果不是,则结束循环并输出整数之和。

四、循环嵌套

在C语言中,循环结构可以相互嵌套,即在一个循环体内部可以包含另一个循环。这种嵌套结构可以用于处理更加复杂的问题,例如二维数组的遍历、矩阵的运算等。

下面是一个使用for循环嵌套打印九九乘法表的示例:

#include <stdio.h>
int main() {
    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= i; j++) {
            printf("%d x %d = %d\t", j, i, i * j);
        }
        printf("\n");
    }
    return 0;
}

在这个示例中,外层for循环控制行数,内层for循环控制列数。对于每一行i,内层循环从1到i遍历,打印出相应的乘法表达式。

五、循环控制语句

在循环结构中,有时需要提前跳出循环或者跳过本次循环的剩余语句。C语言提供了两个循环控制语句:break和continue。

1. break语句

break语句用于立即跳出当前所在的循环结构,不再执行循环体中剩余的语句。通常用于在满足某个条件时提前结束循环。

下面是一个使用break语句查找数组中第一个负数的示例:

#include <stdio.h>
int main() {
    int arr[] = {1, 2, -3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    for (int i = 0; i < size; i++) {
        if (arr[i] < 0) {
            printf("第一个负数是:%d\n", arr[i]);
            break;
        }
    }
    return 0;
}

在这个示例中,当找到第一个负数时,使用break语句跳出循环,不再继续遍历数组。

2. continue语句

continue语句用于跳过本次循环的剩余语句,直接进入下一次循环的迭代。通常用于在满足某个条件时跳过某些不必要的操作。

下面是一个使用continue语句计算1到100之间的奇数和的示例:

#include <stdio.h>
int main() {
    int sum = 0;
    for (int i = 1; i <= 100; i++) {
        if (i % 2 == 0) {
            continue;
        }
        sum += i;
    }
    printf("1到100之间的奇数和为:%d\n", sum);
    return 0;
}

在这个示例中,当i是偶数时,使用continue语句跳过本次循环的剩余语句,直接进入下一次循环;当i是奇数时,将其累加到sum中。

六、总结

循环结构是C语言编程中不可或缺的一部分,它允许我们高效地处理重复性任务。for循环适用于已知循环次数的情况,while循环适用于根据条件来决定是否继续循环的情况,do-while循环则保证循环体至少执行一次。通过合理运用循环嵌套和循环控制语句,我们可以编写更加灵活和复杂的程序。在实际编程中,需要根据具体问题选择合适的循环结构,并注意循环条件的设置和循环控制语句的使用,以避免出现无限循环等错误。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号