流程控制02

流程控制02

1. while语句和do...while语句

1. 循环结构

什么是循环结构?我们为什么需要它呢?

在现实生活中,如果重复很多次做同一件事情,往往会让人感觉很懊恼。

在编程中我们大可不必如此——当我们需要重复执行同一段代码很多次的时候,就可以使用循环结构来解决。

2. while 语句

while (表达式)
循环体

while 语句的语法非常简单,只要表达式的值为真,那么就会不断执行循环体里边的语句或程序块。

执行过程画成流程图如下:

img

3. do…while 语句

除了通过 while 语句实现循环,C 语言中还有一个叫 do…while 的语句,也是用于实现循环。

do
循环体
while (表达式);

如果我们把 while 语句比喻为一个谨慎的小伙子的话,那么 do…while 语句就是一个莽撞的汉子。

因为 while 是先判断表达式,如果表达式结果为真,才执行循环体里边的内容;

而 do…while 则相反,不管三七二十一,先执行循环体的内容再判断表达式是否为真。

注意:do…while 语句在 while 后边一定要用分号(;)表示语句结束。

img

#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. 入口条件循环和出口条件循环

img

2. 循环的基本结构

img

通常一个循环都将涉及到三个动作:

  • 初始化计数器
  • 判断循环条件是否满足
  • 更新计数器

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 语句会把它也跳过。

posted @   tantao0_0  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示