三种常见循环结构

article/2025/7/2 18:22:18

        问:求1-100的所有自然数之和。

        生活中看到这个问题我们会用数学老师教的简便计算:1+2+...+100=(1+100)(2+99)+(50+51)=50*101=5050;但是计算机并不会简便计算,它只会单纯的1+2+3+...+100,但我们敲代码的时候不可能一个一个数敲进去让计算机计算,此时我们就可以用到循环结构

        循环结构可以多次重复地执行固定的语句,这些固定语句称为循环体,而判定循环是否继续进行的条件就叫做循环条件,我们可以通过循环变量来控制循环条件是否成立

        在C语言中,有三种循环结构,分别是:while循环、do...while循环和for循环,下面结合开头的例子来分析每一种循环的特点。

---------------------------------------------------------------------------------------------------------------------------------

while循环

循环结构:

while(循环条件){循环体
}

结构分析: 

        while循环第一次进入循环体之前会先判断一次循环条件循环条件成立执行循环体循环条件不成立直接结束循环语句;当第一次循环体执行完毕后会再次进行循环条件判断成立就继续执行,直到循环条件不成立就结束循环 

例题实现:

#include<stdio.h>
int main(){int sum=0,i=1;        //i=1用于给循环变量赋初值while(i<=100){        //i<=100是循环条件,当满足时进行循环体,不满足时就结束循环sum+=i;           //{}号中的内容都是循环体,而i++就是用来使循环变量i值i++;              //产生变化,当i到达某个值时循环条件不成立while循环结束}printf("while:1-100的自然数和:%d",sum);return 0;
} 

代码测试:

---------------------------------------------------------------------------------------------------------------------------------

do...while循环

循环结构:

do{循环体
}while(循环条件);

结构分析:  

        do...while循环直接进入循环体,当第一次循环体执行完毕后才会进行循环条件判断,成立就继续执行,直到循环条件不成立就结束循环

例题实现:

#include<stdio.h>
int main(){int sum=0,i=1;              //i=1用于给循环变量赋初值do{                         //{}号中的内容都是循环体,而i++就是用来使循环变量i值sum+=i;                 //产生变化,当i到达某个值时循环条件不成立while循环结束i++;}while(i<=100);             //i<=100是循环条件,当满足时进行循环体,不满足时就结束循环printf("do...while:1-100的自然数和:%d",sum);return 0;
} 

代码测试:

---------------------------------------------------------------------------------------------------------------------------------

for循环

循环结构:

for(循环变量初值; 循环条件; 循环变量增减操作){循环体
}

结构分析:  

        for循环第一次进入循环体之前会先判断一次循环条件循环条件成立执行循环体循环条件不成立直接结束循环语句;当第一次循环体执行完毕后会先进行循环变量增减操作然后进行循环条件判断,成立就继续执行,直到循环条件不成立就结束循环

例题实现:

#include<stdio.h>
int main(){int sum=0;for(int i=1;i<=100;i++){//定义了i作为循环变量赋初值为0,i++作为循环变量的操作,//i<=100作为循环条件sum+=i;             //{}中的内容为循环体}printf("for:1-100的自然数和:%d",sum);return 0;
} 

代码执行:

---------------------------------------------------------------------------------------------------------------------------------

关键:

while 和 do-while 循环,循环体中应包含用控制循环结束的语句(例如循环变量);for循环本身就可以通过循环变量控制是否结束。
while 和 do-while 循环,循环变量的初始化操作应该在 while 和 do-while 语句之前完成 ;for 循环可以在内部实现循环变量的初始化

---------------------------------------------------------------------------------------------------------------------------------

跳出循环

        使用循环结构时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用breakcontinue

break

 作用:

         break 会终止循环直接执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。(注:一个break只能跳出一层循环)

例:

//通过while循环求1-100累加和,当和首次超过4500时,累加了多少次
#include<stdio.h>
int main(){int sum=0,i=0;        while(i<=100){	  sum+=i;   if(sum>4500) break;   i++;         }printf("当累加了%d次时,值超4500,此时sum=%d",i,sum);return 0;
} 

代码分析:

        根据题意,求累加到sum>4500时累加了多少次,当满足sum>4500时break结束循环,此时求i的值就是累加的次数。

代码执行:

continue

作用:

        continue 会跳过本次循环体中剩余的语句而强制进入下一次循环,判断循环条件是否成立。continue语句只用在 while、for 循环中,常与 if 条件语句一起使用,即满足条件则跳过本次循环。

例:

//通过while循环求1-100的偶数和
#include<stdio.h>
int main(){int sum=0,i=0;        while(i<=100){i++;  if(i%2==1) continue ;       sum+=i;             }printf("while:1-100的偶数和:%d",sum);return 0;
} 

代码分析: 

        求偶数和,那么奇数就不需要累加到总和中,循环体内判断i是否是奇数,如果是就跳过后面的累加操作,进入下一次循环先判断i<=100,成立则进入循环体否则直接结束循环。

代码执行:

--------------------------------------------------------------------------------------------------------------------------------

 例:循环输入一个数字,输入数字只能在1~9的范围内,并计算数字的和,最多输入 15次,最后输入的和不能超过100,超过100则此次游戏失败并结束,只有正好等 于100游戏胜利。 

//代码实现
#include<stdio.h>
#define max 15
int main(){int a,sum=0,i;for(i=0;i<max;i++){                    //初始化循环变量,用于记录输入的第几个数printf("请输入第%d个数:",i+1);scanf("%d",&a);if(a>9||a<1){                      //判断输入的数是否合法,若不合法则重新提示printf("请重新输入!\n");        //输入该次序的数,同时i--;否则会少计算一个数i--; continue;}sum+=a;if(sum>100) break;                 //当sum>100时游戏结束直接结束循环即可}if((i>=max) && (sum==100)) printf("胜利!\n");else printf("失败!");return 0;
}

运行结果:

 


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

相关文章

简单的5种循环结构

ilili 循环结构 1. For循环 重复重复 for 循环语句&#xff1a; for(初始化变量&#xff1b;循环条件&#xff1b;循环迭代){ 循环语句&#xff1b; } for(var i0;i<count;i){ sumsumi; } document.write(""sum); 迭代就是和— —的意思 例子: var sum0; for…

C语言—循环结构

目录 循环结构 循环控制语句 ​ 循环类型 一.while循环 语法 break在while循环中的作用 continue在while循环中的作用 多组输入 清空输入缓存区 二.for循环 语法 三.do while 语法 break和continue在do while循环中的使用 循环结构 循环结构是指在程序中需要反…

利用汉字在计算机里面的编码来得到汉字的首拼音:

利用汉字在计算机里面的编码来得到汉字的首拼音&#xff1a; static public string GetChineseSpell( string strText) {int len strText.Length;string myStr "";for(int i0;i<len;i){myStr getSpell(strText.Substring(i,1));}return myStr;} static publ…

获取中文拼音首字符

2019独角兽企业重金招聘Python工程师标准>>> http://pinyin4j.sourceforge.net/ 转载于:https://my.oschina.net/soho00147/blog/1633932

Excel中文转换为拼音(大写首字母、小写首字母、全拼、全拼首首字母大写)

很多时候我们需要处理一下汉字转换为拼音的需求&#xff0c;今天给大家分享一下标题包含的一下转换方法 1 、excel通过宏可以很好的处理汉字转换为拼音的 1.1下面的是转为全拼音的宏代码 Function pinyin(p As String) As String i Asc(p) Select Case i Case -20319 To -203…

php 获取字符串完整拼音,PHP 获取中文字符串的首字符拼音字母

class"php"><?php header(Content-Type: text/html; charsetutf-8); $str"阅谁问君诵&#xff0c;水落清香浮"; echo getFirstCharCode($str); function getFirstCharCode($str){ $str iconv("UTF-8","gb2312", $str); $targe…

拼音首字符检索

原理很简单&#xff0c;找出汉字表中拼音首字符分别为“A”至“Z”的汉字内码范围&#xff0c;这样&#xff0c;对于要检索的汉字只需要检查它的内码位于哪一个首字符的范围内&#xff0c;就可以判断出它的拼音首字符。 程序更简单&#xff0c;包括3个控件&#xff1a;一个…

C#中获得汉字的首拼音(加强版)

/// <summary> /// 汉字拼音首字母列表/// 包含了20901个汉字,收录的字符的Unicode编码范围为19968至40869/// </summary>#region ChineseCharListprivate static string[] ChineseCharList { "A阿啊锕嗄厑哎哀唉埃挨溾锿鎄啀捱皑凒溰嘊敳皚癌毐昹嗳矮蔼躷噯…

C#获得汉字的首拼音

利用汉字在计算机里面的编码来得到汉字的首拼音&#xff1a; static public string GetChineseSpell( string strText) ... { int len strText.Length; string myStr ""; for(int i0;i<len;i) ...{ …

PHP中文字符串转化为英文首拼音首字母大写

效果&#xff1a; 中国 >ZG 中文转化为英文首字母 中国&#xff1a;ZG &#xff1b;中2国&#xff1a;ZG&#xff1b;z国&#xff1a;ZG1:省略了数字&#xff08;不转化&#xff09; 用法&#xff1a; $result Character::getEnByCnByString(‘i是中国人’,3);//这边的3为截…

使用完整拼音查找汉字(完整拼音,不是网上散布的首字符拼音那种方法)

注意&#xff1a;这绝不是网上散播的只能使用拼音首字符进行汉字查找的方案&#xff0c;这是一个真正的输入完整拼音得到相应汉字的解决办法。 大部分程序员眼中只有变量、函数……他们忽略生活中的一切&#xff0c;他们并不理解真正的优雅的程序解决方案往往来自生活&#xff…

基于LeNet5实现交通标志分类任务

前言 大家好,我是阿光。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPy…

Lenet5网络结构

Lenet5网络是深度学习中最基本的网络结构,开始于90年代,最早是应用于手写数字识别。受限于当时的环境,所以一开始不怎么出名。但是,在2012年,出现了Alexnet,在图像分类领域打败了所有机器学习方法。深度学习开始变得火热。 import torch import torch.nn as nn import t…

[PyTorch][chapter 41][卷积网络实战-LeNet5]

前言 这里结合前面学过的LeNet5 模型&#xff0c;总结一下卷积网络搭建&#xff0c;训练的整个流程 目录&#xff1a; 1&#xff1a; LeNet-5 2: 卷积网络总体流程 3&#xff1a; 代码 一 LeNet-5 LeNet-5是一个经典的深度卷积神经网络&#xff0c;由Yann LeCun在1998年提…

(一)Lenet5 手写数字识别原理及代码解析

模型简单&#xff0c;本地可跑 论文参考&#xff1a;Gradient-based learning applied to document recognition MNIST手写数据集 50000个训练数据 10000个测试数据 图像大小2828 10类&#xff08;0-9&#xff09; 一、python预安装库 pip install torch pip install torchvi…

【LeNet5】简单车牌识别

文章目录 1. 项目准备1.1. 问题导入1.2. 数据集简介 2. LeNet5模型2.1. 卷积神经网络2.2. 模型介绍 3. 实验步骤3.0. 前期准备3.1. 数据准备3.2. 网络配置3.3. 模型训练3.4. 模型评估3.5. 模型预测 写在最后 1. 项目准备 1.1. 问题导入 本次实践是一个多分类任务&#xff0c;…

LeNet5—论文及源码阅读

LeNet5实现图像分类 &#x1f42c; 目录: 一、概论二、论文选读三、源码精读 所用数据集介绍LeNet5模型网络构建LeNet5模型训练 测试代码 四、参考资料 一、概论 LeNet-5是一种经典的卷积神经网络结构&#xff0c;于1998年投入实际使用中。该网络最早应用于手写体字符识别应…

重学深度学习系列---LeNet5实现手写数字识别(TensorFlow2-mnist数据集)

重学深度学习系列—LeNet5实现手写数字识别(TensorFlow2-mnist数据集) 文章目录 重学深度学习系列---LeNet5实现手写数字识别(TensorFlow2-mnist数据集)我的环境&#xff1a;一、LeNet5简单介绍二、LeNet-5代码实现三、训练四、对图片进行预测五、训练过程截图&#xff1a;参考…

经典网络-LeNet-5

上图展示展示了 LeNet-5 模型的架构。 是Yann LeCun 教授于1998 年在论文Gradient-based learning applied to document recognition中提出的&#xff0c;它是第一个成功应用于数字识别问题的卷积神经网络。 LeNet-5 详细结构 在下面的篇幅中将详细介绍LeNet-5 模型每一层的…

深度学习---卷积神经网络之LeNet5(TensorFlow 代码实现)

一、前言 1.1 使用全连接神经网络对图像进行处理存在的问题 1、需要处理的数据量大&#xff0c;效率低 现在的图像都有着极高的像素&#xff0c;假设一张需要处理的图片像素是 1000 * 1000 * 3(彩色图片&#xff0c;具有 RGB 3 个通道)&#xff0c;使用具有 100 个隐藏单元的…