C语言-基础了解-09-C循环

news2024/11/16 18:07:21

@C循环

一、C循环

循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的流程图:
在这里插入图片描述

二、循环类型

2.1 while 循环

当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。
语法

while(condition)
{
statement(s);
}

在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。
condition 可以是任意的表达式,当为任意非零值时都为 true。当条件为 true 时执行循环。 当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句
在这里插入图片描述
while 循环的关键点是循环可能一次都不会执行。当条件为 false 时,会跳过循环主体,直接执行紧接着 while 循环的下一条语句

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 10;

   /* while 循环执行 */
   while( a < 20 )
   {
      printf("a 的值: %d\n", a);
      a++;
   }
 
   return 0;
}

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

2.2 for 循环

多次执行一个语句序列,简化管理循环变量的代码
语法:

for ( init; condition; increment )
{
statement(s);
}
下面是 for 循环的控制流:

init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止
在这里插入图片描述

#include <stdio.h>
 
int main ()
{
   /* for 循环执行 */
   for( int a = 10; a < 20; a = a + 1 )
   {
      printf("a 的值: %d\n", a);
   }
 
   return 0;
}

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

2.3 do…while 循环

除了它是在循环主体结尾测试条件外,其他与 while 语句类似。
不像 for 和 while 循环,它们是在循环头部测试循环条件。在 C 语言中,do…while 循环是在循环的尾部检查它的条件。

do…while 循环与 while 循环类似,但是 do…while 循环会确保至少执行一次循环

do
{
statement(s);
}while( condition );

请注意,条件表达式出现在循环的尾部,所以循环中的 statement(s) 会在条件被测试之前至少执行一次。

如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 statement(s)。这个过程会不断重复,直到给定条件变为假为止
在这里插入图片描述

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 10;

   /* do 循环执行,在条件被测试之前至少执行一次 */
   do
   {
       printf("a 的值: %d\n", a);
       a = a + 1;
   }while( a < 20 );
 
   return 0;
}

在这里插入图片描述

2.4 嵌套循环

可以在 while、for 或 do…while 循环内使用一个或多个循环
C 语言中 嵌套 for 循环 语句的语法:

for (initialization; condition; increment/decrement)
{
statement(s);
for (initialization; condition; increment/decrement)
{
statement(s);
… … …
}
… … …
}

在这里插入图片描述
C 语言中 嵌套 while 循环 语句的语法:

while (condition1)
{
statement(s);
while (condition2)
{
statement(s);
… … …
}
… … …
}

在这里插入图片描述
C 语言中 嵌套 do…while 循环 语句的语法:

do
{
statement(s);
do
{
statement(s);
… … …
}while (condition2);
… … …
}while (condition1);

在这里插入图片描述
for 嵌套实例

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int i, j;
   
   for(i=2; i<100; i++) {
      for(j=2; j <= (i/j); j++)
        if(!(i%j)) break; // 如果找到,则不是质数
      if(j > (i/j)) printf("%d 是质数\n", i);
   }
 
   return 0;
}

while 嵌套实例

#include <stdio.h>
int main()
{
    int i=1,j;
    while (i <= 5)
    {
        j=1;
        while (j <= i )
        {
            printf("%d ",j);
            j++;
        }
        printf("\n");
        i++;
    }
    return 0;
}

do-while 嵌套实例

#include <stdio.h>
int main()
{
    int i=1,j;
    do
    {
        j=1;
        do
        {
            printf("*");
            j++;
        }while(j <= i);
        i++;
        printf("\n");
    }while(i <= 5);
    return 0;
}

在这里插入图片描述

三、循环控制语句

3.1 break语句

终止循环或 switch 语句,程序流将继续执行紧接着循环或 switch 的下一条语句
C 语言中 break 语句有以下两种用法:

当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
它可用于终止 switch 语句中的一个 case。
如果使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 10;

   /* while 循环执行 */
   while( a < 20 )
   {
      printf("a 的值: %d\n", a);
      a++;
      if( a > 15)
      {
         /* 使用 break 语句终止循环 */
          break;
      }
   }
 
   return 0;
}

3.2 continue语句

告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代
C 语言中的 continue 语句有点像 break 语句。但它不是强制终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。

对于 for 循环,continue 语句执行后自增语句仍然会执行。对于 while 和 do…while 循环,continue 语句重新执行条件判断语句
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 10;

   /* do 循环执行 */
   do
   {
      if( a == 15)
      {
         /* 跳过迭代 */
         a = a + 1;
         continue;
      }
      printf("a 的值: %d\n", a);
      a++;
     
   }while( a < 20 );
 
   return 0;
}

3.3 goto语句

将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句
C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的语句。

注意:在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法

goto label;

.
label: statement;

在这里,label 可以是任何除 C 关键字以外的纯文本,它可以设置在 C 程序中 goto 语句的前面或者后面

在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 10;
 
   /* do 循环执行 */
   LOOP:do
   {
      if( a == 15)
      {
         /* 跳过迭代 */
         a = a + 1;
         goto LOOP;
      }
      printf("a 的值: %d\n", a);
      a++;
     
   }while( a < 20 );
 
   return 0;
}

在这里插入图片描述

四、无限循环

如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环

#include <stdio.h>
 
int main ()
{
   for( ; ; )
   {
      printf("该循环会永远执行下去!\n");
   }
   return 0;
}

当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,但是一般情况下,C 程序员偏向于使用 for(;; ) 结构来表示一个无限循环。

注意:可以按 Ctrl + C 键终止一个无限循环

菜鸟教程,学习记录

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

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

相关文章

【虹科案例】虹科任意波形发生器在量子计算中的应用

虹科AWG在量子计算中的应用精度在研究中始终很重要&#xff0c;很少有研究领域需要比量子研究更高的精度。奥地利因斯布鲁克大学的量子光学和量子信息研究所需要一个任意波形发生器&#xff08;AWG&#xff09;来为他们的研究生成各种各样的信号。01无线电频率第一个应用是在射…

C++——类型转换

目录 C语言中的类型转换 C强制类型转换 static_cast reinterpret_cast const_cast dynamic_cast 延伸问题 RTTI&#xff08;了解&#xff09; C语言中的类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或…

JAVA开发(Spring Gateway 的原理和使用)

在springCloud的架构中&#xff0c;业务服务都是以微服务来划分的&#xff0c;每个服务可能都有自己的地址和端口。如果前端或者说是客户端直接去调用不同的微服务的话&#xff0c;就要配置不同的地址。其实这是一个解耦和去中心化出现的弊端。所以springCloud体系中&#xff0…

aws apigateway 使用restapi集成http

参考资料 https://docs.aws.amazon.com/zh_cn/lambda/latest/dg/services-apigateway-tutorial.html restapi代理集成http 在 HTTP 代理集成中&#xff0c;apigateway会将客户端提交的方法请求传递至后端。传递的请求数据包括请求标头、查询字符串参数、URL 路径变量和paylo…

SVN项目迁移到Git方法

本文记录如何将SVN项目迁移到Git&#xff0c;并保留提交日志信息。 目录Git和SVN差异环境准备Git安装、配置项目迁移1. 将源SVN库转换到Git本地仓库2. 添加Git远程库地址3. 推送代码到Git常见错误参考文档Git和SVN差异 Git是一个开源的分布式版本控制系统&#xff0c;由Linux之…

一、策略模式的使用

1、策略模式定义&#xff1a; 策略模式&#xff08;Strategy Pattern&#xff09;定义了一组策略&#xff0c;分别在不同类中封装起来&#xff0c;每种策略都可以根据当前场景相互替换&#xff0c;从而使策略的变化可以独立于操作者。比如我们要去某个地方&#xff0c;会根据距…

云原生应用配置管理的5个最佳实践

引言 在复杂的云原生应用程序中管理配置信息是非常困难的&#xff0c;似乎到处都有配置。在使用基于微服务架构的云原生应用程序中&#xff0c;配置问题成倍增加。 配置无处不在。有针对网络的配置&#xff0c;比如路由规则、端口控制、负载均衡&#xff0c;有针对数据库的配置…

JavaScript Boolean 布尔对象

文章目录JavaScript Boolean 布尔对象Boolean 对象Boolean 对象属性Boolean 对象方法检查布尔对象是 true 还是 false创建 Boolean 对象JavaScript Boolean 布尔对象 Boolean&#xff08;布尔&#xff09;对象用于将非布尔值转换为布尔值&#xff08;true 或者 false&#xff0…

CSS常用选择器

目录 1.CSS是什么 2.CSS的三种写法 2.1内部样式 2.2内联样式 2.3外部样式 3.CSS选择器 3.1标签选择器 3.2类选择器(更好的选择) 3.3ID选择器 3.4后代选择器 3.5子选择器 3.6并集选择器 3.7伪类选择器(复合选择器的特殊用法) 1.CSS是什么 CSS全称Cascding Style Sh…

「兔了个兔」CSS如此之美,看我如何实现可爱兔兔LOADING页面(万字详解附源码)

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…

汽车诊断UDS通信协议总结

UDS通信过程 UDS&#xff08;Unified Diagnostic Services&#xff09;是一种用于汽车诊断的通信协议&#xff0c;它是基于CAN&#xff08;Controller Area Network&#xff09;总线的一种高层协议。 下面是UDS通信的基本流程&#xff1a; 建立诊断会话&#xff1a;通过CAN总…

【VC 7/8】vCenter Server 基于文件的备份和还原Ⅲ—— 使用 SMB 协议备份 VC(VAMI 中文)

目录2.2 使用 SMB 协议备份 VC&#xff08;VAMI 中文&#xff09;&#xff08;1&#xff09;登录 vCenter Server 管理界面&#xff08;2&#xff09;进入备份页面&#xff08;3&#xff09;配置 Backup Schedule&#xff08;4&#xff09;开始备份&#xff08;5&#xff09;备…

ios 通过搜索设备MAC地址绑定

最近做了一个物联网项目,涉及到了设备绑定配网这块,需要了解一下iOS BLE与设备绑定的相关知识点,第一次接触蓝牙相关的项目,所以开始熟悉蓝牙的相关信息。没有去深入研究BabyTooth库&#xff0c;只是感觉CoreBluetooth已经让我更好的理解整个流程这个物联网项目的设备绑定流程是…

sheng的学习笔记-Actuator健康监控

前言在微服务系统里&#xff0c;对微服务程序的运行状况的跟踪和监控是必不可少的&#xff1b;例如GPE&#xff0c;TelegrafinfluxDB都提供了微服务体系监控的方案&#xff0c; ZIPKIN&#xff0c; Skywalking都提供了微服务云体系的APM的方案&#xff1b; 这些解决方案功能全面…

Thumbnailator快速入门

简介 Thumbnailator 是一个开源的 Java 项目&#xff0c;它提供了非常简单的 API 来对图片进行缩放、旋转以及加水印的处理。 有多简单呢&#xff1f;简单到一行代码就可以完成图片处理。形式如下&#xff1a; Thumbnails.of(new File("path/to/directory").listF…

IDEA搭建vue-cli | vue-router | 排错思路、Webpack、Axios、周期、路由、异步、重定向

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Vue.js概述 Vue 是一套用于构建用户界面的渐进式JavaScript框架。 与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层…

IDEA集成Git就是这么简单

IDEA集成Git 文章目录IDEA集成Git配置Git环境配置Git的忽略文件①为什么需要配置忽略文件&#xff1f;②配置忽略文件③引用配置文件配置IDEA初始化项目添加到暂存区方式一&#xff1a;方式二&#xff1a;移除暂存区提交到本地库分支创建分支切换分支版本穿梭配置Git环境 配置…

应届大学生学什么技术好?哪些技术适合年轻人?

到了毕业季&#xff0c;应届大学生面临的就是就业问题&#xff0c;很多专业的大学生难以找到对口的工作&#xff0c;或是不得已随便就业&#xff0c;或者是学个技术高薪就业&#xff0c;那么&#xff0c;问题来了&#xff0c;应届大学生学什么技术好&#xff1f;哪些技术适合年…

XC7K160T-1FBG484I、XC7A100T-2CSG324I FPGA可编程门阵列 PDF规格书

1、XC7K160T-1FBG484I说明&#xff1a;Kintex-7 FPGA有-3、-2、-1、-1L和-2L速度等级&#xff0c;其中-3具有最高的性能。-2L器件被筛选为较低的最大静态功率&#xff0c;并且可以在较低的核心电压下运行&#xff0c;以获得比-2器件更低的动态功率。-2L工业(I)温度器件仅在VCCI…

C#教程03-- 数据类型

文章目录 C#数据类型值类型(Value types)引用类型对象(Object)类型动态(Dynamic)类型字符串(String)类型C#数据类型 在 C# 中,变量分为以下几种类型: 值类型(Value types) 引用类型(Reference types) 指针类型(Pointer types) 值类型(Value types) 值类型…