C语言基础13:循环结构 for和while

循环结构

什么是循环结构

代码在满足某种条件的前提下,重复执行,就叫做循环结构。

循环的分类

  • 无限循环:其实就是死循环,程序设计中尽量避免无限循环,如果非要使用,那么这个循环一定要在可控范围内。
  • 有限循环:循环限定循环次数或者终止循环的条件。

循环的构成

  • 循环条件
  • 循环体

当型循环的实现

特点:先判断,后执行,如果条件不满足,一次都不执行

典型代表:while循环和for循环

while

语法:

//写法1:省略{}
while (循环条件)循环语句;//单语句//写法2:保留{}
while (循环条件)
{循环语句;//可以是单语句,可以是复合语句
}

说明:

​ 1.循环条件的返回值必须是逻辑值(布尔类型,条件表达式只能是关系表达式或者逻辑表达式,可以是具体的值(0、非0,false、true))。在C语言中使用0和非0来表示关系表达式或者逻辑表达式的值,如果引入<stdbool.h>,也可也用true或false来表示。

​ 2.{ }包起来的内容整体称之为循环体

​ 3.我们要在循环体中控制循环条件的变化,否则产生死循环

执行过程:

在这里插入图片描述

特点:

先判断,后执行,循环体语句可能一次都不执行。

案例:

  • 需求:求1~100的累加和

  • 分析:

    • 创建一个变量sum = 0,用来接受累加和
    • 创建一个变量i,用来表示计算数,我们给i初始值i= 1,每次循环的时候,让i++
    • 在循环中,使用sum+=i,完成累加和计算
    • 同时我们要限定i的范围i <= 100
      • 第一次 :sum += i= 0 + 1 = 1 0+1
      • 第二次:sum += i = 1 + 2 = 3 1+2
      • 第三次:sum += i = 3 + 3 = 6 1+2+3
  • 代码:

    /*************************************************************************> File Name:    demo01.c> Author:         ZK> Description: while循环案例:求1~100的累加和> Created Time: 2025年02月12日 星期三 09时44分51秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
    {//定义两个变量,sum存储累加和,i用来存储计算数int sum = 0,i = 1;while(i <= 100){//累加和计算sum += i;//sum = sum + i;i++;}printf("1~100的累加和是%d\n",sum);return 0;
    }

案例:

  • 需求:求1~100以内的偶数和。

  • 分析:

    • 创建两个变量,一个变量sum用来存储偶数和,一个变量i用作循环变量
    • 创建一个循环,设置循环条件:i <=100
    • 在循环体中,需要使用一个if语句判断i是否为偶数 if(i % 2 == 0),如果满足,就求偶数和:sum += i
    • 在循环体 的最后一行,写代码改变循环变量的值:i++
    • 循环结束,打印输出sum
  • 代码:

    /*************************************************************************> File Name:    demo02.c> Author:       ZK> Description: while案例:求1~100以内的偶数和 > Created Time: 2025年02月12日 星期三 10时02分54秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
    {//创建两个变量,一个变量sum用来存偶数和,一个变量i用来存循环变量int i = 1,sum = 0;//循环求和while (i <= 100){//过滤奇数if (i % 2 == 0)sum += i;i++;//改变循环变量的值}printf("1~100的偶数和是%d\n",sum);return 0;
    }

死循环:

while (1)
for…

原则上,for循环能实现的,while循环一定可以实现,for循环可以看作是while循环的一种特殊写法。

语法:

for (①表达式1;②表达式2;③表达式3)
{④循环体语句;//如果是单语句,可以省略{};如果是复合语句,必须保留{ }
}

说明:

​ ①( )中可以只保留;;,举例:for(;;),此时就是for循环的死循环

​ ②表达式1循环变量,我们需要赋初值,循环变量可以是单个,也可以是列表,多个循环变量使用逗号分隔

​ ③表达式2循环条件,用来限制循环的次数,循环条件支持关系表达式、逻辑表达式,举例:i < 10 && j<=i

​ ④表达式3改变循环变量(条件),支持列表,这里可以使用赋值表达式,举例:i++,j--

​ ⑤执行顺序:①②④③→②④③→②④③→…→②

// 

执行过程:

在这里插入图片描述

特点:先判断,后执行循环体语句有可能一次都不执行。

案例:

/*************************************************************************
> File Name:
demo03.c
> Author:
FPF
> Description: for循环案例
> Created Time: 2025年02月12日 星期三 10时52分51秒
************************************************************************/
#include <stdio.h>
#include <math.h>
/**
* 需求:while循环案例:计算1~100以内的偶数和
*/
int while_test()
{// 创建一个变量用来存储sumint sum = 0;// 创建一个循环变量,并初始化(表达式1)int i = 2;// 循环while(i <= 100) // 循环条件(表达式2){// 过滤调奇数 循环体语句if (i % 2 == 0){sum += i;}// 改变循环条件(表达式3)i++;}printf("1~100以内的偶数和是%d\n",sum);
}
/**
* 需求:for循环案例:计算1~100以内的偶数和
*/
int for_test()
{// 创建一个变量用来存储sumint sum = 0;// 创建一个循环变量,并初始化(表达式1)int i = 2;// 循环for(;i <= 100;) // 循环条件(表达式2){// 过滤调奇数 循环体语句if (i % 2 == 0){sum += i;}// 改变循环条件(表达式3)i++;}printf("1~100以内的偶数和是%d\n",sum);
}
/**
* 需求:for循环案例:计算1~100以内的偶数和
*/
int for_test2()
{// 创建一个变量用来存储sumint sum = 0;// 循环for(int i = 2; i <= 100; i++) // 循环条件(表达式2){// 过滤调奇数 循环体语句if (i % 2 == 0){sum += i;}}printf("1~100以内的偶数和是%d\n",sum);
}
/**
* for循环案例
* 需求:用户可以通过键盘录入一个整数n,用来作为阶乘的最高位,比如n = 5,那么阶乘表示:1 * 2 * 3 * 4
* 5
*/
int for_test3()
{// 创建一个变量,接收控制台输入的整数nint n;// 创建一个变量,用来接收阶乘的结果int r = 1;printf("请输入一个整数:\n");scanf("%d",&n);// 使用for循环实现阶乘 fabs()求绝对值,需要引入 math.hfor (int i = 1; i <= fabs(n); i++){r *= i;}printf("1~%d之间的阶乘的将结果是%d\n",(int)fabs(n),r);
}
int main(int argc,char *argv[])
{while_test();for_test();for_test2();for_test3();return 0;
}

死循环:

for (表达式1;;表达式3)
for(;;)

循环实现的三要素:

  • 循环变量的初始化,举例:int i = 2;
  • 循环条件,举例:i <= 100
  • 循环变量的更新,举例:i++

案例:

  • 需求:求斐波拉契数列前20个

  • 分析:

    • 斐波拉契数列指的是符合一定规则的数列,举例:1,1,2,3,5,8
    • 斐波拉契数列的特点是第2个就等于前两个数之和,最开始的第1,2数是固定的,都是1
  • 代码:

    /*************************************************************************> File Name:    demo04.c> Author:       ZK> Description:  for循环案例:求斐波拉契数列的前20位> Created Time: 2025年02月12日 星期三 11时31分44秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
    {int i = 1;//定义一个循环变量int f1 = 1;//数列第一位int f2 = 1;//数列第二位for (;i <= 10;i++){printf("%d %d ",f1,f2);//第一次:1 1 2 3f1 += f2;f2 += f1;}return 0;
    }

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

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

相关文章

【核心特性】从鸭子类型到Go的io.Writer设计哲学

在编程语言的设计中&#xff0c;鸭子类型和接口设计是两种非常重要的理念。它们都强调了对象的行为和能力&#xff0c;而非其具体的类型或继承关系。Go 语言的io.Writer 接口是这种设计理念的典型代表&#xff0c;它通过简洁的接口定义&#xff0c;实现了强大的功能和灵活性。 …

C++17 中的 std::gcd:探索最大公约数的现代 C++ 实现

文章目录 一、std::gcd 的基本用法&#xff08;一&#xff09;包含头文件&#xff08;二&#xff09;函数签名&#xff08;三&#xff09;使用示例 二、std::gcd 的实现原理三、std::gcd 的优势&#xff08;一&#xff09;简洁易用&#xff08;二&#xff09;类型安全&#xff…

CMA软件评测机构测量不确定度评定具体怎么做?

测量不确定度作为测量结果的一部分&#xff0c;是评价测量活动质量的重要指标&#xff0c;也是CMA软件评测机构衡量检测结果准确性和可靠性的重要参数。本文为您介绍CMA软件评测机构测量不确定度评定具体应该怎么做。 在申请CMA资质时&#xff0c;软件评测机构需要制定《测量不…

vue项目网页图标修改

参考:https://blog.csdn.net/qq_53911056/article/details/144744699 在Vue项目中修改网页图标&#xff08;favicon&#xff09;是一个相对简单的过程。以下是详细的步骤&#xff1a; 准备新的图标文件 准备一个新的图标文件&#xff08;通常是 .ico 格式&#xff0c;但也支持其…

资料搜集-内存屏障

0. 引用 内存屏障详解-CSDN博客 为什么需要内存屏障&#xff1f;_mesi 内存屏障-CSDN博客 内存屏障与CPU优化&#xff1a;理解多核系统中的数据一致性-CSDN博客 内存屏障今生之Store Buffer, Invalid Queue_storebuffer-CSDN博客 内存屏障&#xff08;Memory Barrier&…

【Java八股文】01-Java基础面试篇

【Java八股文】01-Java基础面试篇 概念Java特点Java为什么跨平台JVM、JDK、JRE关系 面向对象什么是面向对象&#xff0c;什么是封装继承多态&#xff1f;多态体现的方面面向对象设计原则重载重写的区别抽象类和实体类区别Java抽象类和接口的区别抽象类可以被实例化吗 深拷贝浅拷…

线程池-抢票系统性能优化

文章目录 引言-购票系统线程池购票系统-线程池优化 池化 vs 未池化 引言-购票系统 public class App implements Runnable {private static int tickets 100;private static int users 10000;private final ReentrantLock lock new ReentrantLock(true);public void run() …

Python解决“数字字符串千分位转化”问题

Python解决“数字字符串千分位转化”问题 问题样例 解决代码 问题 A在工作时遇到了一个问题&#xff0c;他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式&#xff0c;并且保留小数部分。A还发现&#xff0c;有时候输入的数字字符串前面会有无用的 0&am…

【多模态大模型】系列1:Transformer Encoder——ViLT、ALBEF、VLMO

目录 1 ViLT2 ALBEF3 VLMO 1 ViLT ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision 图文多模态任务&#xff0c;关键是提取视觉特征和文本特征&#xff0c;然后对齐。在之前的多模态研究工作中&#xff0c;视觉侧通常需要一个目标检测器来…

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第二节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析&#xff08;ECU复位0x11服务&#xff09; 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025-02-12 关键词&#xff1a;UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 二、ECU复位服务&#xff08;0x11服务&…

关于AutoTokenizer.from_pretrained-----deepseek的回答

AutoTokenizer.from_pretrained 是 Hugging Face 的 transformers 库中的一个方法&#xff0c;用于加载预训练的 tokenizer。Tokenizer 是自然语言处理&#xff08;NLP&#xff09;中的一个重要组件&#xff0c;负责将文本转换为模型可以理解的数字形式&#xff08;如 token ID…

百度 API 教程 001:显示地图并添加控件

目录 01、基本使用 前期准备 显示地图 开启鼠标滚轮缩放地图 02、添加地图控件 添加标准地图控件 添加多个控件 网址&#xff1a;地图 JS API | 百度地图API SDK 01、基本使用 前期准备 注册百度账号 申请成为开发者 获取密钥&#xff1a;控制台 | 百度地图开放平台…

c语言判断一个文件的文件格式

在 Linux 下使用 C 语言判断一个文件的文件格式&#xff0c;通常需要检查文件的头信息&#xff08;也称为“幻数”或“魔数”&#xff09;。不同的文件格式在文件头有特定的字节序列&#xff0c;这些字节序列可以用来确定文件的类型。以下是一个基本的示例&#xff0c;展示了如…

电容器教程摘要

正如我们将在本电容器教程中看到的那样&#xff0c;电容器是能够在其板上存储电荷的能源。因此&#xff0c;电容器由于存储充电的能力而存储能量&#xff0c;理想的电容器不会松散其存储的能量。 电容器的简单结构是使用两个平行的导电金属板通过绝缘材料通过距离分开。这种绝…

【通俗易懂说模型】一篇弄懂几个经典CNN图像模型(AlexNet、VGGNet、ResNet)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;深度学习_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …

【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA

【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA data source1: BH coordination tabledata source2:BH layer tableprocess 1:Collect BH List To Layer Tableprocess 2:match Reduced Level from "Layer"+"BH"data source1: BH coordination…

汇编简介常用语法

为什么要有汇编 因为Cortex-A芯片一上电SP指针还没初始化&#xff0c;C环境还没准备 好&#xff0c;所以肯定不能运行C代码&#xff0c;必须先用汇编语言设置好C环境&#xff0c;比如初始化DDR、设置SP 指针等等&#xff0c;当汇编把C环境设置好了以后才可以运行C代码 GNU语法…

内网ip网段记录

1.介绍 常见的内网IP段有&#xff1a; A类&#xff1a; 10.0.0.0/8 大型企业内部网络&#xff08;如 AWS、阿里云&#xff09; 10.0.0.0 - 10.255.255.255 B类&#xff1a;172.16.0.0/12 中型企业、学校 172.16.0.0 - 172.31.255.255 C类&#xff1a;192.168.0.0/16 家庭…

深入了解 MySQL:从基础到高级特性

引言 在当今数字化时代&#xff0c;数据的存储和管理至关重要。MySQL 作为一款广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;凭借其高性能、可靠性和易用性&#xff0c;成为众多开发者和企业的首选。本文将详细介绍 MySQL 的基础概念、安装启…

2025年中国AI大模型综合排名及分析

&#xff08;基于2025年1月-2月多机构测评数据整合&#xff09; 一、综合排名与核心能力对比 根据SuperCLUE、艾媒咨询等机构最新评测数据&#xff08;截至2025年2月&#xff09;&#xff0c;中国主流AI大模型在综合性能、垂直场景适配性、成本效率等维度表现如下&#xff…