C语言之多重循环

news2025/2/25 12:27:08

目录

二重循环

用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.coloradmin.cn/o/1285663.html

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

相关文章

如何批量修改ppt中的字体?

ppt制作已经属于是复杂的操作了&#xff0c;当我们想要更换ppt中的字体&#xff0c;有没有什么快捷的方法呢&#xff1f;今天分享两个方法&#xff0c;一键修改ppt文件字体。 方法一&#xff1a; 找到功能栏中的编辑选项卡&#xff0c;点击替换 – 替换字体&#xff0c;在里面…

Amazon CodeWhisperer 正式可用, 并面向个人开发者免费开放

文章作者&#xff1a;深度-围观 北京——2023年4月18日&#xff0c;亚马逊云科技宣布&#xff0c;实时 AI 编程助手 Amazon CodeWhisperer 正式可用&#xff0c;同时推出的还有供所有开发人员免费使用的个人版&#xff08;CodeWhisperer Individual&#xff09;。CodeWhisperer…

【开源项目】Windows串口通信组件 -- Com.Gitusme.IO.Ports.SerialPort

目录 1、项目介绍 2、组件集成 1&#xff09;下载地址&#xff1a; 2&#xff09;添加项目依赖 3、使用方法 4、GitHub项目地址 1、项目介绍 Com.Gitusme.IO.Ports.SerialPort 是一款 Windows 串口通信组件&#xff0c;基于.Net Core 3.1 开发&#xff0c;支持 Console、Wi…

【江科大--32课程中讲解到的外部设备】

一、传感器模块&#xff08;GPIO模块&#xff09; 1.基本介绍 传感器模块&#xff1a;传感器元件&#xff08;光敏电阻/热敏电阻/红外接收管等&#xff09;的电阻会随外界模拟量的变化而变化&#xff0c;通过与定值电阻分压即可得到模拟电压输出&#xff0c;再通过电压比较器进…

黑豹程序员-java发邮件,发送内容支持html,带多附件的案例

介绍 发邮件mail是常见的软件功能&#xff0c;下面利于spring和java的mail库实现发送内容支持html&#xff0c;带多附件的案例 开启SMTP邮件发送协议 谁提供的SMTP邮件服务&#xff0c;就找谁开启。QQ邮箱类似。 依赖 <!--Java MAil 发送邮件API--><dependency&g…

契约锁2023年伙伴大会连下58城,顺利收官!

10月以来&#xff0c;携手全国58城的IT伙伴&#xff0c;共同探讨电子签章海量市场下的发展机遇以及合作模式、交流分享电子签章海量市场机遇、体验电子签章产品在组织数字化建设中的应用价值。 以简单易用、方便实施的产品&#xff0c;和开放共享政策&#xff0c;广结伙伴、共建…

【Mysql】一篇博客搞懂Mysql索引、全面剖析底层结构(建议收藏)

&#x1f308;欢迎来到Mysql专栏 &#x1f64b;&#x1f3fe;‍♀️作者介绍&#xff1a;前PLA队员 目前是一名普通本科大三的软件工程专业学生 &#x1f30f;IP坐标&#xff1a;湖北武汉 &#x1f349; 目前技术栈&#xff1a;C/C、Linux系统编程、计算机网络、数据结构、Mysq…

Mongodb 开启oplog,java监听oplog并写入关系型数据库

开启Oplog windows mongodb bin目录下找到配置文件/bin/mongod.cfg,配置如下&#xff1a; replication:replSetName: localoplogSizeMB: 1024双击mongo.exe 执行 rs.initiate({_id: "local", members: [{_id: 0, host: "localhost:27017"}]})若出现如…

【已解决】MySQL:执行存储过程报错(MySQL字符集和排序方式冲突)

目录 问题现象&#xff1a; 问题分析&#xff1a; 解决方法&#xff1a; 拓展&#xff1a; 1、转换条件两边的字段或值为二进制数据&#xff1a; 2、转换条件两边的字段或值的字符集和排序方式&#xff1a; 3、修改列、表、库的字符集和排序方式 参考链接&#xff1a; 问…

托盘四向穿梭车自动化密集库供应|单机智能向系统智能跨越的HEGERLS托盘四向车系统

随着物流产业的迅猛发展&#xff0c;托盘四向穿梭式自动化密集仓储系统可认为是在穿梭车货架系统基础上提出的一种新仓储概念。托盘四向穿梭式立体库因其在流通仓储体系中所具有的高效密集存储功能优势、运作成本优势与系统化智能化管理优势&#xff0c;已发展为仓储物流的主流…

第73讲:深入理解MySQL数据库InnoDB存储引擎:内存结构、磁盘结构与后台线程全面解析

文章目录 1.InnoDB存储引擎的架构2.InnoDB存储引擎的内存结构2.1.Buffer Pool缓冲池2.2.Change Buffer更改缓冲区2.3.自适应Hash索引2.4.Log Buffer日志缓冲区 3.InnoDB存储引擎的磁盘结构3.1.System Tablespace系统表空间3.2.File-Per-Table Tablespaces每个表都有单独的表空间…

基于轻量级模型GHoshNet开发构建眼球眼疾识别分析系统,构建全方位多层次参数对比分析实验

工作中经常会使用到轻量级的网络模型来进行开发&#xff0c;所以平时也会常常留意使用和记录&#xff0c;在前面的博文中有过很多相关的实践工作&#xff0c;感兴趣的话可以自行移步阅读即可。 《移动端轻量级模型开发谁更胜一筹&#xff0c;efficientnet、mobilenetv2、mobil…

VS2022 显示参数类型

VS2022 显示参数类型 VS2022的智能感知功能非常强大&#xff0c;提供了类似clangd的IntelliSense。 设置方法 有时候需要代码补全&#xff0c;代码类型补全提示&#xff0c;极有可能消耗内存和运存。所以记录一下开关这个。

IDEA启动失败报错解决思路

IDEA启动失败报错解决思路 背景&#xff1a;在IDEA里安装插件失败&#xff0c;重启后直接进不去了&#xff0c;然后分析问题解决问题的过程记录下来。方便下次遇到快速解决。也是一种解决问题的思路&#xff0c;分享出去。 启动报错信息 Internal error. Please refer to https…

无频闪护眼灯哪个好?顶级无蓝光频闪护眼台灯推荐

国家卫生健康委员会疾控局宋士勋表示&#xff0c;根据近期发布的2021年监测数据来看&#xff0c;截至2020年&#xff0c;我国儿童青少年总体的近视率是52.7%&#xff0c;从不同年龄段来看&#xff0c;幼儿园6岁孩子的近视率达到14.3%&#xff0c;小学达到35.6%&#xff0c;初中…

Tubulysin C 微管蛋白C 205304-88-7

Tubulysin C 微管蛋白C 205304-88-7 英文名称&#xff1a;Tubulysin C 中文名称&#xff1a;微管蛋白C 化学名称&#xff1a;(2S,4R)-4-[[2-[(1R,3R)-1-乙酰氧基-4-甲基-3-[[(2S,3S)-3-甲基-2-[[(2R)-1 -甲基哌啶-2-羰基]氨基]戊酰基]-(丙酰氧基甲基)氨基]戊基]-1,3-噻唑-4-羰基…

3、RocketMQ源码分析(三)

RocketMQ源码-NameServer架构设计及启动流程 本文我们来分析NameServer相关代码&#xff0c;在正式分析源码前&#xff0c;我们先来回忆下NameServer的功能&#xff1a; NameServer是一个非常简单的Topic路由注册中心&#xff0c;其角色类似Dubbo中的zookeeper&#xff0c;支…

【3】密评-物理和环境安全测评

0x01 依据 GB/T 39786 -2021《信息安全技术 信息系统密码应用基本要求》针对等保三级系统要求&#xff1a; 物理和环境层面&#xff1a; a&#xff09;宜采用密码技术进行物理访问身份鉴别,保证重要区域进入人员身份的真实性&#xff1b; b&#xff09;宜采用密码技术保证电子门…

Vue JAVA开发常用模板

1.VsCode添加模板 左下角设置》用户代码片段 新建全局代码片段》将模板粘贴仅文件&#xff08;prefix用于指定触发关键字&#xff09; 添加成功过后输入配置的关键字即可使用 1.1 vue2模板 {// Example:"Print to console": {"prefix": "vue2",…

matplotlib多子图

matplotlib画图中一个轴占据多个子图 - 知乎 import matplotlib.pyplot as plt fig plt.figure() gs fig.add_gridspec(2,4) ax1 fig.add_subplot(gs[0, 0:2]) ax2 fig.add_subplot(gs[0, 2:]) axa fig.add_subplot(gs[1, 1]) axb fig.add_subplot(gs[1, 2]) axc fig.add…