第七节 循环结构;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

相关文章

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

JAVA中while循环的使用与注意事项

《JAVA中while循环的使用与注意事项》:本文主要介绍while循环在编程中的应用,包括其基本结构、语句示例、适用场景以及注意事项,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录while循环1. 什么是while循环2. while循环的语句3.while循环的适用场景以及优势4. 注意

Python中的异步:async 和 await以及操作中的事件循环、回调和异常

《Python中的异步:async和await以及操作中的事件循环、回调和异常》在现代编程中,异步操作在处理I/O密集型任务时,可以显著提高程序的性能和响应速度,Python提供了asyn... 目录引言什么是异步操作?python 中的异步编程基础async 和 await 关键字asyncio 模块理论

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

poj3750约瑟夫环,循环队列

Description 有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。 Input 第一行输入小孩的人数N(N<=64) 接下来每行输入一个小孩的名字(人名不超过15个字符) 最后一行输入W,S (W < N),用

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据