【初阶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循环可能一次都不会执行。

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

相关文章
|
2月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
78 5
|
5月前
|
C语言
【C语言】循环语句
C语言中循环语句的相关知识点
57 2
【C语言】循环语句
|
3月前
|
安全 C语言
C语言循环的使用注意点
在C语言中,合理使用循环对于编写高效、安全的代码至关重要。以下是几点建议:确保循环条件正确以避免无限循环;每次迭代时正确更新循环变量;恰当使用`break`和`continue`控制执行流程;注意嵌套循环中的变量作用域;简化循环体内逻辑;根据需求选择合适的循环类型;注意数据类型以避免溢出;保持良好的缩进和注释习惯;减少重复计算以提升性能;确保循环终止条件明确。遵循这些建议,可以提高代码质量和可维护性。
241 88
|
2月前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
53 6
|
6月前
|
C语言
C语言初阶:如何判断是否为素数并且输出
C语言初阶:如何判断是否为素数并且输出
51 0
|
2月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
2月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
2月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
20 0
|
2月前
|
小程序 C语言
初识C语言:走近循环
初识C语言:走近循环
|
3月前
|
C语言
【C语言基础考研向】08判断语句与循环语句
本文介绍了C语言中的关键编程概念:首先解析了关系表达式与逻辑表达式的优先级及计算过程;接着详细说明了`if-else`语句的使用方法及其多分支和嵌套应用;然后讲解了`while`循环与`for`循环的语法和注意事项;最后介绍了`continue`和`break`语句在控制循环中的作用和示例代码。