C 语言循环语句详解:从入门到熟练,搞定重复操作不再难

114 阅读9分钟

C 语言循环语句详解:从入门到熟练,搞定重复操作不再难

前言

初学 C 语言时,你是不是也遇到过这样的场景:需要打印 100 遍「Hello World」,如果逐行写printf("Hello World");,不仅要写 100 行代码,还容易出错;需要计算 1 到 100 的累加和,手动计算既麻烦又不灵活。

这时候,「循环语句」就成了我们的「救星」—— 它能让程序重复执行某一段代码,大大简化工作量,提高代码效率和可维护性。

今天这篇文章,我们就来全面吃透 C 语言中的 3 大循环语句:for、while、do-while,包括它们的语法、用法、区别以及实战场景,新手也能轻松上手。

什么是循环语句

在C语言中,循环语句是流程控制语句的一种,其核心作用是:在满足指定条件的前提下,重复执行某一段代码快(称为:循环体)。

在生活中,也有很多与循环有关的场景,比如:

1.每天早上 7 点起床→洗漱→吃早餐→上班,直到周末(条件:非周末);

2.往杯子里倒水,直到水面到达杯口(条件:水杯未满);

3.打印1到10的数字,重复执行(打印数字 + 数字+1)的操作,直到数字大于10。

C语言中有三种最基本的循环语句,分别是for,while,do-while,分别对应不同的场景,接下来让我们来逐一拆解。

三大循环语句详解

一、while循环:简洁直观(适合未知循环次数,但知道终止条件的场景)

语法格式:

初始化表达式:
while(条件判断表达式)
{
		循环体代码://条件为真时执行
		更新表达式;//修改循环变量,避免死循环
}

执行流程

1.先执行循环外的初始化表达式(仅一次)

2 执行while后的 [条件判断表达式] ,判断是否为真

3如果条件为真,则进入循环,并执行循环体代码;如果条件为假,则跳出循环

代码演示

#include<stdio.h>

int main()
{
	int n = 1;
	while (n <= 10)
	{
		printf("%d ", n);
		n++;
	}
	return 0;
}

代码运行结果:

在这里插入图片描述

这段代码的作用是从1打印到10.

提醒

  1. while循环的初始化在循环体外,更新表达式在循环体内,一定要记得写(更新循环体)的代码,否则循环将无法终止,容易造成死循环(比如:上述代码如果没有n++;则该段代码将陷入死循环,无限打印0)

  2. 当然更新表达式这一步骤可以根据情况写在while括号后面的条件判断表达式中

  3. 当循环体只有一行代码时,大括号”{ }‘可以省略,但是并不推荐这样做,这会导致代码不方便阅读

二、for循环:最常用,最灵活的循环(适合已知循环次数的场景)

for循环吧(初始化,循环条件,更新变量)集中在一行,结构清晰,是使用频率最高的循环。

语法格式

for(初始化表达式;条件判断表达式;更新表达式)
{
		循环体代码//条件为真时,重复执行
}

执行流程

  1. 执行初始化表达式(仅执行一次,用于初始化循环变量)
  2. 执行条件判断表达式(返回布尔值:真 / 假,C语言中用(非0表示真,0表示假)
  3. 如果条件为“真 ”,执行 [循环体代码] ; 如果条件为 “假” , 直接跳出循环,结束for循环
  4. 循环体代码执行完毕后,执行更新表达式
  5. 回到步骤2,重复执行,直到条件为假

代码演示

int main()
{
	int n = 0;
	for (n = 1; n <= 10; n++)
	{
		printf("%d ",n);
	}
	return 0;
}

代码运行结果:

在这里插入图片描述

这段代码先初始化n = 0;然后开始进入for循环,首先先将n初始化为1,然后进行条件判断n <= 10,发现条件满足,然后进入循环体开始执行循环语句,打印n的值,循环体代码执行完毕后,再进行更新表达式这一步骤,即n++,让n的值自增1;然后不断循环直到 [条件判断表达式] 为假,然后结束循环。

提醒

  1. 初始化表达式可以定义多个变量,每个变量间用逗号隔开,更新表达式也可以修改多个变量,比如(for(int i = 0, j = 10; i <= 10; i++, j--);
  2. 循环体如果只有一行代码,大括号“{ }”可以省略,但是不推荐这样做,这会导致代码的可读性差,容易出错;
  3. for()的“()”后面不要加“ ;”,否则的话会导致无法正常进入循环体,而是先执行完 [更新表达式] 里面的代码后,再进入循环体内;
  4. 对比while循环,for循环更适合 [已知循环次数] ,而while循环更适合 [未知循环次数] ,但二者可以根据情况相互转换。

三、do-while循环:先执行后判断

do-while循环是 “先执行循环体,再判断条件”,无论条件是否为真,循环体都会至少执行一次,使用场景较少,但在某些特定场景下不可替代。

语法格式

// 语法格式
初始化表达式; // 循环变量初始化
do {
    循环体代码; // 先执行1次,再判断条件
    更新表达式; // 修改循环变量
} while (条件判断表达式); // 注意:末尾有分号

执行流程

  1. 先执行循环外的 [初始化表达式];
  2. 进入do-while循环,先执行 [循环体代码] ,无论条件是否为真,都先执行一次;
  3. 执行 [更新表达式] ,修改循环变量;
  4. 执行while后面的 [条件判断表达式] ,判断是否为真。
  5. 如果条件为真:回到步骤2,继续进行循环。如果条件为假:则跳出循环。

代码演示

#include <stdio.h>
#include <string.h> // 用于strcmp()函数:比较两个字符串是否相等

int main() {
    // 示例:用户登录验证,默认密码为"123456",至少提示1次输入密码
    char password[20]; // 定义字符数组,存储用户输入的密码
    printf("=== 用户登录 ===\n");

    do {
        printf("请输入登录密码:");
        scanf("%s", password); // 读取用户输入的密码(无需&,字符数组名本身是地址)

        // strcmp(a, b):比较字符串a和b,相等返回0,不相等返回非0
        if (strcmp(password, "123456") == 0) {
            printf("密码正确,登录成功!\n");
        } else {
            printf("密码错误,请重新输入!\n");
        }
    } while (strcmp(password, "123456") != 0); // 终止条件:密码正确

    return 0;
}

代码运行结果:

在这里插入图片描述

根据代码运行结果可以看出,无论输入的密码是否正确,都会进入一次循环,并执行一次循环体的内容。

提醒

  1. do-while循环中,while的“ ()”后面必须加 [ ; ],这是C语言语法的要求。
  2. 循环体至少执行一次,这一点与for循环和while循环不同。
  3. 使用场景有限,仅在必须先执行一次循环体的情况下才会使用

循环跳转关键字(break/continue)

我们已经掌握了三种循环的基础用法,但在实际开发中往往还需要在循环执行的过程中 [提前终止整个循环] 或 [跳过本次循环的剩余内容]。这时我们就需要 break 和 continue 这两个关键字来解决上述问题,下面我们就来详细拆解他们的用法和区别。

break

break的作用是提前终止整个循环,当代码运行到break时,break会使整个循环提前终止,跳出循环。

代码演示
#include<stdio.h>

int main()
{
	int i = 0;
	while (i <= 10)
	{
		if (i == 6)
		{
			break;
		}
		printf("%d ", i);
		i++;
	}
	return 0;
}

代码运行结果:

在这里插入图片描述

观察上述代码的运行结果,我们发现最后的结果并不是从0打印到10,为什么会出现这样的情况?

这是因为当 i 自增到6时会进入if的判断语句,i == 6,执行break,break使得循环强制终止,跳出循环,不再进入后面的循环。因此这段代码的运行结果是0 1 2 3 4 5.

continue

continue的作用是当代码执行到continue时,continue会使得程序跳过本次循环后面的语句,进入下一次循环中。

代码演示
#include<stdio.h>

int main()
{
	int i = 0;
	while (i < 10)
	{
		i++;
		if (i == 6)
		{
			continue;
		}
		printf("%d ", i);
	}
	return 0;
}

代码运行结果

在这里插入图片描述

由代码运行结果可以看出,这段代码从1到10依次打印却跳过了6,这是为什么呢?

究其原因是因为当 i 自增到6时,进入if语句中,i == 6;执行continue语句,continue使得本次循环强制终止,并进入到下一次循环中,因此当 i = 6时,printf("%d ",i)这个语句被跳过了,并没有被执行,因此屏幕上并没有打印6.

提醒

使用continue时,一定要确保循环变量在continue之前完成更新,否则的话会进入死循环。

实战练习

题目 1:使用for循环,打印 99 乘法表(经典练习题,考察循环嵌套,可选做);

题目 2:使用while循环,计算 1 到 100 中所有偶数的和

题目 3:使用do-while循环,实现一个简单的菜单(选择 1 打印当前时间、选择 2 退出,至少显示 1 次菜单)。

总结

今天我们全面讲解了 C 语言中的 3 大循环语句:for、while、do-while,核心总结如下:

  1. 循环语句的核心作用是「重复执行某段代码」,简化工作量,提高代码效率;
  2. for循环适合已知循环次数,while循环适合未知循环次数,do-while循环适合循环体至少执行 1 次;
  3. 三者可以相互转换,但优先根据场景选择最简洁、可读性最高的循环; 4,开发中要避免无意造成的死循环,记得写「更新表达式」。

循环语句是 C 语言的基础,也是后续学习「循环嵌套」「数组遍历」「算法实现」的前提,建议大家多动手练习,熟能生巧。

如果你有任何问题,欢迎在评论区留言,我们一起交流学习!