欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

【循环语句之三大分类】

最编程 2024-01-08 16:02:22
...

一、什么是循环?

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

二、循环语句的分类

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语句的循环控制变量的取值采用“前闭后开区间”写法

上一篇: shell脚本——for循环语句(包含应用案例)

下一篇: 基于LM2576的降压电源的分析与设计