C语言基础应用(五)循环结构

news2024/11/15 21:56:59

引言

如果要求1+2+3+…+100,你会怎么求解呢?
如果按照常规代码

int main() {
    int sum =0;
    sum += 1;
    sum += 2;
    sum += 3;
    ...
    sum += 100;
    printf("The value of sum is %d\n",sum);
    return 0;
}

就会特别麻烦,并且代码过于冗长。下面将引入循环的概念,将更合理地解决此类问题。

一、while语句实现循环

while语句的一般形式:
while(表达式) 语句
注:
循环体:while后面的语句称为循环体。

针对while循环,我们可以简易地记成 只要循环条件表达式为真,就可以执行循环体语句。
针对引言的问题,现给出用whlie语句实现的代码:

int main() {
    int sum,i = 1;
    while(i <= 100) {
        sum += i;
        i++;
    }
    printf("The value of sum is %d\n",sum);
    return 0;
}

运行结果:
在这里插入图片描述
需要注意的是:
1、循环体如果是多个语句,则需要用花括号括起来作为复合语句使用。如果不加花括号,while语句的范围就只到while后面第一个分号处。
2、循环体中应该有让循环结束的语句。就如上述代码的i++;
while循环是由i进行控制,当i不超过100时,继续执行循环体代码;每次循环结束前,i都会加一;当i超过100时,则循环结束。

二、do…while语句实现循环

2.1 do…while的一般实现

do…while的一般形式为:
do
语句
while(表达式);

同样我们也可以用do…while来实现上述问题

int main() {
    int sum,i = 1;
    do{
        sum += i;
        i++;
    } while (i <= 100);
    printf("The value of sum is %d\n",sum);
    return 0;
}

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

2.2do…while与while的区别

我们以具体的问题进行分析。
Q:要求输入一个整数i,求i到10的和。

2.2.1用while进行实现

A:

int main() {
    int sum = 0,i;
    printf("Input a number:\n");
    scanf("%d",&i);
    while(i <= 10) {
        sum += i;
        i++;
    }
    printf("The value of sum is %d\n",sum);
    return 0;
}

先输入一个小于10的数:
在这里插入图片描述
再输入一个大于10的数:
在这里插入图片描述
我们可以看到,由于i值大于10,所以并没有执行循环体语句。

2.2.2用do…while进行实现

A:

int main() {
    int sum = 0,i;
    printf("Input a number:\n");
    scanf("%d",&i);
    do {
        sum += i;
        i++;
    } while (i <= 10);
    printf("The value of sum is %d.\n",sum);
    return 0;
}

运行结果:
先输入一个小于10的数:
在这里插入图片描述
再输入一个大于10的数:
在这里插入图片描述
可以看到,这时输出的sum值为11,这是因为在do…while中,是先执行循环体语句,再进行条件判断。

三、for语句实现循环

for语句的一般形式为:
for(表达式1;表达式2;表达式3)
语句

表达式1:设置初始条件,只执行1次。可以为0个(即没有)、一个或者多个变量设置初值。
表达式2:循环条件的表达式,用来判断是否还需要继续循环。在每次执行循环体之前先执行此表达式。
表达式3:作为循环的调整,如可以使循环变量增值,该表达式是在执行完循环体后才进行的。

for语句的常用形式为:
for(循环变量赋初值;循环条件;循环变量增值)
语句

针对引言的问题,现给出用for语句实现的代码:

int main() {
    int sum = 0,i;
    for(i=1;i <= 100;i++) {
        sum += i;
    }
    printf("The value of sum is %d.\n",sum);
    return 0;
}

for语句里面的三个表达式均可省略。

四、break和continue语句

我们以一个具体问题进行分析
Q:找出0-10的偶数。

4.1 break

break语句可以提前终止循环。
A:

int main() {
    int sum = 0,i = 0;
    while(i <= 10) {
        if(i % 2 == 0) {
            printf("%d\t",i);
            i++;
            break;
        }
        i++;
    }
    return 0;
}

运行结果:
在这里插入图片描述
运行结果并不符合我们对0-10之间的偶数的认知,说明break语句用在此处不合理(此处代码并不符合题目要求,此处使用break旨在区分break与continue的区别)
i从0开始执行,在执行循环体语句时,i可以整除2,执行了break。当执行break语句后,该循环就没在继续执行,如果继续执行了,后面应该还会输出2,4,6…
所以break就直接结束了最近的一次循环。

4.1 continue

continue结束是本次循环,而不是整个循环。
A:

int main() {
    int sum = 0,i = 0;
    while(i <= 10) {
        if(i % 2 == 0) {
            printf("%d\t",i);
            i++;
            continue;
        }
        i++;
    }
    return 0;
}

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

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

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

相关文章

硬件知识的基础学习

GPIO、继电器、三极管、PWM、MOS管 的 输入与输出。 本人没有系统的学习过专业的硬件知识&#xff0c;只有在实践过程中向前辈简单的学习&#xff0c;若有问题&#xff0c;还请大佬指正。 目录 一、GPIO 1.1 输入与输出的区别 1.2 输入 1.2.1 电流流向和电阻区分上拉输入…

动力节点老杜Vue笔记——Vue程序初体验

目录 一、Vue程序初体验 1.1 下载并安装vue.js 1.2 第一个Vue程序 1.3 Vue的data配置项 1.4 Vue的template配置项 一、Vue程序初体验 可以先不去了解Vue框架的发展历史、Vue框架有什么特点、Vue是谁开发的&#xff0c;对我们编写Vue程序起不到太大的作用&#xff0c;…

计算机网络 实验六

⭐计网实验专栏&#xff0c;欢迎订阅与关注&#xff01; ★观前提示&#xff1a;本篇内容为计算机网络实验。内容可能会不符合每个人实验的要求&#xff0c;因此以下内容建议仅做思路参考。 一、实验目的 掌握以太网帧的格式及各字段的含义掌握IP包的组成格式及各字段的含义掌…

java中HashMap的使用

HashMap 键值对关系&#xff0c;值可以重复&#xff0c;可以实现多对一&#xff0c;可以查找重复元素 记录&#xff1a; 做算法遇到好多次了&#xff0c;就总结一下大概用法。 例如今天遇到的这个题&#xff1a; 寻找出现一次的数&#xff0c;那就使用哈希表来存储&#xf…

X射线吸收光谱知识点

1) 什么是XAS XAS是X-ray Absorbtion Spectra的缩写&#xff0c;全称为X射线吸收光谱。X射线透过样品后&#xff0c;其强度发生衰减且其衰减程度与材料结构、组成有关。这种研究透射强度I与入射X射线强度Io之间的关系&#xff0c;称为X射线吸收光谱;由于其透射光强与元素、原子…

express项目的创建

前言 前端开发者若要进行后端开发&#xff0c;大多都会选择node.js&#xff0c;在node生态下是有大量框架的&#xff0c;其中最受新手喜爱的便是老牌的express.js&#xff0c;接下来我们就从零创建一个express项目。 安装node 在这里&#xff1a;https://nodejs.org/dist/v16…

《Linux0.11源码解读》理解(一)

计算机启动时, 内存(RAM)没有任何东西, 自然也无法跑操作系统. 但是可以执行固化在ROM里面的BIOS程序. 在按下电源键的一刻. CPU的cs和ip寄存器硬件被设置为0xf000和0xfff0, 于是cs:ip也就指向0xffff0这个地址, 而这个地址正是指向了ROM的BIOS范围(这里是0xfe000~0xfffff, 20根…

2023 减少人工标注,获取大量数据的能力

关键词&#xff1a; 零样本泛化能力模型 半监督 减少人工标注成本&#xff1a; 1、CVPR 2023 | 单阶段半监督目标检测SOTA&#xff1a;ARSL https://zhuanlan.zhihu.com/p/620076458 2、CVPR 2023 | 标注500类&#xff0c;检测7000类&#xff01;清华大学等提出通用目标检测算…

Java版本工程行业管理系统源码-专业的工程管理软件-提供一站式服务

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示1…

java Excel清除表格条件格式规则

© Ptw-cwl 目录 文章目录 目录Excel清除表格条件格式规则1.开始 -> 条件格式2.条件格式 -> 清除规则3.管理规则也能删除 代码报java.lang.IllegalArgumentException: Specified CF index 43 is outside the allowable range (0..42)如何解决源码 Excel清除表格条件…

初识Spring框架

文章目录 IOC &#xff08;Inverse of Control 控制反转&#xff09;DI &#xff08;Dependency Injection 依赖注入&#xff09;入门案例 --- 组件、注册第一步、引入依赖第二步、编写配置文件 ---xml从官网查看 xml 格式 然后保存为模板 注册组件 ---在配置文件 xml 文件中写…

c/c++:visual studio的代码快捷键,VS设置自定义默认代码,使用快捷键

c&#xff1a; 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;此时学会c的话&#xff0c; 我所知道的周边的会c的同学&#xff0c;可手握10多个offer&#xff0c;随心所欲&#xff0c;而找啥算法岗的&#xff0c;基本gg 提…

文心一言作画:有点东西但不多...

随着ChatGPT的持续火热 与AI领域有关的话题 是越来越热闹了 前几天百度发布 “文心一言” 自然也成了网友们 重点关注的对象 不过大家的目光主要还是集中在 文心一言的绘画功能上 在人工智能加成下出来的画面 一个比一个绝 成功颠覆 大家对绘画的认知 生意火爆的商铺…

ATTCK v12版本战术介绍——防御规避(三)

一、引言 在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权战术、防御规避部分理论知识及实战研究&#xff0c;本期我们为大家介绍ATT&CK 14项战术中防御规避战术技术第13-18种技术&#xff0c;后续会介绍防御规避其他子技术&#xff0…

跨网摆渡系统如何实现数据安全传输,从而驱动业务流转?

在这个数据驱动的时代&#xff0c;一次数据泄露就可能影响到数亿甚至数十亿人。数字化转型进一步推动了数据的移动&#xff0c;而随着攻击者加速利用日常生活中的数据依赖性&#xff0c;数据泄露也正随之扩大。一旦边界的防线被攻破或绕过&#xff0c;攻击者就可以在数据中心内…

python数据清洗

数据清洗包括&#xff1a;空值&#xff0c;异常值&#xff0c;重复值&#xff0c;类型转换和数据整合 这里数据清洗需要用到的库是pandas库&#xff0c;下载方式还是在终端运行 &#xff1a; pip install pandas. 首先我们需要对数据进行读取 import pandas as pddata pd.read…

MySQL的索引和锁

MySQL的索引和锁 一.存储引擎1.1 MySQL体系结构1). 连接层2). 服务层3).存储引擎层4). 存储层 1.2 存储引擎介绍1). 建表时指定存储引擎2). 查询当前数据库支持的存储引擎 1.3 存储引擎特点1.3.1 InnoDB1.3.2 MyISAM 1.4 存储引擎选择 二 索引2.1 索引概述2.1.1 介绍2.2.2 B-Tr…

【数据库开发】国产数据库之涛思TDengine

文章目录 1、简介2、安装2.1 安装TDengine服务2.2 运行TDengine服务&#xff08;taosd&#xff09;2.3 执行TDengine命令行&#xff08;taos&#xff09; 3、测试3.1 新建数据库&#xff08;命令行命令&#xff09;3.2 新建数据库&#xff08;脚本文件&#xff09;3.3 命令行参…

KlayGE-004-InputCaps 例子分析

InputCaps处理外部输入的事件 该例子主要由两部分内容&#xff1a; 外部输入事件获取 ​ 可以处理keyboard、mouse、joystick、touch、sensor的输入事件 显示一个ui图标按钮 Input 定义监听事件类型&#xff1a; KlayGE::InputActionDefine actions[] {InputActionDefin…

【opencv】图像数字化——认识OpenCV中的Mat类(4 访问单通道Mat对象中的值)

4 访问单通道Mat对象中的值 4.1使用成员函数at() 格式&#xff1a;m.at(r,c)&#xff0c;访问第r行c列 #include <opencv2/core/core.hpp> #include<iostream> using namespace std; using namespace cv; int main() {//构造矩阵Mat m (Mat_<int>(3,…