👨 Biaoge ⏰于2024-03-08 00:04发布 👓阅读量:10 🏷️文章类型:【 C语言程序设计 】
循环结构
同学们好,今天我们要学习的内容是C语言中的循环结构。你可能会想,什么是循环结构呢?其实,循环结构就像是我们生活中的重复动作,比如刷牙、洗脸,每天都要重复做。在编程中,循环结构就是用来重复执行某段代码的一种结构。
首先,我们来了解一下最基本的循环结构——for循环。for循环就像一个计数器,它设定了一个起始值,一个结束值,以及一个步长,然后按照步长来逐渐增加或减少这个值,直到达到结束值为止。在这个过程中,每次循环都会执行一段特定的代码。
for循环
下面是一个简单的示例,我们用for循环来打印出1到5这五个数字:在这个例子中,for循环的初始值是1,结束值是5,步长是1。每次循环,都会打印出当前的i值,并且i的值会增加1。所以,运行这段代码后,你会看到屏幕上依次打印出1到5这五个数字。
#include <stdio.h> int main() { int i; for (i = 1; i <= 5; i++) { printf("%d ", i); } return 0; }
while循环
除了for循环,C语言还提供了while循环和do-while循环。while循环会在满足某个条件时一直执行循环体,直到条件不满足为止。而do-while循环则是至少会执行一次循环体,然后再判断条件是否满足,如果满足则继续执行,否则退出循环。
这里我们给出一个while循环的示例,同样是打印出1到5这五个数字:
在这个例子中,while循环的条件是i <= 5,只要这个条件满足,就会一直执行循环体。在循环体中,我们打印出当前的i值,并将i的值增加1。所以,和for循环一样,这段代码也会打印出1到5这五个数字。
#include <stdio.h> int main() { int i = 1; while (i <= 5) { printf("%d ", i); i++; } return 0; }
do-while循环
最后,我们来看一下do-while循环的示例:这个do-while循环会先执行一次循环体,然后判断条件i <= 5是否满足。如果满足,就继续执行循环体;如果不满足,就退出循环。所以,这段代码同样会打印出1到5这五个数字。
#include <stdio.h> int main() { int i = 1; do { printf("%d ", i); i++; } while (i <= 5); return 0; }
好了,以上就是C语言中循环结构的基本介绍和示例。现在,我来出几道小试题,检验一下大家的学习成果吧:
试题
下面的for循环会打印出什么结果?请将下面的代码片段补全,使其使用while循环打印出1到10这十个数字:
for (int i = 0; i < 5; i += 2) { printf("%d ", i); }
下面的do-while循环有一个错误,请指出并修正它:
int i = 1; while (/* 条件 */) { printf("%d ", i); i++; }
好的,同学们可以尝试回答一下这些问题,看看自己是否掌握了循环结构的基本用法。如果有不懂的地方,随时向我提问哦!
int i = 5; do { printf("%d ", i); i--; } while (i > 0);
循环控制语句
除了循环结构本身,break、continue和goto这三个关键字在循环中也扮演着非常重要的角色。下面我会逐一为你们解释它们的作用和用法,并给出相应的示例。
Break跳出当前循环
首先是break。break用于在循环中提前退出。当程序执行到break语句时,会立即跳出当前循环,不再执行循环体中剩余的代码,而是继续执行循环之后的语句。这在某些条件下需要中断循环时非常有用。
例如,如果我们想要打印出1到10之间的所有偶数,可以使用break来跳出当遇到奇数时的循环:
#include <stdio.h> int main() { int i; for (i = 1; i <= 10; i++) { if (i % 2 != 0) { // 如果i是奇数 break; // 跳出循环 } printf("%d ", i); } return 0; }
在这个例子中,当i为奇数时,break语句会被执行,从而跳出循环。因此,这段代码只会打印出2、4、6、8、10这几个偶数。
continue跳过当前循环
接下来是continue。与break不同,continue的作用是跳过当前循环的剩余部分,直接进入下一次循环。它不会结束整个循环,只是跳过当前循环的某次迭代。
比如,如果我们想要打印出1到10之间所有不是3的整数,可以使用continue来跳过当i等于3时的那次循环:
#include <stdio.h> int main() { int i; for (i = 1; i <= 10; i++) { if (i == 3) { // 如果i等于3 continue; // 跳过本次循环的剩余部分 } printf("%d ", i); } return 0; }
在这个例子中,当i等于3时,continue语句会被执行,从而跳过打印操作,直接进入下一次循环。因此,这段代码会打印出除了3以外的1到10之间的所有整数。
最后,我们来说说goto。goto语句在C语言中用于无条件跳转到程序中的另一个位置。然而,需要注意的是,过度使用goto语句会使程序流程变得难以理解和维护,因此在实际编程中并不推荐使用。在大多数现代编程实践中,我们更倾向于使用循环、条件语句和函数调用来控制程序流程。
GOTO
由于goto语句的局限性和不推荐使用的现状,我们在这里就不给出具体的goto示例了。但你们需要知道的是,尽管goto在某些情况下可能看起来方便,但它通常不是解决复杂程序流程问题的最佳方式。
通过上面的解释和示例,我希望你们能对break、continue和goto这三个关键字在循环中的用法有一个清晰的认识。记住,它们都是控制程序流程的重要工具,但在使用时需要谨慎考虑其对程序可读性和可维护性的影响。
现在,我再来出几道关于这些关键字的小试题,看看大家是否真正掌握了它们的用法:
试题
在下面的代码中,break语句的作用是什么?
for (int i = 0; i < 10; i++) { if (i == 5) { break; } printf("%d ", i); }
修改下面的代码,使用continue语句跳过所有偶数的打印。
for (int i = 0; i < 10; i++) { printf("%d ", i); }
goto语句在C语言中通常被认为是不好的编程实践,为什么?请给出至少两个原因。