【C语言易错点】循环结构

news2024/11/18 22:25:38

文章目录

  • 🍔什么是循环结构
  • 🎍易错点
    • ⭐概述
    • ✨具体实例

在这里插入图片描述

🍔什么是循环结构

C语言的循环结构是一种控制结构,用于重复执行一段代码,直到满足某个条件为止。C语言提供了三种主要的循环结构:for循环、while循环和do-while循环。

  1. for循环: for循环具有以下形式:
for (初始化表达式; 循环条件; 循环后表达式) {
    // 循环体
}

其中,初始化表达式在循环开始前执行一次,用于初始化循环控制变量;循环条件判断是否继续循环;循环后表达式在每次循环结束后执行,用于更新循环控制变量的值。它们可以为空表达式或是多个表达式以逗号分隔。循环体是需要重复执行的代码块。

  1. while循环: while循环具有以下形式:
while (循环条件) {
    // 循环体
}

在每次循环开始前,先判断循环条件是否满足,如果满足则执行循环体,然后再次判断循环条件,直到循环条件不满足时跳出循环。

  1. do-while循环: do-while循环具有以下形式:
do {
    // 循环体
} while (循环条件);

首先执行一次循环体,然后再判断循环条件是否满足,如果满足则继续执行循环体,直到循环条件不满足时跳出循环。do-while循环至少会执行一次循环体。

🎍易错点

⭐概述

  1. 循环条件错误:循环的条件表达式必须是一个逻辑表达式,结果为真(非零)或假(0)。如果条件表达式出现错误,循环可能会无法正常终止或根本不能进入循环体。
  2. 循环变量的初始化和更新:在for循环中,循环变量的初始化和更新部分需要正确设置。如果初始化或更新表达式出现错误,循环可能无法按照预期的方式运行。
  3. 缺少循环终止条件:在while和do-while循环中特别容易出现这个问题。如果没有正确设置循环终止条件,循环可能会变成无限循环,导致程序陷入死循环,并造成系统资源的浪费。
  4. 循环计数器错误:在某些情况下,循环计数器的使用可能会导致错误。例如,在for循环中,循环计数器的更新部分可能错误地增加或减少循环计数器的值,导致循环次数错误。
  5. 循环控制流程错误:在循环体内部,正确的循环控制语句(如break和continue)的使用非常重要。错误地使用这些语句可能导致程序逻辑错误或循环无法按照预期方式执行。
  6. 不恰当的嵌套循环:嵌套循环是一种常见的循环结构,但容易出现问题。在嵌套循环中,循环变量和循环条件的使用必须谨慎,以确保内部循环和外部循环能够正确互动。

以上只是一些常见的C语言循环结构易错点,如果编写循环时不注意细节,还可能出现其他错误。因此,在编写循环结构时,建议仔细检查循环条件、循环变量、循环控制流程等关键部分,确保代码的正确性和可靠性。

✨具体实例

1.循环条件错误

// 错误示例:缺少循环条件,导致无限循环
while (1) {
    // ...
}

// 错误示例:误将赋值语句放入循环条件,导致死循环
int i = 0;
while (i = 10) {
    // ...
}

2.循环变量的初始化和更新错误

// 错误示例:未正确初始化循环变量,导致不可预测的结果
int i;
for (; i < 10; i++) {
    printf("%d ", i);
}

// 错误示例:循环更新条件出错,导致循环次数错误
for (int i = 0; i < 10; i--) {
    printf("%d ", i);
}

3.缺少循环终止条件

// 错误示例:缺少循环终止条件,导致无限循环
int i = 0;
while (1) {
    if (i>=10) {
        break;
    }
    printf("%d ", i++);
}

// 错误示例:循环终止条件出错,导致循环次数错误
int i = 0;
while (i++ < -1) {
    printf("%d ", i);
}

4.循环计数器错误

// 错误示例:循环计数器更新量错误,导致循环次数错误
for (int i = 0; i < 10; i+2) {
    printf("%d ", i);
}

// 错误示例:循环计数器出现重复定义,导致编译错误
for (int i = 0; int j = 0; i < 10; i++) {
    printf("%d ", i);
}

5.循环控制流程错误

// 错误示例:误用continue语句,导致跳过部分循环体代码
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        continue;
    }
    printf("%d ", i);
}

// 错误示例:误用break语句,导致提前跳出循环体
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break;
    }
    printf("%d ", i);
}

6.不恰当的嵌套循环

// 错误示例:内层循环变量和外层循环变量同名,导致逻辑错误
for (int i = 0; i < 10; i++) {
    for (int i = 0; i < 5; i++) {
        printf("%d ", i);
    }
}

// 错误示例:内层循环没有正确终止,导致无限循环
for (int i = 0; i < 10; i++) {
    for (int j = 0; ; j++) {
        printf("%d ", j);
    }
}

以上例子仅供参考,实际开发中可能还会有其他错误。因此,编写循环结构时应该谨慎,注意细节,确保程序的正确性和可靠性

在这里插入图片描述

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

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

相关文章

谷歌真的不喜欢 Node.js ?

有人在 Quora 上提问&#xff0c;为什么谷歌不喜欢 Node.js 呢&#xff0c;Google 的 UX 工程师和来自 Node.js 团队的开发者分别回答了他们对这个问题的看法&#xff0c;对于编程语言来说&#xff0c;每一门语言都有它自己的优势&#xff0c;重要的是如何用它去解决问题。 谷…

目标检测算法改进系列之嵌入动态蛇形卷积模块DySnakeConv

动态蛇形卷积模块DySnakeConv 血管、道路等拓扑管状结构的精确分割在各个领域都至关重要&#xff0c;确保下游任务的准确性和效率。 然而&#xff0c;许多因素使任务变得复杂&#xff0c;包括薄的局部结构和可变的全局形态。在这项工作中&#xff0c;我们注意到管状结构的特殊…

【万字长文】向 AI 提问的艺术

向 AI 提问的艺术 本文是我在学习 Prompt Engineering 过程中&#xff0c;总结出来的一些经验和方法。里边包含一些自己的心得和验证有效的技巧。这些技巧在很多其他文章中也有介绍&#xff0c;这里可以当作是一个集大成的汇总。 我会按照“道——法——术”三个层面来介绍向 …

微信公众号自动回复消息中添加网页链接和小程序链接

微信公众号自动回复消息中添加网页链接和小程序链接 1.添加网页链接2.添加小程序链接3.配置案例4.效果展示5.其他说明6.总结 1.添加网页链接 <a href"https://sejoos.com">SEJOOS</a>2.添加小程序链接 <a href"https://sejoos.com" data-…

云安全—docker原理

0x00 前言 因为要学习docker相关的检测技术&#xff0c;所以需要对docker的原理进行基本的原因&#xff0c;不求彻底弄懂&#xff0c;但求懂点皮毛&#xff0c;如有不妥之处&#xff0c;还请斧正。 0x01 docker概述 docker起源 docker公司是在旧金山&#xff0c;由法裔美籍…

凡哥说机丨双十一网络电视盒子哪个品牌好?目前最强电视盒子

跟平时相比&#xff0c;双十一的价格更低&#xff0c;近来我的后台也收到了超级多的私信咨询电视盒子的问题&#xff0c;凡哥这期将盘点的是目前最强的电视盒子&#xff0c;双十一想买电视盒子不知道网络电视盒子哪个品牌好&#xff0c;那一定不能错过这篇文章了。 推荐一&…

本地FTP YUM源报错处理

一、问题描述 某次OS升级到Anolis 8.6后&#xff0c;但是还需要centos 6.5的yum源&#xff0c;恢复回去后&#xff0c;yum更新&#xff0c;报如下错误&#xff1a; Errors during downloading metadata for repository ‘base’: Curl error (8): Weird server reply for ftp…

基于springboot小区团购管理系统

基于springboot小区团购管理系统的设计与实现 摘要 小区团购管理系统是一款基于Spring Boot框架的Web应用&#xff0c;为小区居民提供了一个方便的平台&#xff0c;以协调和管理各种团购活动。该系统的主要目标是促进小区居民之间的互助合作&#xff0c;通过集中采购来降低商品…

c进阶测试题

选择题 1.请问该程序的输出是多少&#xff08;C&#xff09; #include<stdio.h> int main(){unsigned char i 7;int j 0;for(;i > 0;i - 3){ j;} printf("%d\n", j);return 0; }A. 2 B. 死循环 C. 173 D. 172 首先unsigned char型是不会为负数&#xff…

分享一个逻辑题_一眼望去无法下手

1. 这道题的答案是 A.A B.B C.C D.D 2. 第 5 题的答案是 A.C B.D C.A D.B 3. 以下选项中哪一题的答案与其他三项不同 A. 第 3 题 B. 第 6 题 C. 第 2 题 D. 第 4 题 4. 以下选项中哪两题的答案相同 A. 第 1&#xff0c;5 题 B. 第 2&#xff0c;7 题 C. 第 1&#xff0c…

基于springboot实现基于Java的超市进销存系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现基于Java的超市进销存系统演示 摘要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;超市进销存系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#x…

Visa股票仍然值得投资

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结&#xff1a; &#xff08;1&#xff09;尽管Visa(V)的估值高于市场平均水平&#xff0c;但仍值得买入。 &#xff08;2&#xff09;Visa拥有强劲的基本面&#xff0c;销售额和每股收益一直在稳定增长&#xff0c;股息…

践行国策,男性生育力保护与修复新启航

金秋送爽&#xff0c;丹桂飘香&#xff01;值2023年男性健康日即将到来之时&#xff0c;10月22日&#xff0c;由中国优生优育协会生育力保护与修复专业委员会、南京大学医学院附属鼓楼医院联合举办的“首届男性生育力保护与修复诊疗技术培训班”暨“中国优生优育男性生育力保护…

一分钟带你了解什么是0day攻击什么是Nday攻击

1. 什么是零日漏洞 零日攻击是指利用零日漏洞对系统或软件应用发动的网络攻击。 零日漏洞也称零时差漏洞&#xff0c;通常是指还没有补丁的安全漏洞。由于零日漏洞的严重级别通常较高&#xff0c;所以零日攻击往往也具有很大的破坏性。目前&#xff0c;任何安全产品或解决方案…

工业交换机的三个重要指标,你知道吗?

网管型交换机产品提供了多种网络管理方式&#xff0c;包括终端控制口&#xff08;Console&#xff09;、Web页面以及支持Telnet远程登录网络。所以&#xff0c;网络管理员能够通过本地或远程方式实时监控该交换机的工作状态和网络运行状况&#xff0c;并全面管理所有交换端口的…

springcloud笔记 (8) -网关 Gateway

网关 出国需要过海关 网关&#xff1a;网络的关卡 网关的作用 1&#xff1a;路由转发 2&#xff1a;安全控制 保护每个服务&#xff0c;不需要将每个暴露出去 3&#xff1a;负载均衡 1.没有网关&#xff1a;客户端直接访问我们的微服务&#xff0c;会需要在客户端配置很多…

Mysql第三篇---响应太慢?数据库卡顿?如何优化?

Mysql第三篇—响应太慢&#xff1f;数据库卡顿&#xff1f;如何优化&#xff1f; 统计SQL的查询成本&#xff1a;last_query_cost 一条SQL查询语句在执行前需要确定查询执行计划&#xff0c;如果存在多种执行计划的话&#xff0c;MySQL会计算每个执行计划所需要的成本&#x…

联盟认证 | 聚铭网络正式成为中国反网络病毒联盟成员

近日&#xff0c;聚铭网络凭借强劲的技术实力和产品优势&#xff0c;被认证为中国反网络病毒联盟&#xff08;以下简称“ANVA联盟”&#xff09;成员单位。作为国内领先的安全运营商&#xff0c;聚铭网络一直致力于网络安全智能分析和检测&#xff0c;提供全面的信息安全防护&a…

从一个webpack loader中学习

chalk&#xff1a;给终端输出加一些自定义的样式 loader-utils&#xff1a;webpack的loader配置中会通过options传入一些用户自定义参数&#xff0c;就可以通过该包提供的getoptions()获取 node-fetch&#xff1a;Node.js的模块&#xff0c;用于从远程服务器获取数据 关于bab…

vue按特定字符串切割后端传输的图片路径

一、分隔字符 /userfiles/1/attachment/null/2023/10/13967b6b8332413f92ab67735873aa76.jpg|/userfiles/1/attachment/null/2023/10/17fd6e2c16144e66b8cd3ec495e6745f.png 后端传来图片的路径是按照 | 进行分隔的 首先在return中定义数组 在methods中添加分隔方法 //将查询…