【芝士总结】史上最详循环结构讲解(蒟蒻也能学会)

news2024/10/7 20:32:52

虽然计算机可以在短时间批量处理成千上万条指令,但是不少问题中有许多规律性的重复操作,比如说计算几百个学生的平均分,或者对上万人的名单进行排序。仅使用顺序或者分支结构,对每一步操作都写出对应的语句是不可能的;但可以使用循环语句让计算机反复执行类似的任务。

所以循环逝肥肠重要的

一、循环逝什么

循环 顾名思义就是循环往复,重复的做一些事情。在程序语言中,循环是反复执行某些代码的一种计算机处理过程;可以说,执行循环才是计算机程序的强大之处。

二、循环的分类

循环分为while循环和for循环两种,接下来我将为大家依次讲解

1.区别

for循环的表达式为:for(单次表达式;条件表达式;末尾循环体){中间循环体;}。

while循环的表达式为:while(表达式){循环体}。

1、结构不同

 

二、执行条件的判断方式不同

for循环执行末尾循环体后将再次进行条件判断,若条件还成立,则继续重复上述循环,当条件不成立时则跳出当下for循环。

while循环当满足条件时进入循环,进入循环后,当条件不满足时,执行完循环体内全部语句后再跳出(而不是立即跳出循环)。

三、使用的目的不同

for循环的目的是为了限制循环体的执行次数,使结果更精确。

while循环的目的是为了反复执行语句或代码块。

四、语法不同

while循环的语法为:while (<条件>) {需执行的代码 }。

for循环的语法为:for (变量 = 开始值;变量 <= 结束值;变量 = 变量 + 步进值) {需执行的代码 }

三、实践

好了大家应该已经知道区别了叭。接下来就是怎么用了

例:蔡徐坤老师需要让我们输出100遍只因你太美,不过如果一句一句手写的话手会废掉,蔡徐坤就无法再打篮球了,所以我们要想出一种更加简便,短小的代码来避免这种问题发生,那么用什么呢?当然是循环辣

 所以我们一起来帮一下蔡徐坤老师叭,因为这里有固定数量10,所以我们要用for会更好一点!

for(int i=1;i<=10;i++){//for循环模板
    cout<<"只因你太美";//输出
}//大括号,不过如果里面只有一句话是可以省略的

这样蔡徐坤老师就可以更好的打篮球了

四、多重循环(这里以双重循环来讲,n重是一样的道理)

1. 格式

for(初始化语句;判断条件语句;控制条件语句)
{
   循环体语句;
   for(初始化语句;判断条件语句;控制条件语句)
   {
       循环体语句;
   }
}

紫色:外层循环;蓝色:内层循环
在这里插入图片描述

 五、练习(我们要做练习时长两年半的人!)

《烤 只 因》

问题描述
猪猪 Hanke 特别喜欢吃烤只因(本是同畜牲,相煎何太急!)Hanke 吃只因很特别,为什么特别呢?因为他有 10种配料(芥末、孜然等),每种配料可以放 1 到 3 克,任意烤只因的美味程度为所有配料质量之和。

现在, Hanke 想要知道,如果给你一个美味程度 n ,请输出这 10 种配料的所有搭配方案。

输入
一个正整数 n ,表示美味程度。

输出
第一行,方案总数。

第二行至结束,10 个数,表示每种配料所放的质量,按字典序排列。

如果没有符合要求的方法,就只要在第一行输出一个 0。

样例
输入数据 1
11
输出数据 1
10
1 1 1 1 1 1 1 1 1 2 
1 1 1 1 1 1 1 1 2 1 
1 1 1 1 1 1 1 2 1 1 
1 1 1 1 1 1 2 1 1 1 
1 1 1 1 1 2 1 1 1 1 
1 1 1 1 2 1 1 1 1 1 
1 1 1 2 1 1 1 1 1 1 
1 1 2 1 1 1 1 1 1 1 
1 2 1 1 1 1 1 1 1 1 
2 1 1 1 1 1 1 1 1 1 
提示
数据范围
对于 100% 的数据,n≤5000 。

这题看上去很难也很长,but它只需要简单的两个十重循环就能完美搞定!

所以直接上代码,代码没有什么好讲好注释的,就是纯纯暴力

#include<bits/stdc++.h>
using namespace std;
int main()  {   
    int n,sum=0;  
    cin>>n;  
    for(int a=1;a<=3;a++)  {  
        for(int b=1;b<=3;b++)  {  
            for(int c=1;c<=3;c++){  
                for(int d=1;d<=3;d++){  
                    for(int e=1;e<=3;e++){  
                        for(int f=1;f<=3;f++){  
                            for(int g=1;g<=3;g++){  
                                for(int h=1;h<=3;h++){  
                                    for(int i=1;i<=3;i++){  
                                        for(int j=1;j<=3;j++){  
                                            if(a+b+c+d+e+f+g+h+i+j==n)sum++;  
                                        }  
                                    }  
                                }  
                            }  
                        }  
                    }  
                }  
            }  
        }  
    }  
    cout<<sum<<endl;  
    for(int a=1;a<=3;a++){  
        for(int b=1;b<=3;b++){  
        	for(int c=1;c<=3;c++){  
                for(int d=1;d<=3;d++){  
                    for(int e=1;e<=3;e++){  
                        for(int f=1;f<=3;f++){  
                            for(int g=1;g<=3;g++){  
                                for(int h=1;h<=3;h++){  
                                    for(int i=1;i<=3;i++){  
                                        for(int j=1;j<=3;j++){  
                                            if(a+b+c+d+e+f+g+h+i+j==n){  
                                                cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f<<" "<<g<<" "<<h<<" "<<i<<" "<<j<<endl;  
                                            }  
                                        }  
                                    }  
                                }  
                            }  
                        }  
                    }  
                }  
            }  
        }  
    }  
    return 0;  
}

大家应该学会了叭,这期就到这里了,我们下期再见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/454904.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何用链表实现LRU缓存淘汰算法

链表学习 一、 缓存1.1缓存介绍1.2 缓存策略 二、链表结构2.1 单链表2.2 循环链表2.3 双向链表2.4 双向循环链表2.5 链表与数组性能对比 三、如何基于链表实现LRU缓存淘汰算法 一、 缓存 1.1缓存介绍 缓存是一种提高数据读取性能的技术&#xff0c;在硬件设计、软件开发中都有…

参数与非参数检验:理解差异并正确使用

数据科学是一个快速发展的领域&#xff0c;它在很大程度上依赖于统计技术来分析和理解复杂的数据集。这个过程的一个关键部分是假设检验&#xff0c;它有助于确定从样本中获得的结果是否可以推广到总体。 在这篇文章中&#xff0c;我们将探讨参数与非参数检验之间的区别&#…

微信小程序对接在线客服系统,对接小程序订阅消息模板,小程序订阅方法以及后端发送订阅模板消息的方法...

微信小程序想要对接独立在线客服系统&#xff0c;除了使用小程序消息推送接口外&#xff0c;还可以使用webview嵌入的形式嵌入聊天链接。 但是&#xff0c;使用webview嵌入的形式&#xff0c;当用户离开页面以后&#xff0c;就收不到客服回复的消息了 所以&#xff0c;我们需要…

HTML5 <s> 标签、HTML5 <sub> 和 <sup> 标签

HTML5 <s> 标签 定义和用法 <s> 标签定义加删除线的文本。HTML 5 中不再支持这个标签。请使用 CSS 代替。 HTML 4.01 与 HTML 5 之间的差异 在 HTML 4.01 中不赞成使用 <s> 标签。 在 HTML 5 中不支持 <s> 标签。 提示和注释 提示&#xff1a;请…

Oracle Linux 9 上基于 Docker 安装 Kubernetes 1.27 集群

Oracle Linux 9 上基于 Docker 安装 Kubernetes 1.27 集群 1. 禁用swap2. 禁用防火墙3. 将SELinux设置为permissive模式4. 添加网桥过滤及内核转发配置文件5. 加载 overlay、br_netfilter、ip_tables、iptable_filter 模块6. 安装 docker-ce7. 安装kubelet kubeadm kubectl8. 初…

【Java面试八股文】JVM篇

引言&#xff1a; 本文对多个平台的面试题进行了汇总、分类、概括、整理&#xff0c;对重点进行了标出&#xff0c;更便于阅读和记忆。 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题 目录 说说你了解的JVM内存模…

UE5实现建筑剖切效果

文章目录 1.实现目标2.实现过程2.1 材质参数集2.2 材质遮罩函数2.3 更新Box3.参考资料1.实现目标 基于BoxMask材质节点,在UE5中实现建筑物的剖切效果,GIF动图如下: 2.实现过程 实现原理与之前“BoxMask实现建筑生长效果”的原理相同,都是基于BoxMask材质节点实现。 具体实…

二分查找<万字详解>

目录 问题引入 二分查找的思路 二分查找的实现 左闭右闭写法 左闭右开写法 两种写法的对比 例题强化 常规的二分查找题目 猜数字大小 搜索插入位置 常规二分的变形题目 搜索二维矩阵 搜索二维矩阵 II 查找特定位置/特定数 在排序数组中查找元素的第一个和最后一…

DIN11系列 大电流输出信号隔离模块线性驱动器0~100mA/0~500mA/0~2A/0-4A

主要特性 精度、线性度误差等级&#xff1a; 0.1、0.2、0.5 级4-20mA/0-5V/0-10V 等标准信号输入0~100mA/0~500mA/0~1A/0-5A 等电流信号输出0~1V(max 5A)/0~10V/0-24V(max 5A) 等电压信号输出信号输入/信号输出 3000VDC 隔离辅助电源&#xff1a;12V、15V 或 24V 直流单电源供…

IJKPLAYER源码分析-音视频同步

前言 本文来介绍下IJKPLAYER的音视频同步策略及方法。IJKPLAYER所支持的同步策略&#xff0c;源自FFPLAY&#xff0c;因此有以下3种&#xff1a; 音视同步视频&#xff1a;这是缺省的同步策略&#xff0c;以audio为主时钟-参考时钟&#xff0c;采取video同步audio的方式&#x…

电子模块|外控集成 LED 光源 WS2812模块---硬件介绍和stm32驱动

电子模块|外控集成 LED 光源 WS2812模块 模块简介模块特点机械尺寸单线归零码通讯方式24bit 数据结构 stm32 驱动 模块简介 WS2812是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同&#xff0c;每个元件即为一个像素点。像素点内部包含了智能…

【小样本分割 2020 ICCV】PANet

文章目录 【小样本分割 2020 ICCV】PANet1. 简介2. 网络2.1 整体架构2.2 原型学习2.3 非参数度量学习2.4 原型对齐正则化 3. 代码3.1 backbone3.2 模型代码 【小样本分割 2020 ICCV】PANet 论文题目&#xff1a;PANet: Few-Shot Image Semantic Segmentation with Prototype Al…

IDEA下SpringBoot指定配置文件启动项目

目录 一. idea下的SpringBoot启动&#xff1a;指定配置文件 二. 项目已打包&#xff0c;运行配置 1&#xff09;.使用java -jar启动基于(一)下的配置文件启动 2&#xff09;指定项目内其它配置文件application-pro.yml启动项目 3&#xff09; Linux服务器上启动基于(三)的…

OneFlow源码解析:Eager模式下Tensor的存储管理

作者&#xff5c;郑建华 1 不同Tensor类型的存储管理方式 Lazy Tensor 的存储是由 Runtime 和 Actor 等对象管理的。静态图完成编译后&#xff0c;需要多少个对象、多少存储空间都是确定的&#xff0c;Runtime 等在初始化时会分配存储&#xff0c;在退出时回收资源。 Eager 模…

SpringBoot--图片验证码kaptcha

本文介绍如何在SpringBoot中整合kaptcha&#xff0c;以及如何配置kaptcha&#xff0c;生成验证码和校验等 文章目录 前言环境搭建项目结构添加依赖 代码实现KaptchaConfigKnife4jConfigdomainServiceutilcontroller 测试生成验证码校验验证码 前言 参考链接&#xff1a; Gith…

设计模式:结构型模式 - 适配器模式

文章目录 1.概述2.结构3.类适配器模式4.对象适配器模式5.应用场景6.JDK源码解析 - Reader 与 InputStream 1.概述 如果去欧洲国家去旅游的话&#xff0c;他们的插座如下图最左边&#xff0c;是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑&#xff0c;手机…

【Android车载系列】第9章 车载通信-Socket实现IPC通信机制(实现仿FdBus效果)

1 FDBus简介 FDBus 基于 Socket (TCP 和 Unix domain) 之上的IPC机制, 采用 Google protobuf 做序列化和反序列化。 FDBus还支持字符串形式的名字作为server地址。通过 name server 自动为 server 分配Unix domain 地址和 TCP 端口号, 实现 client 和server 之间用服务名字寻址…

【C++】哈希的应用:位图和布隆过滤器

目录 1. 位图1.1 位图的概念1.2 位图的结构1.3 位图的实现 2. 布隆过滤器2.1 概念2.2 结构2.3 布隆过滤器的实现 1. 位图 1.1 位图的概念 &#x1f4ad;位图&#xff08;bitset&#xff09;是一种基于哈希思想设计的数据结构&#xff0c;其功能主要用于判断数据是否已存在。适…

【设计模式】模板方法模式--让你的代码更具灵活性与可扩展性

文章目录 前言模板方法模式的定义核心组成模板方法模式与其他设计模式的区别 代码实现抽象类具体类Client 经典类图spring中的例子 总结 前言 在软件开发中&#xff0c;设计模式是一种经过实践检验的、可复用的解决方案&#xff0c;它们可以帮助我们解决某一特定领域的典型问题…

【2023 · CANN训练营第一季】应用开发深入讲解——第一章 模型转换(1)

学习目标 学习资源 1.模型转换 模型转换基础 在线课程 文档AIPP功能说明 文档 应用开发&#xff08;初级&#xff09; 课程目标&#xff1a; 了解AscendCL的使用场景、基本概念、基本开发流程。 学会使用AscendCL接口开发基础推理应用&#xff0c;应用中包含对图片的基本处理…