第七节 循环结构;goto语句

2024-08-24 22:52

本文主要是介绍第七节 循环结构;goto语句,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

7.1 while循环

7.1.1 if 和 while的对⽐

7.1.2 while的执行流程

7.1.3 while的练习

7.2  for循环

7.2.1 语法形式

7.2.2 for循环的执⾏流程

7.2.3 for 循环的练习

7.3 while 和  for 循环的对比

7.4 do while 循环

7.4.1 do while 的语法形式

7.4.2 do while循环的执⾏流程

 7.4.3do while循环的练习

7.5  break和continue语句

 7.5.1 while循环中的break和continue

7.5.1 break举例

7.5.2 for循环中的break和continue

7.5.2 .1 break举例

7.5.2.2continue举例

7.5.3 do while循环中的break和continue

7. 6 循环的嵌套

7.7 goto语句


   在前面的内容中 我们学习了分支语句第六节 分支语句 (switch部分)-CSDN博客,第六节 分支语句 (switch部分)-CSDN博客同样循环语句也是C语言中常用的语句.C语⾔提供了3种循环语句,

7.1 while循环

while 就是其中⼀种,接下来就介绍⼀下 while 语句。 while 语句的语法结构和 if 语句⾮常相似。

7.1.1 if 和 while的对⽐

if 语句的写法

if(表达式)语句;

while语句的写法   

while(表达式)语句;

通过写法上,可以看到二者有很多的相似性,下面通过一个实例具体分析一下

#include <stdio.h>
int main()
{if(1)printf("hehe\n"); //if后边条件满⾜,打印⼀次hehereturn 0;
}

#include <stdio.h>
int main()
{while(1)printf("hehe\n"); //while后边的条件满⾜,死循环的打印hehereturn 0;
}

通过上述运行结果,我们也看出了他们的区别,while语句是可以实现循环效果的。 

7.1.2 while的执行流程

⾸先执⾏判断表达式,表达式的值为0,循环直接结束;
表达式的值不为0,则执⾏循环语 句,语句执⾏完后再继续判断,是否进⾏下⼀次判断

7.1.3 while的练习

在屏幕上打印 1~10 的值

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

7.2  for循环

7.2.1 语法形式

for 循环是三种循环中使⽤最多的, for 循环的语法形式如下:
for(表达式1; 表达式2; 表达式3)语句;//如果循环体想包含更多的语句,可以加上⼤括号
表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整

7.2.2 for循环的执⾏流程

  ⾸先执⾏ 表达式 1 初始化循环变量,接下来就是执⾏ 表达式 2 的判断部分, 表达式 2 的结果如果
==0,则循环结束; 表达式 2 的结果如果!=0则执⾏循环语句,循环语句执⾏完后,再去执⾏表 达式 3 ,调整循环变量,然后再去 表达式 2 的地⽅执⾏判断, 表达式 2 的结果是否为0,决定循环是否继 续。 整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循环.

7.2.3 for 循环的练习

在屏幕上打印出1-10的内容,

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

7.3 while 和  for 循环的对比

   。
                

 for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部
分⾮常集中,便于代码的维护,⽽如果代码较多的时候 while 循环的三个部分就⽐较分散,所以从形 式上 for 循环要更优⼀些

7.4 do while 循环

7.4.1 do while 的语法形式

 在循环语句中 do while 语句的使⽤最少,它的语法如下

do语句;
while(表达式);
  while for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳
出循环; ⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表 达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。

7.4.2 do while循环的执⾏流程

 
do while 循环中先执⾏图上的“语句”,执⾏完语句,在去执⾏“判断表达式”,判断表达式的
结果是!=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。
所以在 do while 语句中循环体是⾄少执⾏⼀次的,这是 do while 循环⽐较特殊的地⽅。 ​​​​​​​

 7.4.3​​​​​​​do while循环的练习

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

⼀般 do while 使⽤在循环体⾄少被执⾏⼀次的场景下,所以较少⼀些。

7.5  break和continue语句

在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。C语⾔中 提供了 break continue 两个关键字
break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执
⾏。
continue 的作⽤是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所
差异的​​​​​​​

 7.5.1 while循环中的break和continue

7.5.1 break举例

#include <stdio.h>
int main()
{int i = 1;while(i<=10){if(i == 5)break;//当i等于5后,就执⾏break,循环就终⽌了printf("%d ", i);i = i+1;}return 0;
}

运行后,再打印了1,2,3,4后,当i等于5的时候,循环正 break 的地⽅终⽌,不再打印,不再循环。
所以 break 的作⽤就是永久的终⽌循环 ,只要 break 被执⾏, break 外的第⼀层循环就终⽌了。
那以后我们在循环中,想在某种条件下终⽌循环,则可以使⽤ break 来完成。
7.5.1continue举例
#include <stdio.h>
int main()
{int i = 1;while(i<=10){if(i == 5)continue;     //当i等于5后,就执⾏continue,直接跳过continue的代码,去循环的判断的地⽅//    printf("%d ", i);i = i+1;                      //因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊和死循环}return 0;
}

运行后, continue 在循环中的作⽤就是跳过本次循环中 continue 后边的代码,继续进⾏
下⼀次循环的判断。 continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接 到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成 死循环

7.5.2 for循环中的break和continue

7.5.2 .1 break举例

       和 while 循环中的 break ⼀样, for 循环中的 break 也是⽤于终⽌循环的,不管循环还需

要循环多少次,只要执⾏到了 break ,循环就彻底终⽌​​​​​​​

#include <stdio.h>
int main()
{int i = 1;for(i=1; i<=10; i++){    if(i == 5)break;printf("%d ", i);}
return 0;
}
break 的作⽤是永久的终⽌循环,再打印了1,2,3,4后,当i等于5的时候,循环正 break 的地⽅终⽌,不再打印,

7.5.2.2continue举例

#include <stdio.h>
int main()
{int i = 1;for(i=1; i<=10; i++)
{if(i == 5)continue;//这⾥continue跳过了后边的打印,来到了i++的调整部分printf("%d ", i);
}
return 0;
}

for 循环中 continue 的作⽤是跳过本次循环中 continue 后的代码,直接去到循环的调
整部分。通过i的自增,继续执行剩余代码
我们对⽐⼀下 while 循环和 for 循环中 continue 的区别:
       
                                                           ​​​​​​​
while循环中continue跳出本次循环后,i的数值没有自增,for循环中continue跳出本次循环后,i的数值自增,代码将继续执行

7.5.3 do while循环中的break和continue

do.while 语句中的 break continue 的作⽤和 while 循环中⼏乎⼀模⼀样,
                                  

7. 6 循环的嵌套

前⾯学习了三种循环 while do while for ,这三种循环往往会嵌套在⼀起才能更好的解决
问题,也就是我们所说的:循环嵌套,这⾥我们看⼀个例⼦。
找出100~200之间的素数,并打印在屏幕上。
  题⽬分析:
1. 要从100~200之间找出素数,⾸先得有100~200之间的数,这⾥可以使⽤循环解决。
2. 假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,需要产⽣2~i-1之间的数字,也可以使⽤
循环解决。
3. 如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。

参考代码

#include <stdio.h>
int main()
{int i = 0;for(i=100; i<=200; i++){int j = 0;int flag = 1;//假设i是素数for(j=2; j<i; j++){if(i % j == 0){flag = 0;break;}}if(flag == 1)printf("%d ", i);}return 0;
}

7.7 goto语句

C语⾔提供了⼀种⾮常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同⼀个函数
内跳转到设置好的标号处。
#include <stdio.h>
int main()
{printf("hehe\n");goto next;printf("haha\n");next:printf("跳过了haha的打印\n");return 0;
} 

goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以能不⽤尽量不去使⽤;但是 goto 语句也不是⼀⽆是处,在多层循环的代码中,如果想快速跳出 ,使⽤ goto 就⾮常的⽅便了。
for (...)
{
        for (...)
                {
                for (...)
                        {
                        if (disaster)
                                goto error;
                        }
               }

}
error:
本来 for 循环想提前退出得使⽤ break ,⼀个 break 只能跳出⼀层 for 循环,如果3层循环嵌套,就得使⽤3个 break 才能跳出循环,所以在这种情况下我们使⽤ goto 语句就会更加的快捷。

持续更新中~ ✨

这篇关于第七节 循环结构;goto语句的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103834

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

Java嵌套for循环优化方案分享

《Java嵌套for循环优化方案分享》介绍了Java中嵌套for循环的优化方法,包括减少循环次数、合并循环、使用更高效的数据结构、并行处理、预处理和缓存、算法优化、尽量减少对象创建以及本地变量优化,通... 目录Java 嵌套 for 循环优化方案1. 减少循环次数2. 合并循环3. 使用更高效的数据结构4

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd