C语言之多重循环

目录

二重循环

用break语句强制结束循环

显示图形

 绘制等腰直角三角形

多重循环

continue语句


将循环语句的循环体作为循环语句,就可以进行二重、三重循环。这样的循环称为多重循环。

我们先来了解二重循环

二重循环

在之前我们学习到的循环中的程序都比较简单,在一个循环中还可以嵌套另一个循环(俄罗斯套娃),根据所嵌套循环的多少,由二重循环、三重循环……统称为多重循环

我们用二重循环来编写一个显示9*9乘法表的程序:

#include<stdio.h>int main()
{int i, j;for(i = 1; i <= 9; i++){for(j =1 ; j <= 9; j++){printf("%3d", i * j);//putchar('\n');大家把putchar放入内循环中可以试着猜猜它的显示形式}putchar('\n');}return 0;
}

 那么它是怎么来显示的呢?让我们来看看吧!

 外侧的for语句:是变量i从1——9依次递增,对应乘法表中的第一行、第二行……第九行,即纵方向的循环。

内侧的for语句:是变量j从1——9依次递增,对应乘法表中的第一列、第二列……第九列,

即横方向的循环。

当i=1时:执行j从1——9递增的操作,按3位(%3d)的宽度输出1*j。

当i=2时:执行j从1——9递增的操作,按3位(%3d)的宽度输出2*j。

当i=3时:执行j从1——9递增的操作,按3位(%3d)的宽度输出3*j。

………………………………………………………………………………

当i=9时:执行j从1——9递增的操作,按3位(%3d)的宽度输出9*j。

 在各循环中,内循环中的j从1——9分别执行了九次,内循环结束后,输出换行符(上面代码注释中的问题),为前进下一行做准备。

用break语句强制结束循环

让我们对上面程序进行改写,显示i*j<=40整数

for(i = 1; i <= 9; i++){for(j =1 ; j <= 9; j++){int seki = i * j;if(seki > 40){break;}printf("%3d", i * j);}putchar('\n');}

 在本程序中使用的break语句在跳出循环时,只会跳出内侧循环,并不会跳出外侧循环。

显示图形

我们用*来显示出一个长方形

#include<stdio.h>int main()
{int i, j;int height, width;printf("请输入长方形的高:");        scanf("%d", &height);printf("请输入长方形的宽:");        scanf("%d", &width);for(i = 1; i <= height; i++ ){for(j = 1; j <= width; j++){putchar('*');}putchar('\n');}return 0;
}

我们继续来解释下

共计height个行,每行显示有width个*,这样就显示出了一个长方形。

 绘制等腰直角三角形

我们先来使用二重循环编写绘制直角在左下方的程序(边长的相等对应“*”的多少)

#include<stdio.h>int main()
{int i, j, len;puts("生成直角在左下方的等腰直角三角形");printf("请输入短边:");scanf("%d", &len);for(i = 1; i <= len; i++){for(j =1 ; j <= i; j++){putchar('*');}putchar('\n');}return 0;}

但是当我们想要显示直角在右下方的等腰直角三角形呢?怎么把*从右到左先显示呢?我们只需要输出空格就可以满足需求了,但在用putchar输出空格时也需得作为一个循环中的语句,这样就需要使用到三重循环了。

for(i = 1; i <= len; i++){for(j = 1; j <= len - i; j++){putchar(' ');//要把空格作为一个字符常量,所要记得输入一个空格哦!}for(j =1 ; j <= i; j++){putchar('*');}putchar('\n');}

多重循环

在前面我们都是使用for语句来进行嵌套,当然我们也可以使用do语句、while语句来进行嵌套,实现多重循环

输入一个整数,显示整数个*

#include<stdio.h>int main()
{int retry;do{int i, no;do{printf("请输入一个整数:");scanf("%d", &no);if(no <= 0){puts("\a请不要输入负数和0");}}while(no <= 0);for(i = 1; i <= no; i++){putchar('*');}putchar('\n');printf("是否继续输出?【YES---0/No---9】:");scanf("%d", &retry);}while(retry == 0);return 0;
}

continue语句


int main()
{int i, j;for(i = 1; i <= 9; i++){for(j =1 ; j <= 9; j++){int seki = i * j;if(seki % 10 == 4 || seki / 10 == 4){putchar(' ');continue;}printf("%3d", i * j);}putchar('\n');}return 0;
}

大家可以试试把continue去掉后再次运行程序结果会有何不同。

continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。continue 语句只用在 while、for 循环中,常与 if 条件语句一起使用,判断条件是否成立。在理解中可以与break语句相反去理解。

也就是说,当遇到不满足的条件时,不会被中断,跳过去继续执行下一步;而break语句,在条件满足时就立即停止执行。

 最近大家大学都确定了放假时间了吗?放假早的同学们祝你们有个好假期,放假晚的同学不要太伤心了,希望咱们开学晚啊!

  在下方投票来公布你的放假时间吧!!!

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

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

相关文章

Java---异常

文章目录 1. 异常概述2. try...catch3. Throwable成员方法4. 编译时异常和运行时异常区别5. 异常处理之throws6. 自定义异常7. throws和throw的区别 1. 异常概述 1. 异常&#xff1a;就是程序中出现了不正常的情况。 2. Error&#xff1a;严重问题&#xff0c;不需要处理。Exce…

【带头学C++】----- 九、类和对象 ---- 9.4 拷贝构造函数、赋值

目录 9.4 拷贝构造函数、赋值 9.4.1 定义拷贝构造函数 9.4.2 拷贝构造和无参构造、有参构造的关系 9.4.3 拷贝构造的几种调用形式 1、旧对象给新对象初始化&#xff0c;调用拷贝构造 2、给对象取别名不会调用拷贝构造 3、普通对象作为函数参数&#xff0c;调用函数时会发…

STM32-GPIO编程

一、GPIO 1.1 基本概念 GPIO&#xff08;General-purpose input/output&#xff09;通用输入输出接口 --GP 通用 --I input输入 --o output输出 通用输入输出接口GPIO是嵌入式系统、单片机开发过程中最常用的接口&#xff0c;用户可以通过编程灵活的对接口进行控制&#xff0c;…

ArcGIS提取DEM中的山脉范围

已知数据&#xff1a;DEM文件ASTGTM_N00E118E.img 使用软件&#xff1a;ArcMap 要求&#xff1a;对数据进行操作&#xff0c;提取数据文件中的山脉范围 下面开始操作&#xff1a; 1、 打开ArcMap将DEM文件ASTGTM_N00E118E.img添加到数据框。 2、 接下来我们打开spatial ana…

虚幻学习笔记8—蓝图操作其他虚幻模块

一、前言 蓝图不仅可以相互之间操作和通信&#xff0c;其他的资源、模块也有操作和通信的方法。文本主要针对蓝图和材质、Niagara、编辑器的通信进行讲解。 二、实现 2.1、蓝图和材质 1&#xff09;首先&#xff0c;在材质蓝图中按住“4鼠标左键”创建一个参数为四维向量的参…

Kafka中的auto-offset-reset配置

Kafka这个服务在启动时会依赖于Zookeeper&#xff0c;Kafka相关的部分数据也会存储在Zookeeper中。如果kafka或者Zookeeper中存在脏数据的话&#xff08;即错误数据&#xff09;&#xff0c;这个时候虽然生产者可以正常生产消息&#xff0c;但是消费者会出现无法正常消费消息的…

【小工具分享】分享一个小工具---可视化数据结构 (初学者建议收藏)

工具链接&#xff1a; 可视化数据结构 这里支持大量数据结构地演示&#xff0c;相当全面&#xff0c;对于初学数据结构或者想更直观感受某个数据结构地实现有很大帮助&#xff0c;能直观的看到该数据结构的增删改查&#xff0c;帮助我们理解某一数据结构的性能~ 下面我演示一下…

揭秘MQTT:为何它是物联网的首选协议?

文章目录 MQTT 协议简介概览MQTT 与其他协议对比MQTT vs HTTPMQTT vs XMPP 为什么 MQTT 是适用于物联网的最佳协议&#xff1f;轻量高效&#xff0c;节省带宽可靠的消息传递海量连接支持安全的双向通信在线状态感知 MQTT 5.0 与 3.1.1MQTT 服务器MQTT 客户端 MQTT 协议简介 概…

设计模式之代理模式(1)

目录 概述定义应用场景主要角色类图 详述基本代码应用实例符合的设计原则 总结 概述 定义 代理模式是一种结构型设计模式&#xff0c;它允许通过一个代理对象来控制对原始对象的访问。代理对象可以在不改变原始对象的情况下&#xff0c;增加一些额外的功能&#xff0c;例如权限…

如何做好一个软件开发项目经理?

要成为一名优秀的软件开发项目经理&#xff0c;需要具备一定的技术知识和管理能力。下面是学习和发展软件开发项目经理职业所需的关键能力和工作内容。 首先&#xff0c;作为软件开发项目经理&#xff0c;你需要具备扎实的软件开发知识和技能。这包括熟悉常用的编程语言、开发框…

Python教程75:textwrap模块 — 文本自动换行与填充

TextWrap模块是一个Python模块&#xff0c;它提供了一些函数和方法来处理文本字符串的包装和填充。这个模块的主要功能是将一个长字符串根据指定的宽度分成多行&#xff0c;可以用于格式化文本输出&#xff0c;使其在指定的行数内完成显示。这个过程通常用于控制文本在终端、文…

面向注解编程—Spring 注解看这一篇就够了

面向注解编程—Spring 注解大全之IOC篇 Spring的一个核心功能是IOC&#xff0c;就是将Bean初始化加载到容器中&#xff0c;调用的时候直接注入即可&#xff0c;使用注解可以大大提高了开发效率&#xff01;。 Bean英文意为 豆子 理解起来就是豆荚里的豌豆&#xff0c;豆荚就是…

.Net core 6.0 升8.0

1 Update Visual Studio 2 3 用Nutget 更新不同套件版本 更新后结果如下&#xff1a;

第四期丨酷雷曼无人机技能培训

第4期无人机技能培训 2023年10月25日&#xff0c;酷雷曼无人机技能培训及执照考试第四期成功举办&#xff0c;自7月份首期开办以来&#xff0c;已按照每月一期的惯例连续举办四期&#xff0c;取得了极为热烈的反响。 随着无人机培训的重要性及影响力逐渐扩大&#xff0c;参加培…

UE4/UE5 材质实现带框环形进度条

UE4/UE5 材质实现带框环形进度条 此处使用版本&#xff1a;UE4.27 原理&#xff1a;大圆减小圆可以得到圆环&#xff0c;大圆环减小圆环&#xff0c;可以得到圆环外围线框 实现效果&#xff1a; 实现&#xff08;为了给大家放进一张面前能看的图&#xff0c;我费劲了心思&…

从 MQTT、InfluxDB 将数据无缝接入 TDengine,接入功能与 Logstash 类似

利用 TDengine Enterprise 和 TDengine Cloud 的数据接入功能&#xff0c;我们现在能够将 MQTT、InfluxDB 中的数据通过规则无缝转换至 TDengine 中&#xff0c;在降低成本的同时&#xff0c;也为用户的数据转换工作提供了极大的便捷性。由于该功能在实现及使用上与 Logstash 类…

自动化巡检实现方法 (一)------- 思路概述

一、自动化巡检需要会的技能 1、因为巡检要求一天24小时全天在线&#xff0c;因此巡检程序程序一定会放在服务器上跑&#xff0c;所以要对linux操作熟悉哦 2、巡检的代码要在git上管理&#xff0c;所以git的基本操作要熟悉 3、为了更方便不会代码的同学操作&#xff0c;所以整个…

GAN:WGAN-GP-带有梯度惩罚的WGAN

论文&#xff1a;https://arxiv.org/pdf/1704.00028.pdf 代码&#xff1a;GitHub - igul222/improved_wgan_training: Code for reproducing experiments in "Improved Training of Wasserstein GANs" 发表&#xff1a;2017 WGAN三部曲的终章-WGAN-GP 摘要 WGAN在…

123456前端调AES加密方法变为YehdBPev

使用密码加密服务: pig4cloud 加密服务

【每日易题】Leetcode上Hard难度的动态规划题目——地下城游戏的实现

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;博主最近一直在钻研动态规划算法&#xff0c;最近在Leetcode上刷题的时候遇到一个Hard难度的动态规划题&#xff0c;今天就借此机会来给大家分享…