当前位置: 首页 > news >正文

C语言——循环结构:while、do...while、for

while循环

 基本结构

C语言中的while循环是一种基本的循环控制结构,它允许程序重复执行一段代码块,直到指定的条件不再满足为止。while循环的语法结构如下:

while (condition) {  // 循环体  // 在这里编写要重复执行的代码  
}
  • condition 是循环继续执行的条件。在每次循环开始前,程序都会检查这个条件。如果条件为真(即,条件表达式的值为非零),则执行循环体内的代码块;如果条件为假(即,条件表达式的值为零),则跳过循环体,继续执行循环之后的代码。
  • 循环体是{}中的代码块,它包含了每次循环时都要执行的语句。
示例:打印1到10之间的整数
#include <stdio.h>  int main() {  int i = 1; // 初始化计数器   第一个表达式:条件的初始值while (i <= 10) { // 循环条件  第二个表达式:条件的临界值printf("%d ", i); // 打印当前值  i++; // 更新计数器,为下一次循环做准备  第三个表达式:条件发生变化}  return 0;  
}

输出将是:

1 2 3 4 5 6 7 8 9 10
注意事项
  1. 无限循环:如果条件始终为真,或者循环体内部没有更改条件以使其最终变为假,while循环将变成无限循环。这通常是一个错误,应当避免。

  2. 条件更新:确保在循环体内部更新条件表达式中使用的变量,以避免无限循环。

  3. 初始化:在循环开始前初始化所有在条件表达式中使用的变量。

  4. 循环控制语句:可以使用break语句提前退出while循环,使用continue语句跳过循环体中剩余的代码,直接进入下一次循环的条件判断。

do...while循环:

基本结构:

C语言中的do...while循环是另一种循环控制结构,它与while循环类似,但有一个关键的区别:do...while循环至少会执行一次循环体内的代码,即使初始条件为假。这是因为do...while循环的条件检查是在循环体的末尾进行的,而不是在循环体的开始。

do {  // 循环体  // 在这里编写要重复执行的代码  
} while (condition);
  • condition 是循环继续执行的条件。但是,与while循环不同,do...while循环首先执行循环体,然后再检查条件。如果条件为真(即,条件表达式的值为非零),则重复执行循环体;如果条件为假(即,条件表达式的值为零),则退出循环。
示例:打印1到10之间的整数
#include <stdio.h>  int main() {  int i = 1; // 初始化计数器  do {  printf("%d ", i); // 打印当前值  i++; // 更新计数器  } while (i <= 10); // 循环条件  return 0;  
}

输出将是:

1 2 3 4 5 6 7 8 9 10
注意事项
  • 至少执行一次:由于do...while循环的特性,循环体内的代码至少会执行一次,无论条件是否满足。
  • 条件更新:与while循环一样,确保在循环体内部更新条件表达式中使用的变量,以避免无限循环(尽管在这个特定结构中,即使条件永远不满足,循环体也至少会执行一次)。
  • 初始化:在循环开始前初始化所有在条件表达式中使用的变量。
  • 循环控制语句:与while循环相同,可以使用break语句提前退出do...while循环,使用continue语句跳过循环体中剩余的代码,直接进入下一次循环的条件判断(但由于do...while循环至少执行一次,所以continue语句不会阻止循环体的首次执行)。

for循环

基本结构:

C语言中的for循环是一种非常强大且灵活的循环控制结构,它允许你指定初始化表达式、循环条件以及每次循环迭代结束时执行的更新表达式。for循环的语法结构如下:

for (初始化表达式; 循环条件; 更新表达式) {  // 循环体  // 在这里编写要重复执行的代码  
}
  • 初始化表达式:在循环开始前执行,通常用于初始化一个或多个循环控制变量。它只执行一次。
  • 循环条件:在每次循环迭代开始前检查。如果条件为真(即,条件表达式的值为非零),则执行循环体;如果条件为假(即,条件表达式的值为零),则退出循环。
  • 更新表达式:在每次循环迭代结束时执行,通常用于更新循环控制变量的值,以便在下一次迭代时重新评估循环条件。
示例:打印1到10之间的整数
#include <stdio.h>  int main() {  for (int i = 1; i <= 10; i++) {  printf("%d ", i);  }  return 0;  
}

输出将是:

1 2 3 4 5 6 7 8 9 10

在这个例子中,i = 1是初始化表达式,它只执行一次,用于初始化循环控制变量ii <= 10是循环条件,它在每次迭代开始前检查。如果i的值小于或等于10,则执行循环体(即,打印i的值)。i++是更新表达式,它在每次迭代结束时执行,用于将i的值增加1。

注意事项
  • 初始化变量for循环的初始化表达式中声明的变量(如上面的int i = 1;)具有块作用域,这意味着它们只在for循环的块内部可见。
  • 空表达式:初始化表达式、循环条件和更新表达式都可以为空(即,只包含分号;),但通常不推荐这样做,因为它可能会导致代码难以理解和维护。
  • 循环控制语句:与whiledo...while循环一样,for循环中也可以使用breakcontinue语句来控制循环的流程。break语句用于立即退出循环,而continue语句用于跳过当前迭代中剩余的代码,直接进入下一次迭代的条件判断。

break跳出循环:

计算捐献总数并在数据达到10万之后结束计数

#include<stdio.h>int main()
{int numPerson;int dnoateMoney;int money = 0;for(numPerson = 1;numPerson <= 1000;numPerson++){printf("请输入你要捐献的金额:\n");scanf("%d",&dnoateMoney);money = money + dnoateMoney;if(money >= 100000){printf("已经捐献了%d元了,达到10万元\n",money);break;  }}printf("一共有%d个人捐献,平均每个人捐献了%f元\n",numPerson,(float)money/numPerson);return 0;
}

 continue结束本次循环:

输出100—200中间能被3整除的数

#include<stdio.h>int main()
{int number;int times = 0;for(number = 100;number <= 200;number++){if(number %3 != 0){  //除3取余后不等于0,说明不能被3整除,跳出本次for循环,不进行输出continue;}times++;printf("%d\n",number);}printf("100-200中能被3整除的数有%d个\n",times);return 0;
}

相关文章:

C语言——循环结构:while、do...while、for

while循环 基本结构 C语言中的while循环是一种基本的循环控制结构&#xff0c;它允许程序重复执行一段代码块&#xff0c;直到指定的条件不再满足为止。while循环的语法结构如下&#xff1a; while (condition) { // 循环体 // 在这里编写要重复执行的代码 } condition …...

C#实现最短路径算法

创建点集 double r 200 * 500;double width 1920;double height 1080;int col (int)(r / width);int row (int)(r / height);List<(double, double)> list1 new List<(double, double)>();for (int i 0; i < row; i){var y i * height;if (y < r){va…...

Python函数 之 匿名函数

1.概念 匿名函数: 使用 lambda 关键字 定义的表达式&#xff0c;称为匿名函数. 2.语法 lambda 参数, 参数: 一行代码 # 只能实现简单的功能&#xff0c;只能写一行代码 # 匿名函数 一般不直接调用&#xff0c;作为函数的参数使用的 3.代码 4.练习 # 1, 定义匿名函数, 参数…...

深入解析 Mybatis 中 Mapper 接口的实现原理

《深入解析 Mybatis 中 Mapper 接口的实现原理》 在使用 Mybatis 进行数据库操作时&#xff0c;Mapper 接口扮演着重要的角色。它提供了一种简洁、类型安全的方式来与数据库进行交互。那么&#xff0c;Mybatis 是如何实现 Mapper 接口的呢&#xff1f; 一、Mybatis 简介 Myb…...

微信小程序获取用户头像

微信为了安全更改了许多API接口&#xff0c;属实烦人。这次带来的是微信小程序基础库3.5.0还能使用的获取用户头像方法 按键式 <view><view><button open-type"chooseAvatar" bindchooseavatar"onGetUserImage">获取用户头像</butto…...

uniapp小程序连接蓝牙设备

uniapp小程序连接蓝牙设备 一、初始化蓝牙模块二、开始搜索三、连接蓝牙四、监听特征值变化五、调用示例utils.js文件 一、初始化蓝牙模块 这一步是必须的&#xff0c;在开发项目过程中&#xff0c;初始化蓝牙模块之后&#xff0c;紧接着就要开启一些监听的api&#xff0c;供后…...

AI大模型推理过程与优化技术深度剖析

在人工智能的浩瀚星空中&#xff0c;AI大模型以其卓越的性能和广泛的应用前景&#xff0c;成为了推动技术进步的璀璨明星。本文旨在深入探讨AI大模型的推理过程及其背后的优化技术&#xff0c;为理解这一复杂而精妙的技术体系提供一个清晰的视角。 一、AI大模型的推理过程揭秘 …...

Dubbo 核心概念介绍

Dubbo 是一款阿里巴巴开源的高性能 RPC&#xff08;远程过程调用&#xff09;框架&#xff0c;广泛应用于微服务架构中。它主要解决服务治理、负载均衡、故障转移等分布式系统问题。本文将介绍 Dubbo 的核心概念&#xff0c;包括服务提供者&#xff08;Provider&#xff09;、服…...

练习 6.7:⼈们 在为练习 6.1 编写的程序中,再创建两个表⽰⼈的字典,然后将这三个字典都存储在⼀个名为 people 的列表中。

练习 6.7&#xff1a;⼈们 在为练习 6.1 编写的程序中&#xff0c;再创建两个表⽰⼈的字典&#xff0c;然后将这三个字典都存储在⼀个名为 people 的列表中。 要求 遍历这个列表&#xff0c;将其中每个⼈的所有信息都打印出来。 代码 human {shuicc: {first_name: shui,la…...

星环科技知识平台TKH:引领企业构建高效AI基础设施,加速数智化转型新纪元

5月30-31日&#xff0c;2024向星力未来数据技术峰会期间&#xff0c;星环科技正式发布其最新人工智能基础设施产品——Transwarp Knowledge Hub星环知识平台&#xff08;以下简称TKH&#xff09;。该平台旨在为企业打通从人工智能基础设施建设到大数据、人工智能等研发应用的完…...

嵌入式板级支持包(BSP)80道面试题及参考答案(3万字长文)

目录 解释什么是通用输入输出(GPIO)接口及其在BSP中的作用。 描述SPI接口的主要特点和用途。 说明IC总线协议的工作原理。 如何在BSP中配置一个UART接口? USB设备控制器在BSP中的初始化步骤是什么? 以太网接口如何在BSP中被支持? 什么是SDIO,它在哪些场景下会被使…...

如何找回误删的文件?4个常用文件恢复方法!

对于许多用户来说&#xff0c;误删文件是一种常见而令人懊恼的情况。恢复误删文件的重要性在于&#xff0c;它可以帮助用户找回宝贵的数据&#xff0c;避免因数据丢失带来的各种不便和损失。 如何找回不小心删除的文件&#xff1f; 误删数据不知道怎么恢复&#xff0c;会给我…...

在大型企业级应用中,如何优化 XML 数据的存储和检索效率,以满足高并发访问需求?

在大型企业级应用中&#xff0c;优化XML数据的存储和检索效率可采取以下措施&#xff1a; 数据库选择&#xff1a;选择适合XML存储和查询的数据库&#xff0c;如Oracle、MySQL、PostgreSQL等。这些数据库提供了专门的XML存储和查询功能&#xff0c;能够更高效地处理XML数据。 …...

win10 A4000 下使用Xinference来进行大模型的推理测试

创建环境 conda remove --name xinference --all conda create --name xinference python3.10 conda activate xinference 安装&#xff1a; conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia pip install tiktoken sentence-transformer…...

【9-2:代码规范】

算法级思想 代码规范&#xff08;java&#xff09; 代码规范&#xff08;java&#xff09; 方法参数必须一致&#xff0c;不要出现自动装箱拆箱操作SimpleDateFormat是线程不安全的使用equals注意空指针异常日志 事务场景中如果出现异常被捕时注意回滚不要再finally中使用retu…...

std::filesystem::current_path().generic_string()的bug

这行指令出来会出来大小写的盘符&#xff0c;如D 或者d&#xff0c;似乎随机 #include <iostream> #include <filesystem>namespace fs std::filesystem;bool arePathsSame(const fs::path& p1, const fs::path& p2) {return p1 p2; }int main() {fs::p…...

Python excel知识库批量模糊匹配的3种方法实例(fuzzywuzzy\Gensim)

前言 当然&#xff0c;基于排序的模糊匹配&#xff08;类似于Excel的VLOOKUP函数的模糊匹配模式&#xff09;也属于模糊匹配的范畴&#xff0c;但那种过于简单&#xff0c;不是本文讨论的范畴。 本文主要讨论的是以公司名称或地址为主的字符串的模糊匹配。 使用编辑距离算法进…...

stm32使用单通道规则组ADC

Driver_ADC.c 如果需要关闭adc转换&#xff0c;只需要设置CNT&#xff0c;将其置为0&#xff0c;后面再转换一次就停止了。 #include "Driver_ADC.h"void Driver_ADC1_Init(void) {/* 1. 时钟配置 *//* 1.1 adc时钟 */RCC->APB2ENR | RCC_APB2ENR_ADC1EN;RCC-&g…...

[python][whl]causal-conv1d的python模块在windows上whl文件下载

【模块介绍】 causal-conv1d&#xff0c;即因果一维卷积&#xff08;Causal 1D Convolution&#xff09;&#xff0c;是一种在深度学习特别是时序数据处理中广泛应用的卷积技术。它主要特点在于其“因果性”&#xff0c;即输出的每个元素仅依赖于输入序列中它之前的元素&#…...

介绍 CM3leon,一个更高效、最先进的文本和图像生成模型

近几个月来&#xff0c;随着让机器理解和表达语言的自然语言处理技术以及可根据文本输入生成图像的系统的进步&#xff0c;人们对生成式人工智能模型的兴趣和研究也在加速。今天&#xff0c;我们要展示的是 CM3leon&#xff08;发音类似于 “变色龙”&#xff09;&#xff0c;它…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...