流程控制02
流程控制02
1. while语句和do...while语句
1. 循环结构
什么是循环结构?我们为什么需要它呢?
在现实生活中,如果重复很多次做同一件事情,往往会让人感觉很懊恼。
在编程中我们大可不必如此——当我们需要重复执行同一段代码很多次的时候,就可以使用循环结构来解决。
2. while 语句
while (表达式) 循环体
while 语句的语法非常简单,只要表达式的值为真,那么就会不断执行循环体里边的语句或程序块。
执行过程画成流程图如下:
3. do…while 语句
除了通过 while 语句实现循环,C 语言中还有一个叫 do…while 的语句,也是用于实现循环。
do 循环体 while (表达式);
如果我们把 while 语句比喻为一个谨慎的小伙子的话,那么 do…while 语句就是一个莽撞的汉子。
因为 while 是先判断表达式,如果表达式结果为真,才执行循环体里边的内容;
而 do…while 则相反,不管三七二十一,先执行循环体的内容再判断表达式是否为真。
注意:do…while 语句在 while 后边一定要用分号(;)表示语句结束。
#include <stdio.h> int main() { int i; do { printf("请输入密码:(123)"); scanf("%d",&i); } while (i != 123); printf("密码正确"); return 0; }
4. getchar -- 从标准输入流中获取下一个字符
统计从键盘输入的一行英文句子的字符个数:
#include <stdio.h> int main() { int count = 0; printf("请输入字符"); while(getchar() != '\n') { count = count+1; } printf("输入了%d个字符",count); return 0; }
2. for语句和循环嵌套
1. 入口条件循环和出口条件循环
2. 循环的基本结构
通常一个循环都将涉及到三个动作:
- 初始化计数器
- 判断循环条件是否满足
- 更新计数器
3. for 语句
对于 while 语句,这些动作是分散在三个不同的地方。那如果能够把它们都集中到一块,那么对于后期无论是调试也好修改也罢,无疑就便捷了许多。没错,当年 C 语言作者也是跟我们想到一块去了,所以 for 语句就这么应运而生。
for (表达式1; 表达式2; 表达式3) 循环体
三个表达式用分号隔开,其中:
- 表达式1是循环初始化表达式
- 表达式2是循环条件表达式
- 表达式3是循环调整表达式
这样一来,for 语句将初始化计数器、循环条件判断、更新计数器三个动作组织到了在一起,那么以后如果要修改循环的次数,每次递进的跨度,或者循环结束条件,只需要在 for 语句后边的小括号内统一修改即可。
#include <stdio.h> int main() { int count; for(count = 0; count < 10; count ++) { printf("TanTao\n"); } return 0; }
练习:判断一个数是否为素数:
#include <stdio.h> int main() { int i, num; _Bool flag = 1; printf("请输入一个整数"); scanf("%d",&num); for(i = 2; i < num / 2; i++) { if(num % i == 0) { flag = 0; } } if(flag) { printf("%d是一个素数\n",num); } else { printf("%d不是一个素数\n",num); } return 0; }
4. 灵活的 for 语句
for 语句的表达式1,表达式2和表达式3都可以按照需要进行省略(但分号不能省):
- for ( ; 表达式2; 表达式3)
- for (表达式1; 表达式2; )
- for (表达式1; ; )
- for ( ; ; )
- ……
注意:如果目的不是特别明确,建议不要这么做,因为程序的可读性会因此而降低!
5. 最后提一下 C99 的新标准:C99 允许在 for 语句的表达式1中定义变量。
#include <stdio.h> int main() { for (int i=0, j=10; i < j; i++, j--) { printf("%d\n", i); } return 0; }
但是i和j只能在循环中起作用。
6. 循环嵌套
循环结构跟分支结构一样,都可以实现嵌套。
对于嵌套的循环结构,执行顺序是从内到外:先执行内层循环,再执行外层循环。
3. break语句和continue语句
1. break 语句
那么在循环体中,如果我们想要让程序在中途跳出循环,那么我们同样可以使用 break 语句来实现。
执行 break 语句,直接跳出循环体。
有一点需要注意的是,对于嵌套循环来说,break 语句只负责跳出所在的那一层循环,要跳出外层循环则需要再布置一个 break 语句才行。
2. continue 语句
当满足某个条件的时候,跳过本轮循环的内容,直接开始下一轮循环。这时候我们应该使用 continue 语句。
当执行到 continue 语句的时候,循环体的剩余部分将被忽略,直接进入下一轮循环。
对于嵌套循环来说,continue 语句跟 break 语句是一样的:它们都只能作用于一层循环体。
3. for 语句和 while 语句执行过程的区别
for 语句和 while 语句执行过程是有区别的,它们的区别在于出现 continue 语句时。
在 for 语句中,continue 语句跳过循环的剩余部分,直接回到调整部分。
在 while 语句中,调整部分是循环体的一部分,因此 continue 语句会把它也跳过。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程