三、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 3

int 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大于1
            printf("%d\n", i);
        }
    }
    
    return 0;
}

4.注意事项

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WeNet语音识别+Qwen-72B-Chat Bot+Sambert-Hifigan语音合成

WeNet语音识别Qwen-72B-Chat Bot&#x1f47e;Sambert-Hifigan语音合成 简介 利用 WeNet 进行语音识别&#xff0c;使用户能够通过语音输入与系统进行交互。接着&#xff0c;Qwen-72B-Chat Bot作为聊天机器人接收用户的语音输入或文本输入&#xff0c;提供响应并与用户进行对话…

光伏、储能一体化监控及运维解决方案 安科瑞 许敏

前言&#xff1a;今年以来&#xff0c;在政策利好推动下光伏、风力发电、电化学储能及抽水蓄能等新能源行业发展迅速&#xff0c;装机容量均大幅度增长&#xff0c;新能源发电已经成为新型电力系统重要的组成部分&#xff0c;同时这也导致新型电力系统比传统的电力系统更为复杂…

VS Code 远程连接云机器训练配置

VS Code 远程连接云机器 Visual Studio Code&#xff08;以下简称 VS Code&#xff09;是一个由微软开发的代码编辑器。VS Code 支持代码补全、代码片段、代码重构、Git 版本控制等功能。 安装 VSCode步骤简单且网上有很多教程&#xff0c;这里不过多重复了。 VS Code 现已支…

python3 识别人像照片并纠正照片正反

实现效果&#xff1a; 本程序可以将下图第二张照片进行人脸识别&#xff0c;发现相片是否是正向&#xff0c;如果不是就进行相片转正形成下图第一张图。 代码 安装配置 模型下载 首先在我的这篇文件下载相应的人脸识别模型&#xff0c;一般 64标记点就够用&#xff0c;当然…

1月2日代码随想录二叉树的最小深度及层序遍历总结

个人认为这么一个层序遍历的章节放这么多基本一样的题目算是很没意思的了 填充每个节点的下一个右侧节点和二叉树最大深度和前面的代码几乎完全一样&#xff0c;所以我就跳过了 代码随想录 (programmercarl.com) 代码随想录 (programmercarl.com) 111.二叉树的最小深度 给…

android开发百度地图api实现定位图标随手机方向转动

该功能的实现依赖于手机中的传感器元件如陀螺仪、加速度计等&#xff0c;具体开发详见android的官方开发文档&#xff1a; 传感器概览 | Android 开发者 | Android Developershttps://developer.android.com/guide/topics/sensors/sensors_overview?hlzh-cn要自定义一个传…

全网最详细的鼠标点击效果与禁用页面缩小放大

一、文章引导 #mermaid-svg-vObupkPcCxdB8hCq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-vObupkPcCxdB8hCq .error-icon{fill:#552222;}#mermaid-svg-vObupkPcCxdB8hCq .error-text{fill:#552222;stroke:#55222…

c语言:设计投票小程序|练习题

一、题目 设计一个投票小程序 如图&#xff1a; 二、代码图片【带注释】 三、源代码【带注释】 #include <stdio.h> #include<string.h> void win(int,int,int); int main() { char ch[5]; int countLili0; int countjp0; int countzx0; int …

代表团坐车 - 华为OD统一考试

OD统一考试&#xff08;B卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 某组织举行会议&#xff0c;来了多个代表团同时到达&#xff0c;接待处只有一辆汽车可以同时接待多个代表团&#xff0c;为了提高车辆利用率&#xff0c;请帮接待…

MongoDB vs MySQL:项目选择哪一个数据库系统?

由于市场上有各种可用的数据库&#xff0c;用户经常会就MongoDB与MySQL进行辩论&#xff0c;以找出更好的选择。 使用MySQL等关系数据库的组织在根据不断变化的需求管理和存储数据时可能会面临一定的困难。同时&#xff0c;新公司想知道选择什么数据库&#xff0c;这样他们就不…

微功耗遥测终端机RTU:守护城市生命线的智能卫士

在城市的繁华背后&#xff0c;隐藏着一套高效运转的“生命线”——排水系统。而在这条生命线上&#xff0c;微功耗遥测终端机RTU(MGTR-W4131U)发挥着不可或缺的作用&#xff0c;为城市的正常运转提供了坚实保障。 微功耗遥测终端机RTU(MGTR-W4131U)&#xff0c;顾名思义&#…

星友提问:本科与硕士的区别是什么?

本科阶段: 主要以学习成绩寄点为主&#xff0c;学习知识的来源更像“大锅饭”&#xff0c;所有同学一起上课&#xff0c;一起考试&#xff0c;以学习为主。硕士阶段: 论文实验科研为主&#xff0c;相对于本来说&#xff0c;成绩弱化的厉害&#xff0c;甚至导师直接说&#xff0…

信号量机制的实际使用-第二十九天

目录 回顾旧知 实现进程互斥 实现进程同步 实现进程的前驱关系 本节思维导图 回顾旧知 1、一个信号量对应一种资源 2、信号量的值 该种资源的剩余数量&#xff08;信号量值小于0&#xff0c;说明此时有进程在等待这种资源&#xff09; 3、P(S)&#xff1a;申请一个资源S&…

三层架构概述

三层架构就是把整个软件的代码分为三个层次&#xff0c;分层的目的是&#xff1a;规范代码&#xff0c;大型软件需要团队配合的时候问题就来了&#xff0c;由于每个程序员风格不一样&#xff0c;而开发软件大量的代码风格不统一就会造成后期调试和维护出现问题&#xff0c;然而…

Dryad数据库学习

从一篇science论文中看到数据存储在了这个平台&#xff0c;这里分享一下&#xff1a;datadryad.org 亲测无需注册&#xff0c;可以直接下载&#xff0c;从一个数据测试看&#xff0c;数据存储在亚马逊云&#xff0c;下载速度还可以&#xff0c;6M/s的样子。 Dryad 是一个开放的…

把类成员函数作为参数传递给thread类......

(1)把类成员函数作为参数传递给thread类 一般地&#xff0c;在调用类的非静态函数时&#xff0c;编译器会隐式添加一参数&#xff0c;它是所操作对象的地址&#xff0c; 用于绑定对象和成员函数&#xff0c;并且位于所有其他实际参数之前。例如&#xff0c;类example具有成员函…

SMD NTC Thermistor NTC热敏电阻(贴片式)

热敏电阻器&#xff08;Thermistor&#xff09;是一种电阻值对温度极为灵敏的半导体元件&#xff0c;又可分为负温度系数&#xff08;NTC&#xff09;热敏电阻和正温度系数&#xff08;PTC&#xff09; NTC热敏电阻用于温度测量&#xff0c;温度控制&#xff0c;温度补偿等&…

单片机快速入门

参考连接&#xff1a; 安装MinGW-64&#xff08;在win10上搭建C/C开发环境&#xff09;https://zhuanlan.zhihu.com/p/85429160MinGW-64; 链接&#xff1a;https://pan.baidu.com/s/1oE1FmjyK7aJPnDC8vASmCg?pwdy1mz 提取码&#xff1a;y1mz --来自百度网盘超级会员V7的分享野…

【力扣100】【好题】79.单词搜索

添加链接描述 class Solution(object):# 定义上下左右四个行走方向directs [(0, 1), (0, -1), (1, 0), (-1, 0)]def exist(self, board, word):""":type board: List[List[str]]:type word: str:rtype: bool"""m len(board)if m 0:return Fa…

Clojure 实战(4):编写 Hadoop MapReduce 脚本

Hadoop简介 众所周知&#xff0c;我们已经进入了大数据时代&#xff0c;每天都有PB级的数据需要处理、分析&#xff0c;从中提取出有用的信息。Hadoop就是这一时代背景下的产物。它是Apache基金会下的开源项目&#xff0c;受Google两篇论文的启发&#xff0c;采用分布式的文件…