【循环语句之三大分类】

简介: 【循环语句之三大分类】

一、什么是循环?

一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。循环语句是由循环体及循环的终止条件两部分组成的。

二、循环语句的分类

1.while 循环

1.1 while语句与if语句的区别

while 循环和if 语句非常相似

if (条件)
      语句;
//while 语法结构
while (表达式)
      循环语句;

请看下面的if语句:

为什么打印呢?

1为真,成功进来打印,但if语句条件成立只执行一次

可是我们生活中有很多例子是:同一件事我们需要完成很多次,那我们怎么做呢?

C语言中给我们引入了:while语句,可以实现循环。

while循环语句如下面所示:

while会一直打印hehe,为什么呢?

原因很简单:

while(1)判断为真,打印hehe,又返回while(1)判断,为真,再打印,再判断,再打印······hehe一直被打印,当然这个例子有点极端,死循环了。

1.2 while语句怎么用

举一个例子:

如何在屏幕上打印1~10

#include<stdio.h>
int main()
{
  int n = 1;
  while (n<=10)
  {
    printf("%d ", n);
    n++;
  }
  return 0;
}

打印结果如下

执行过程如下:

n=1,判断1<10,满足条件,进{}里打印1,n++,

n=2,回到while,2<10,满足条件,进{}里打印2,n++

n=3,回到while,3<10,满足条件,{}里打印3,n++

n=4·····

n=11,回到while,11>10,不满足,停止执行

最后总结一下while语句执行的流程

1.3 break在while循环的作用

如果在语句中遇到break是怎么回事呢?

举一个小栗子:

#include<stdio.h>
int main()
{
  int n = 1;
  while (n<=10)
  {
    if (n == 5)
      break;
    printf("%d ", n);
    n++;
  }
  return 0;
}

运行结果如下:

为什么只打印1,2,3,4呢

运行思路如下:

当n=1,判断1<10,进入while循环,n!=5,所以打印n的值1,n++→n=2

当n=2,又回到判断,2<10,进入while循环,n!=5,break不执行,打印n的值2,n++→n=3

当n=3,又回到判断,3<10,进入while循环,n!=5,break不执行,打印n的值3,n++→n=4

当n=4,又回到判断,4<10,进入while循环n!=5,break不执行,打印n的值4,n++→n=5

当n=5,又回到判断,5<10,进入while循环,n=5,break执行,循环终止

所以,5以及后面的数都不会再进入while循环了

总结:break的作用是(跳出)终止循环,可能后面还有几个循环,但我们不执行了,就此打住

所以:while中的break是用于永久终止循环的

1.4 continue在while循环的作用

把break换成continue我们可以看到,运行的结果依然是1,2,3,4,但区别的是4后面的光标依然在闪烁,我们知道正常程序结束,后面会出现什么按任意键关闭此窗口,但这里只有四个数字,这说明什么,说明代码没有结束,死循环了,它一直再跑。

举例1:

思路如下:

当n=1,2,3,4的时候,都不满足if(n==5)这个条件,所以跳过了continu,到下一步打印,n++,加到n=5时,满足条件,continue执行,后面的步骤不执行了,又回到了if判断,结果判断n=5,又执行continue,略过了打印和n++,又回到判断,代码就这样死循环了

举例2:

如果把n++放到if前面,结果又是什么呢?

#include<stdio.h>
int main()
{
  int n = 1;
  while (n <= 10)
  {
    n++;
    if (n == 5)
      continue;
    printf("%d ", n);
  }
  return 0;
}

思路如下:

n=1→n++→n=2,n!=5,continue不执行,打印2,

n=2→n++→n=3,n!=5,continue不执行,打印3,

n=3→n++→n=4,n!=5,continue不执行,打印4,

n=4→n++→n=5,n=5,continue执行,跳过

后面的代码,回到if判断

n=5→n++→n=6,continue不执行,打印6

······

n=10→n++→n=11,continue不执行,打印11

n=11→不符合判断条件,结束判断

总结:continue的作用是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

2.for 循环

2.1 for 循环的语法

2.2 for循环和while循环的区别

有人会疑惑,while循环已经能解决问题了,为什么还要用for循环呢?这跟while循环有什么区别呢?

举一个例子来说明答案

在屏幕上打印1~10,我们来看while循环和for循环各自是怎么打印的

while循环

int main()
{
  int i = 1;//1.初始化
  while (i <= 10)//2.判断
  {
    printf("%d ", i);
      i++;//3.调整
  }
  return 0;
}

for循环

int main()
{
  int i = 0;
  for (i = 1; i <= 10; i++)//(初始化;判断;调整)
  {
    printf("%d ", i);
  }
  return 0;
}

很明显,两者之间有非常相像的地方

但区别就在于while循环中的初始化,判断,调整是分开的,而在for循环中都整合在了一起,如果要修改某一部分代码的时候,for循环是不是要比while循环更好找呢,而且形式也更加好一些,更加简洁,这就大大提高我们写代码的效率了。

2.3 for循环要注意的地方

当我们这样写,会不会打印一个数字,打印一个hehe呢

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

结果是不会

我们要注意的是:循环体默认只能控制一条语句,如果想控制多条语句的话,要加上大括号

如下所示:

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

**另一个需要注意的是:**这两个代码代表的意思是一样的,但第二个代码是在c99标准里才支持的写法,不保证所有编译器都支持第二种写法

代码1

//任何一个编译器都会支持的
int main()
{
    for (int i = 0; i < 4; i++)
    {
        printf("hehe\n");
    }
    return 0;
}

代码2

//c99支持的
int main()
{
    int i = 0;
    for (i = 0; i < 4; i++)
    {
        printf("hehe\n");
    }
    return 0;
}

2.4 for语句的循环控制变量的建议

1.不可在for循环体内修改循环变量,防止for循环失去控制

举例子:

int main()
{
  int i = 0;
  for (i = 1; i <= 10; i++)
  {
    if(i==5)
    continue;
    printf("%d ", i);
    i = 5;//在循环体内改变i的值
  }
  return 0;
}

像这个代码得出的结果是无限地打印6,感兴趣的同学可以去试着敲一下。

2.建议for语句的循环控制变量的取值采用“前闭后开区间”写法

2.5 一些for循环的变种

变种1

下面举例子说明:

例子1

int main()
{
  int i = 0;
  int j = 0;
  for (i=0; i < 4; i++)
  {
    for (j=0; j < 4; j++)
    {
      printf("hehe\n");
    }
  }
  return 0;
}

例子2

int main()
{
  int i = 0;
  int j = 0;
  for (; i < 4; i++)
  {
    for (; j < 4; j++)
    {
      printf("hehe\n");
    }
  }
  return 0;
}

可见省略与不省略的结果的差异是非常大的,还是强调不要随便乱省略。

变种2

使用多余一个变量控制循环

int main()
{
     int x, y;
     for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
     {
       printf("hehe\n");
     }
     return 0;
}

3.do…while() 循环

3.1 do 循环的语法

我们依然使用do while循环打印1~10

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

由此我们可知,用while循环,for循环,do while循环打印1~10都是可以的

3.2 break和continue在do while循环的作用

break

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

可以看到,依旧是打印了1,2,3,4

continue

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

continue打印出来依旧是死循环

以上就是我对循环语句的理解与说明,如有不足的地方,请您指正!您的点赞,评论和收藏都是对我最大的鼓励,感谢!

相关文章
|
5月前
|
C语言 C++ 容器
c++primer plus 6 读书笔记 第五章 循环和关系表达式
c++primer plus 6 读书笔记 第五章 循环和关系表达式
|
5月前
|
C++
c++primer plus 6 读书笔记 第六章 分支语句和逻辑运算符
c++primer plus 6 读书笔记 第六章 分支语句和逻辑运算符
|
6月前
|
存储 Java 程序员
Java程序设计基础——多重循环
Java程序设计基础——多重循环
|
6月前
|
存储 分布式计算 运维
第五章 Python函数你知多少
第五章 Python函数你知多少
|
6月前
第五章循环结构(一)
第五章循环结构(一)
|
C++
C++ Primer Plus 第五章答案 循环和关系表达式
只有聪明人才能看见的摘要~( ̄▽ ̄~)~
65 0
|
C++
C++ Primer Plus 第六章答案 分支语句和逻辑运算符
只有聪明人才能看见的摘要~( ̄▽ ̄~)~
75 0
|
存储 自然语言处理 C语言
C++ Primer Plus 第6版 读书笔记(5)第5章 循环和关系表达式
如本章前面所述,for 循环是一种处理数组的工具。下面进一步讨论如何使用嵌套 for 循环中来处理二 维数组。首先,介绍一下什么是二维数组。到目前为止,本章使用的数组都是一维数组,因为每个数组都可以看作是一行数据。二维数组更像是一个表格—既有数据行又有数据列。例如,可以用二维数组来表示 6 个不同地区每季度的销售额,每一个地区占一行数据。也可以用二维数组来表示 RoboDork 在计算机游戏板上的位置。
128 0
|
Java
Java循环及控制语句详细级教程(下篇)续集
🌟do…while循环与while循环类似 区别在于:while循环是符合条件之后再执行循环体;而do…while循环是先执行一次,再判断是否符合条件最后决定是否执行循环体
105 0
|
Python
第三章--第二节:循环语句
第三章--第二节:循环语句
91 0