【初阶C语言】随意拿捏循环语句

简介: 【初阶C语言】随意拿捏循环语句上节课我们学完了分支语句(if和switch语句),这节课请继续跟着本娥学习循环语句

一、while循环

1.认识while循环

首先,while语句是循环语句,会多次执行语句

我们先看他的结构:

while(表达式)
    循环体;

同样,如果表达式为真则会执行循环体;执行完循环体后会再回到表达式中再去判断表达式是否为真,如果为假,则会跳出循环体,若真,则还会继续执行循环体。

      while后面同样默认跟一条语句,若需要循环多条语句,需要加上大括号{}。

while语句循环流程

image.png

我们先不看虚线部分,如果表达式为真,执行循环体,会再次回到表达式上;如果表达式为假,则会直接跳出循环。

2.简单while循环

我们现在需要用while循环打印1-10数字

#include<stdio.h>
int main()
{
 int i=1;
 while(i<=10)//i满足条件进入
 {
  printf("%d ",i);//循环体部分
  i++;//循环调整部分
 }
  return 0;
}

可以将该例题与上面的流程图比对。大括号{}内为循环体,循环体一般由循环语句和调整部分组成;如果没有了调整部分,在没有终止语句的前提下,那么就是死循环


3.while循环中的continue

continue一般用于循环语句中,用于跳出本次循环,对表达式重新判断。


我们现在需要用while循环打印1-10数字,遇到5不打印

#include<stdio.h>
int main()
{
   int i=1;
   while(i<=10)//i满足条件进入
   {
     if(i==5)
       continue;//执行continue的时候,会直接跳过后面的语句
     printf("%d ",i);//循环体部分
     i++;//循环调整部分
  }
   return 0;
}

上面代码打印结果为1 2 3 4;为什么呢?因为当i==5的时候,会执行continue语句,那么就会直接跳过后面的循环体对表达式重新判断。此时i为5,没有被改变,再次进入循环体还是会执行continue,所以只会打印1 2 3 4,后面便死循环了。


我们重新纠正一下代码

#include<stdio.h>
int main()
{
   int i=0;
   while(i<10)//i满足条件进入
   {
     i++;//循环调整部分写在前面
     if(i==5)
       continue;
     printf("%d ",i);//循环体部分
   }
    return 0;
}

打印结果为:1 2 3 4 6 7 8 9 10。这里是先对循环部分进行调整,即使跳过了某次循环,也不会导致死循环。


4.while循环中的break

在循环中,只要遇到break就直接跳出循环,在while中也是同理。

我们用上面的例子

#include<stdio.h>
int main()
{
   int i=1;
   while(i<=10)//i满足条件进入
   {
     if(i==5)
      break;
     printf("%d ",i);//循环体部分
     i++;//循环调整部分
  }
   return 0;
}

这里代码运行的结果依然是1 2 3 4,但是这里不会死循环,因为当执行break的时候,已经是跳出while循环了

二、for循环

1.认识for循环

语法结构:

for(表达式1;表达式2;表达式3)
   循环体;

表达式1为初始化语句,表达式2用来判断循环是否进行,表达式3用来调整循环;三个表达式之间必须要用分号(;)隔开

for循环流程图:

image.png

2.简单for循环

用for循环在屏幕上面打印数字1-10

#include<stdio.h>
int main()
{
   int i=0;
 for(i=1;i<=10;i++)//初始化、判断、调整部分都在同一个括号里面
 {
   printf("%d ",i);//循环体
 }
    return 0;
}

执行顺序:1.初始化 i=1(只执行一次)         2.判断 i<=10       3.执行循环语句 printf("%d ",i)                    4.调整 i++              5.判断 i<=10   ............


3.for循环中的continue

continue:同while循环一样,执行到continue语句,直接跳过后面内容,执行判断部分,但是与while循环中的continue还是由=有区别的


直接看上面的例子

#include<stdio.h>
int main()
{
   int i=0;
 for(i=1;i<=10;i++)//初始化、判断、调整部分都在同一个括号里面
 {
   if(i==5)//当1==5的时候,跳过本次循环
     continue;
   printf("%d ",i);//循环体
 }
    return 0;
}

这里的输出结果为1 2 3 4 6 7 8 9 10;这里遇到continue只会跳过循环语句,还是可以对循环进行调整,使其继续往下执行

4.for循环中的break

break在while循环和for循环中的作用一样,只要执行就会直接跳出该循环。

#include<stdio.h>
int main()
{
   int i=0;
 for(i=1;i<=10;i++)//初始化、判断、调整部分都在同一个括号里面
 {
   if(i==5)//当1==5的时候,跳出循环
     break;
   printf("%d ",i);//循环体
 }
    return 0;
}

程序的运行结果为1 2 3 4

5.for循环的变种

第一种:在循环内定义变量(不建议)

#include<stdio.h>
int main()
{
  for (int i = 1; i < 5; i++)//直接在循环内定义变量,为局部变量,出了循环便不再存在
  {
    printf("%d ",i);
  }
  return 0;
}

第二种:省略三个表达式(最好2不要省略,容易出问题)

#include<stdio.h>
int main()
{
  for (;;)//表达式可以省,但是分号不能省
  {
    printf("加强嫦娥");//因为少了判断部分,默认为真,则会死循环
  }
  return 0;
}

注意:嵌套使用省略初始化部分会有问题

  正常代码:

image.png

不正常代码:

image.png

 原因:因为没有初始化j的值,j的值只会加不会减,当i=1在进入循环的时候j的值还是3

第三种:多个变量控制表达式

#include<stdio.h>
int main()
{
  int i = 0;
  int j = 0;
  for (i=0,j=0;i<3&&j<3;i++,++j)//可以多个变量,但是要满足一个表达式
  {
    printf("加强嫦娥\n");
  }
  return 0;
}
6.注意事项

不要在for循环的循环体内改变循环变量,会使其循环失效

第一种情况:直接赋值

image.png

第二种情况:相等写成赋值

image.png

三、do...while循环

1.认识do...while循环

语法结构:

do
  循环语句;//循环语句可包括执行语句和调整部分
while(表达式);

执行的流程图:

image.png

由此可见,do...while循环至少会执行一次循环语句,其他的跟while语句一样;场景较少,   所以用的比较少

2.简单例子

在屏幕上面打印数字1-10

#include<stdio.h>
int main()
{
  int i = 1;
  do
  {
    printf("%d ",i);//先执行语句
    i++;//循环调整部分
  } while (i<=10);//再进行条件判断
  return 0;
}
3.continue在do语句的作用

同while语句中的continue一样,会跳过本次后面的代码,直接进行下一次判断

#include<stdio.h>
int main()
{
  int i = 1;
  do
  {
    if (i == 5)
      continue;//当执行到continue的时候,只会打印1 2 3 4,然后死循环
    printf("%d ",i);
    i++;
  } while (i<=10);
  return 0;
}
4.break在do语句的作用

作用同while、for语句一样,只要执行到就会直接终止该循环

#include<stdio.h>
int main()
{
  int i = 1;
  do
  {
    if (i == 5)
      break;//当执行到的时候直接跳出循环,所以打印结果为1 2 3 4
    printf("%d ",i);
    i++;
  } while (i<=10);
  return 0;
}

四、goto转向语句

1.定义

       goto语句一般和标记跳转的标号结合

2.作用

      一般用于跳出多层循环,也可以达成一种循环的效果

3.举例

image.png

记号2后面需要用冒号,不能用分号。


4.作用范围

   只能在同一个函数内使用,跨函数无法使用。可以往前跳,也可以往后跳


五、总结

1.循环的选择

  当循环次数不确定的时候选择while循环,循环次数确定时选择for循环


2.continue与break

while循环中不适合使用continue;for循环中continue比较适合


break在三种循环结构中都是一样的作用,都合适


3.while与do...while

do...while循环是至少会执行一次程序,while循环可能一次都不会执行。

其他情况两种循环的特点相同。

相关文章
|
26天前
|
C语言
C语言初阶⑧(结构体)知识点和笔试题
C语言初阶⑧(结构体)知识点和笔试题
22 0
|
26天前
|
存储 编译器 C语言
C语言初阶⑦(指针初阶)知识点+笔试题(上)
C语言初阶⑦(指针初阶)知识点+笔试题
24 0
|
26天前
|
算法 程序员 编译器
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
24 0
|
26天前
|
C语言 数据安全/隐私保护
C语言初阶②(分支语句和循环语句)编程练习
C语言初阶②(分支语句和循环语句)编程练习
32 1
|
10天前
|
C语言
C语言控制流程详解:分支与循环语句
C语言控制流程详解:分支与循环语句
11 0
|
12天前
|
C语言
【初始C语言8】详细讲解初阶结构体的知识
【初始C语言8】详细讲解初阶结构体的知识
|
17天前
|
C语言
C语言中的循环控制结构与循环语句详解
C语言中的循环控制结构与循环语句详解
19 0
|
18天前
|
C语言
C语言初阶测评
C语言初阶测评
19 0
|
18天前
|
算法 搜索推荐 C语言
C语言循环语句的深入探索与应用
C语言循环语句的深入探索与应用
19 0
|
25天前
|
程序员 C语言
C语言程序设计——循环语句
C语言程序设计——循环语句