三种循环语句的详解和使用(for,while,do-while)

article/2025/9/17 17:34:15

对于刚接触编程的小可爱们,肯定会碰到这三种循环,书上写的有可能会过于专业化,会让我们感觉很难理解,在这里我就用最简洁明了的表达方式帮你理解并且学会使用这三种循环。
对于大佬们,读完你也许会新体会,新发现哟[可爱]。
同时我会在最下面说一说循环的两个小跟班(break和continue
在这里插入图片描述

三种循环语句

  • for 循环
    • 结构(这还是必须要了解的)
    • 用法(简单粗暴教你会用)
  • while 循环
    • 结构(书上一般都会这样写)
    • 用法(那么简单你绝对一看就会)
  • do-while 循环
    • 结构(书上是这样的)
    • 用法(就这?)
  • 如何中途跳出循环呢
    • break(大哥)
    • continue(小弟)

for 循环

这种循环应该是用的最多的,也是一种很好理解的循环。

结构(这还是必须要了解的)

for循环的结构如下:

for(初始化表达式 ; 循环控制语句 ; 增值表达式)
{
  语句序列
}

大括号内的内容称为循环体(就是循环执行的内容)。
注意:循环体内是可以包含很多条语句的。
书上一般都会这样写,但是会让人感觉很懵逼,那我们就来翻译下[嘻嘻]。
循环其实就是重复的做一件事,在这个同时我们还要规定循环的次数(就是重复做多少遍),我们数数的过程是不是就相当于记录次数了,循环也就是这样。

for(从几开始数 ;数到几结束 ;数增加或减少)
{
  我们重复干的事
}

用法(简单粗暴教你会用)

至于使用,最简单的也就是重复输出一句话了。

int n=10; // 规定循环多少次
for(int i=0;i<n;i++)
{printf("重复做的事\n");
}

注意这里,我用了个临时变量 i 来控制循环的次数,并且是在括号内定义的,这样的好处很多(比在for外面定义好),就不细说了。
同时增值表达式不是只能写i++的(i–,i += 2,i * =3,…)这些都是可以写的,根据自己的玩法写[哈哈哈]
我们先来细说循环执行的过程:

1.首先就是执行 int i = 0 (这句话只会在刚开始循环时执行一遍,后面就不会执行了)
2.然后执行循环控制语句(i<n)
如果循环控制语句为真(此时 i<n),执行循环体(就是那句输出语句)
如果循环控制语句为假(此时 i>=n),结束本次循环
3.执行增值表达式(i++)
4.继续从2.开始往下执行(直到循环控制语句为假,退出循环)

运行结果:(当然就是输出10遍“重复做的事”,不信你数[自豪])
在这里插入图片描述
for循环能帮我们干的事有很多很多…
注意这点:初始化表达式 ,循环控制语句 ,增值表达式 ,这三个位置都是可以不写的,至于想要怎么玩就看你们自己的了。[嘻嘻]

int n=10; // 规定循环多少次
int i = 0;
for(;;)
{if(i>=10)break;printf("重复做的事\n");i++;
}

这样写的代码是和上面一样的效果的:(不信你试试)
在这里插入图片描述

同时,break和continue配合循环使用,会有很不一样的效果的,在下面我会说的。

while 循环

这种循环也是很常用的,也十分好理解,其实跟for循环差不多,只不过是把初始化条件写到外面了,把增值表达式写到里面了

结构(书上一般都会这样写)

while循环的结构如下:

while(循环控制表达式)
{
  语句序列
}

我:这种循环就很简单直白了,如果循环表达式为真就执行循环体(上面说过了),每次执行循环体前都要先判断下,知道循环表达式为假就结束循环。
读者:什么是循环体,再说一遍
笔者:得令[毕恭毕敬]

在这里插入图片描述

循环体:大括号内的所有内容,可以不止一句。

用法(那么简单你绝对一看就会)

一般来说用 while循环用于倒数或者不清楚循环次数的遍历

int n=10; 
while(n>0)
{printf("看到这里的小可爱最帅/最美\n");n--;
}

我们只要写好控制语句,每次执行循环体前就会先判断下循环控制表达式是否为真,为真就继续执行循环,否则就结束循环。
注意:如果在循环体内忘了对影响循环控制表达式的变量(就是这个 n)进行改变,就会使这个循环变成死循环(一直执行)

运行结果:
10遍当然表达不了我内心的赞美,奈何篇幅有限[卑微]

在这里插入图片描述

do-while 循环

我:这种循环有区别于while循环
读者:这不是废话吗

在这里插入图片描述
我[鼻青脸肿]:先别打,还没说完
读者:继续说吧
我[卑微,哭泣]:while循环执行循环体前都会先判断下(执行循环控制表达式),而do-while循环会在执行循环控制表达式前先执行一遍循环体(这第一遍循环体是不进行判断的,直接执行)

结构(书上是这样的)

do
{
  语句序列
}while(循环控制表达式);

用法(就这?)

这种循环用的不是很频繁,但是有时用这种循环会给力,很合适。

int n=10;
do
{printf("此时的n=%d\n",n);n--;
}while(n>0);

注意:千万不要漏掉那个 n-- ,不然也会是死循环。
当n=0时就会跳出循环了,因为执行循环体的条件是n>0

运行结果:
在这里插入图片描述
读者:不看也知道
我[卑微]:我错了,都怪我多此一举

在这里插入图片描述

如何中途跳出循环呢

有时在我们执行循环的时候并不知带具体的循环次数,或者我们想要剔除某种特殊的情况,这是就需要用到循环的两个小跟班了(break和continue)
不叫小跟班的代码:

for(int i=1;i<=10;i++) //打印1-10这10个数
{printf("%d\n",i);
}

运行结果:
在这里插入图片描述

break(大哥)

break为啥是大哥呢,因为break说让循环停,立马就结束了循环。

break:打印6前面的数
循环:不是输出10个数吗
break:把嘴给我闭上,我说个数,到6的就给我结束,不准打印

叫上break的代码:

for(int i=1;i<=10;i++) 
{if(i==6)break;printf("%d\n",i);
}

运行结果:
在这里插入图片描述

大哥果然是大哥!(佩服)

continue(小弟)

continue也想像大哥那样,奈何实力有限,只能结束一次循环体,下次循环还继续执行。
continue默默地叹了口气
在这里插入图片描述

叫上continue的代码:

for(int i=1;i<=10;i++)
{if(i==6)continue;printf("%d\n",i);
}

运行结果:
在这里插入图片描述
非常感谢读到这里的小可爱们(不妨点个赞再走吧)
别忘了关注哟[感谢][激动]

在这里插入图片描述
加油!

共同努力!

Keafmd


http://chatgpt.dhexx.cn/article/pVDAQIRP.shtml

相关文章

IO流(字符流)

IO流&#xff08;字符流&#xff09; 字符流 一.字符流是什么 字符流是可以直接读取字符的IO流字符流读取字符&#xff0c;就要先读去到字节数据&#xff0c;然后转为字符&#xff0c;如果要写出字符&#xff0c;需要把字符转为字节再写出 FileReader FileReader类的read(…

javaIO之字符流

目录 一、简介二、字符流入流1.1FileReader构造方法1.2FileReader读取字符数据 三、字符流出流3.1 FileWriter 构造方法3.2FileWriter写入数据3.3关闭close和刷新flush3.4FileWriter的续写和换行3.5文本文件复制 四、IO异常处理五、小结 一、简介 字符流 Reader 和 Writer 的故…

字符流定义及如何深入理解字符流的编码

IputSrem类和OupuSrem类在读写文件时操作的都是字节&#xff0c;如果希望在程序中操作字符&#xff0c;使用这两个类就不太方便&#xff0c;为此JDK提供了字符流。同字节流样&#xff0c;字符流也有两个抽象的顶级父类&#xff0c;分别是Reader和Writer其中&#xff0c;Reader是…

Java:字符流

字符流的底层其实就是字节流。 字符流字节流字符集 结构体系&#xff1a; 1.特点 输入流:一次读一个字节&#xff0c;遇到中文时&#xff0c;一次读多个字节。 输出流:底层会把数据按照指定的编码方式进行编码&#xff0c;变成字节再写到文件中。 2.使用场景 对于纯文本…

java的字符流

字符流的底层也是字节流。字符流字节流字符集。 特点是输入流一次读一个字节&#xff0c;遇到中文时&#xff0c;一次读多个字节&#xff08;读多少个与字符集有关&#xff09;&#xff1b;输出流底层会把数据按照指定的编码方式进行编码&#xff0c;变成字节再写到文件中。 字…

java字符流

前言 输入流&#xff1a;把数据&#xff08;键盘输入、鼠标、扫描仪等等外设设备&#xff09;读入到内存&#xff08;程序&#xff09;中 输出流&#xff1a;把内存&#xff08;程序&#xff09;中的数据输出到外设或其他地方&#xff0c;从文件角度简单总结就是&#xff0c;输…

字符流

3.字符流 3.1为什么会出现字符流 由于字节流操作中文不是特别方便&#xff0c;所以Java就提供了字符流 字符流字节流编码表 用字节流复制文本时&#xff0c;文本文件也会有中文&#xff0c;但是没有问题&#xff0c;原因是最终底层操作会自动进行字节拼接成中文&#xff0c…

字符流(字符输入流和字符输出流)

概述 当使用字节流读取文本文件时&#xff0c;可能会有一个小问题。就是遇到中文字符时&#xff0c;可能不会显示完整的字符&#xff0c;那是因为一个中文字符可能占用多个字节存储。所以Java提供一些字符流类&#xff0c;以字符为单位读写数据&#xff0c;专门用于处理文本文…

2、字符流详解

文章目录 一、字符流 (也叫转换流)1、字符输出流&#xff1a;Writer2、字符输入流&#xff1a;Reader3、字符输入流和字符输出流的简化版本4、字符缓冲流 一、字符流 (也叫转换流) 文件字符流 字符流的两个抽象父类&#xff1a;字符输出流&#xff1a;Writer 和字符输入流&…

渗透测试中的LLMNR/NBT-NS欺骗攻击

简介 LLMNR&#xff06;NBT-NS 欺骗攻击是一种经典的内部网络攻击&#xff0c;然而由于一方面了解它的人很少&#xff0c;另一方面在Windows中它们是默认启用的&#xff0c;所以该攻击到现在仍然是有效的。在本文中&#xff0c;我们首先为读者解释什么是LLMNR&#xff06;NBT…

如何避免LLMNR / NBT-NS欺骗攻击?

当DNS名称解析时&#xff0c;链路本地多播名称解析&#xff08;LLMNR&#xff09;和NetBIOS名称注册和解析服务&#xff08;NBT-NS&#xff09;会负责查找网络中所请求的主机地址。 在DNS服务器请求失败时&#xff0c;请求方会在整个网络中进行广播&#xff0c;查找所请求的主…

Active Directory 101 - LLMNR

This is the first article of my Active Directory Series. I’ll be reading through materials and try to explain the key concepts in AD and AD penetration test. Let’s cut directly to it. The Concept References: RFC from IETFLLMNR WikipediaHow LLMNR Work…

内网渗透技术之超越LLMNR/NBNS欺骗的ADIDNS欺骗攻击

利用名称解析协议中的缺陷进行内网渗透是执行中间人&#xff08;MITM&#xff09;攻击的常用技术。有两个特别容易受到攻击的名称解析协议分别是链路本地多播名称解析&#xff08;LLMNR&#xff09;和NetBIOS名称服务&#xff08;NBNS&#xff09;。攻击者可以利用这两种协议来…

利用 LLMNR 名称解析缺陷劫持内网指定主机会话

导读本文将会对 LLMNR 协议进行分析并用 python 实现质询和应答。后半部分则会重点阐述利用 LLMNR 在名称解析过程中的缺陷进行实战攻击的部分思路。 0x00 LLMNR 简介 从 Windows Vista 起&#xff0c;Windows 操作系统开始支持一种新的名称解析协议 —— LLMNR&#xff0c;主要…

LLMNR协议

LLMNR协议 http://en.wikipedia.org/wiki/Link-local_Multicast_Name_Resolution The Link Local Multicast Name Resolution (LLMNR) is a protocol based on the Domain Name System (DNS) packet format that allows both IPv4 and IPv6 hosts to perform name resolutio…

组播风暴引起的路由系统重启(LLMNR协议)

网络拓扑 一台路由设备连接可以上网的上级&#xff0c;连接方式DHCP&#xff0c;一台中继器&#xff0c;2.4G和5G同时中继到路由设备&#xff08;双频中继之后&#xff0c;优先走5G&#xff09;,一台chromecast播放视频&#xff0c;一台ipad连接&#xff0c;一台网络摄像头连接…

内网渗透研究:LLMNR和NetBIOS欺骗攻击分析

目录 基础知识 LLMNR是什么&#xff1f; LLMNR 的工作过程 NetBIOS是什么&#xff1f; Windows系统名称解析顺序 LLMNR和NetBIOS欺骗攻击 攻击原理 Responder工具利用过程 针对LLMNR和NetBIOS欺骗攻击的防御 基础知识 LLMNR是什么&#xff1f; 链路本地多播名称解析&…

LLMNR和NetBIOS欺骗攻击分析及防范

本文首发于先知社区&#xff1a;https://xz.aliyun.com/t/9714 链路本地多播名称解析&#xff08;LLMNR&#xff09;是一个基于域名系统&#xff08;DNS&#xff09;数据包格式的协议&#xff0c;IPv4和IPv6的主机可以通过此协议对同一本地链路上的主机执行名称解析。 在DNS …

llmnr协议 名称解析缺陷劫持内网指定主机会话

目录 0x00 LLMNR 简介 0x01 LLMNR 协议分析 0x02 LLMNR 名称解析过程 0x03 编程实现 LLMNR 的质询和应答 0x04 LLMNR Poison 攻击原理 0x05 利用伪造源 IP LLMNR Poisone 劫持内网指定主机会话 0x06 LLMNR Poison 实战攻击思路 0x07 总结 0x00 LLMNR 简介 从 Windows …

NetBIOS名称欺骗和LLMNR欺骗

本文原创作者&#xff1a; 贺兰山缺口 原创投稿详情&#xff1a;重金悬赏 | 合天原创投稿等你来&#xff01; NetBIOS和LLMNR简介 NetBIOS和Link-LocalMulticast NameResolution&#xff08;LLMNR&#xff09;是Microsoft针对工作组和域设计的名称解析协议&#xff0c;主要用于…