三、C语言中的分支与循环—循环嵌套 (9)

嵌套循环指的是一个循环内部包含另一个循环。外层循环每执行一次,内层循环会执行完其所有的迭代。嵌套循环经常被用来处理多维数据结构,如多维数组,或者在进行复杂的算法操作时,如排序和搜索算法。

嵌套循环可以是任意类型的循环(forwhiledo-while),并且它们可以相互嵌套。

1. for循环的嵌套

for循环的嵌套是最常见的形式。它的基本结构如下:

这里,每次外层for循环执行时,内层for循环都会完整地执行其循环体。

for (初始化表达式1; 测试表达式1; 更新表达式1) {// 外层循环的代码for (初始化表达式2; 测试表达式2; 更新表达式2) {// 内层循环的代码}
}

1)代码示例:二维数组的遍历

外层for循环遍历二维数组的行,而内层for循环遍历列。每遍历一行,就打印该行所有的列,然后换行。

#define ROWS 3
#define COLS 3int main() {int matrix[ROWS][COLS] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};for (int i = 0; i < ROWS; i++) {for (int j = 0; j < COLS; j++) {printf("%d ", matrix[i][j]);}printf("\n");}return 0;
}

2. whiledo-while循环的嵌套

whiledo-while循环也可以嵌套。它们的嵌套方式和for循环类似:

while (测试表达式1) {// 外层循环的代码while (测试表达式2) {// 内层循环的代码}
}

3.代码练习

找出100~200之间的素数,并打印在屏幕上

解题思路:

步骤 1: 理解素数

素数是只能被1和它本身整除的大于1的自然数。所以我们需要检查100到200之间的每个数是否是素数。

步骤 2: 编写代码以检查一个数是否是素数

为了检查一个数n是否是素数,我们需要从2遍历到n-1,检查n是否能被这些数整除。如果n能被任何一个数整除,那么它不是素数。

步骤 3: 循环从100到200的所有数

我们需要从100循环到200,并对每一个数执行步骤2。

步骤 4: 打印素数

每当我们找到一个素数,我们就打印它。

C语言代码实现

以下是完成上述任务的C语言代码示例:

#include <stdio.h>
#include <stdbool.h>int main() {int i, j;bool isPrime;// 循环从100到200的所有数for (i = 100; i <= 200; i++) {isPrime = true; // 假设当前数是素数// 检查i是否是素数for (j = 2; j * j <= i; j++) { // 优化:只需检查到sqrt(i)if (i % j == 0) { // 如果i能被j整除isPrime = false; // i不是素数break; // 不需要检查更大的数,退出内层循环}}// 如果i是素数,则打印它if (isPrime && i > 1) { // 确保i大于1printf("%d\n", i);}}return 0;
}

4.注意事项

  • 嵌套层数:理论上,循环可以嵌套任意多层,但过多的嵌套会使代码可读性变差。
  • 性能考量:嵌套循环可能会显著增加算法的时间复杂度,尤其是在数据集较大时。
  • 变量作用域:每个循环的控制变量应当在其循环体内声明,以避免命名冲突和其他作用域相关的问题。
  • 循环控制:可以使用breakcontinue语句控制循环的流程。在嵌套循环中使用时,它们只影响所在层的循环。

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

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

相关文章

Vue:Vue与VueComponent的关系图

1.一个重要的内置关系&#xff1a;VueComponent.prototype.proto Vue.prototype 2.为什么要有这个关系&#xff1a;让组件实例对象&#xff08;vc&#xff09;可以访问到 Vue原型上的属性、方法。 案例证明&#xff1a; <!DOCTYPE html> <html lang"en"&…

FL Studio怎么破解?FL Studio安装破解使用图文教程

fl studio是一款功能强大的编曲软件&#xff0c;怎么破解呢&#xff1f;今天小编就为大家带来了详细的安装破解教程&#xff0c;需要的朋友一起看看吧 fl studio20.8是一款功能强大的编曲软件&#xff0c;也就是众所熟知的水果软件。它可以编曲、剪辑、录音、混音&#xff0c;…

【话题】ChatGPT等大语言模型为什么没有智能2

我们接着上一次的讨论&#xff0c;继续探索大模型的存在的问题。正巧CSDN最近在搞文章活动&#xff0c;我们来看看大模型“幻觉”。当然&#xff0c;本文可能有很多我自己的“幻觉”&#xff0c;欢迎批评指正。如果这么说的话&#xff0c;其实很容易得出一个小结论——大模型如…

PyTorch中常用的工具(4)Visdom

文章目录 前言3.2 Visdom 前言 在训练神经网络的过程中需要用到很多的工具&#xff0c;最重要的是数据处理、可视化和GPU加速。本章主要介绍PyTorch在这些方面常用的工具模块&#xff0c;合理使用这些工具可以极大地提高编程效率。 由于内容较多&#xff0c;本文分成了五篇文…

QGIS004:【01矢量创建工具箱】-创建网格、从表格创建点图层、导入带有地理标签的照片、点转线

摘要:QGIS矢量创建工具箱包括创建网格、从表格创建点图层、导入带有地理标签的照片、点转线等选项,本文介绍各选项的基本操作。 实验数据: 链接:https://pan.baidu.com/s/1PcF2ZfE5GM6fFg6rs3GeHA?pwd=rha4 提取码:rha4 一、创建网格 1.网格类型(点) 2.网格类型(线)…

Python算法例32 统计数字

1. 问题描述 计算数字k在0~n中出现的次数&#xff0c;k可能是0~9中的一个数字。 2. 问题示例 n12&#xff0c;k1&#xff0c;在[0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6&#xff0c;7&#xff0c;8&#xff0c;9&#xff0c;10&a…

【大数据面试知识点】Spark的DAGScheduler

Spark数据本地化是在哪个阶段计算首选位置的&#xff1f; 先看一下DAGScheduler的注释&#xff0c;可以看到DAGScheduler除了Stage和Task的划分外&#xff0c;还做了缓存的跟踪和首选运行位置的计算。 DAGScheduler注释&#xff1a; The high-level scheduling layer that i…

问界M9激光雷达解说

什么是激光雷达 激光雷达(英文:Lidar),是一种通过发射激光束来测量目标位置、速度等特征量的雷达系统。其工作原理是将激光光束照射到目标物体上,然后通过测量激光光束从发射到反射回来的时间,来计算目标物体的距离、位置、速度等参数。激光雷达通常用于测量地形、地貌、…

梳理Langchain-Chatchat-UI接口文档

在 Langchain-Chatchat v0.1.17 版本及以前是有前后端分离的 Vue 项目的&#xff0c;但是 v0.2.0 后就没有了。所以本文使用的是 Langchain-Chatchat v0.1.17 版本中的 Vue 项目。经过一番折腾终于将 Langchain-Chatchat v0.1.17 版本前端 Vue 接口和 Langchain-Chatchat v0.2.…

Github 2024-01-01 开源项目月报 Top20

根据Github Trendings的统计&#xff0c;本月(2024-01-01统计)共有20个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目5TypeScript项目3JavaScript项目3非开发语言项目2Java项目2HTML项目2Jupyter Notebook项目2PHP项目…

华为云默认安全组配置规则说明

华为云服务器默认安全组可选Sys-default、Sys-WebServer或Sys-FullAccess。default是默认安全组规则&#xff0c;只开放了22和3389端口&#xff1b;Sys-WebServer适用于Web网站开发场景&#xff0c;开放了80和443端口&#xff1b;Sys-FullAccess开放了全部端口。阿腾云atengyun…

Python算法例33 删除数字

1. 问题描述 给出一个字符串A&#xff0c;表示一个n位的正整数&#xff0c;删除其中k位数字&#xff0c;使得剩余的数字仍然按照原来的顺序排列产生一个新的正整数&#xff0c;本例将找到删除k个数字之后的最小正整数&#xff0c;其中n≤240&#xff0c;k≤n。 2. 问题示例 …