C语言----杨辉三角

news2024/10/6 2:31:17

       各位看官们好。学习到这里想必大家应该对C语言的了解也是很深刻的了吧。但是我们也不能忘记我们一起学习的知识啊。在我们以前学习C语言的时候我想大家应该都听说过杨辉三角吧。虽然我们把其中的规律找到那么这个代码就简单很多了。那么接下里我们就来讲讲杨辉三角。

      首先我们先来看看三角长什么样子:

9dece9cf4bde423785ba8d37267cc917.jpeg

       我们可以看到我们外围都是1,然后几行就有几个数这些是一眼能看出来的。然后就是我们看看每行数字左右对称,由1开始逐渐变大。(从第三行开始)被两边的 1 包围着的数据中,每个数等于它上一行前一列的数和上一行本列数之和。说这么多我们还是直接上手看看这么处理。

       首先我们写一个主函数和一个子函数,这样的话主函数不会一个代码太多从而看起来很臃肿是吧。那么我们就先来看看主函数:

int main()
{
	int line = 0;
	printf("请输入杨辉三角的行数:");
	scanf("%d", &line);
	xixi(line);//子函数
	return 0;
}

        这里我们可能会问这个为什么要创建一个变量,并且传到子函数那里呀。直接设置就可以了呀。主要是我认为这样写的话给我们读者有更多的参与感是吧。我们读者自己确定写多少行的杨辉三角。然后我们来看看子函数了,那么我们先想想看我们子函数需要干什么嘞。我们需要将三角形的外围确定为1。然后我们将三角形的内部确定。那么我们这样确定的话,是不是用一个二维数组会更好一些好。我们现在先确定接下来要使用二维数组。那么经过上面的两个步骤我们就已经将要打印的内容确定好了后,那么我们接下来就是打印了吧。所以我们接下来就分3步:1.创建一个二维数组并且将其外围确定为1。2.确定三角形内部的大小。3.打印三角形并且让打印出来的好看些。

二维数组并确定为1 

        大家看标题应该就有一个大概思路了吧,我们只需要创建一个二维数组后,将每一行的第一个确定为1.然后每一行的最后一个也确定为1.将开头都确定为1.这个好处理,因为我们创建的是一个二维数组那么我们就要用双循环来给数组赋值吧,所以给每一行的第一个数赋值很简单。主要是如何给每一行的最后一个赋值嘞。我们还是直接看代码吧:

int arr[20][20] = { 0 };//创建二维数组
	for (i = 0; i <= line - 1; i++)
	{
		if (i == 0)
			arr[0][0] = 1;
		else if (i == 1)//因为我们知道第一行和第二行都是1.所以直接单独拿出来赋值
		{
			arr[1][0] = 1;
			arr[1][1] = 1;
		}
		else//其他的赋值
		{
			for (j = 0; j < i; j++)
			{
				arr[i][0] = 1;
				//这里我们就确定每一行的首个元素和最后一个元素为1
				arr[i][j] = 1;
				arr[i][i] = arr[i - 1][j - 1] + arr[i - 1][j];//确定三角形内部的大小
//规律是上一行前一列和本列数之和。这个大家可以多看一下上面的图片就可以看出来了
			}
		}
	}

       啊呀,这里不小心将确定三角形内部大小也写出来了。主要是这个要是分开的话比较麻烦写在一起很方便看。所以这里我就写出来。大家看一下。

打印并且好看

        既然我将前两个步骤结合在一起了。我们直接跳到写一个步骤。打印了。但其实当我们写了上面两个步骤后,第三步也很简单了。我们用的二维数组赋值。那么我们也需要用二维数组打印嘛。这里很简单我们只需要再用一个双循环就可以打印了吧。但是我们开始也说了,我们不仅仅是为了打印还要为了好看。是吧。那么如果我们直接打印肯定不好看。比如说我们写着写着一个75582出来,是不是很长啊。那么我们为了防止这样的情况所以我们就在每一个打印前多空几个这样看起来就好多了吧。9454770ff2814a73bf4ffd892a69a5d4.png

       但是大家看一下,这样虽然答案是对的,但是却也不是很好看啊,而且也不是三角形啊。这里就体现出来我们传递过来参数的重要性了。我们传递过来的是函数,那么我们是不是就可以确定出我们第一行与最后一行相隔的数是不是就是穿过来的行数啊。我们把这些数直接打印为" ”。这样就好看多了188d0b83dd3d40de907b5e1cbdacd4a5.png

     这里我就不输入20了毕竟20行看起来很是很多,也不怎么舒服,但是大家可以看出来我们这个确实要比上一个好看多了吧。这个原理大家应该也很容易理解,就是打印左边一半的空格,这样就出现了一个对应的图案了。这样解释大家应该可以理解吧。

void xixi(int line)
{
	int i = 0;
	int j = 0;
	int arr[20][20] = { 0 };
	for ( i = 0; i <= line - 1; i++)
	{
		if (i == 0)
			arr[0][0] = 1;
		else if (i == 1)
		{
			arr[1][0] = 1;
			arr[1][1] = 1;
		}
		else
		{
			for (j = 1; j < i; j++)
			{
				arr[i][0] = 1;
					arr[i][i] = 1;
					arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
			}
		}
	}

	for (i = 0; i < line; i++)//打印数组
	{
		for ( j = line; j > i + 1; j--)
		{
			printf("   ");
		}
		for (j = 0; j <= i; j++)
		{
			printf("%-6d", arr[i][j]);  //此处用-6d的原因是如果输入行数过大,-6d可以更清晰
		}
		printf("\n");
	}
}

int main()
{
	int line = 0;
	printf("请输入杨辉三角的行数:");
	scanf("%d", &line);
	xixi(line);
	return 0;
}

       这里大家应该对实现杨辉三角就比较简单了吧。如果有不理解的地方大家一定要评论区或者私信我,我来补充。

 

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

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

相关文章

如何设置cPanel的自动备份

近期我们购买了Hostease美国VPS云主机产品&#xff0c;由于需要设置服务器的自动备份&#xff0c;我们向Hostease技术团队进行了咨询&#xff0c;他们提到VPS云主机的cPanel面板包含自动备份功能&#xff0c;下面我们就介绍如何进行自动备份的设置。 首先你需要登录到WHM面板&…

2024蓝桥杯CTF writeUP--缺失的数据

压缩包的内容 里面有secret.txt文件&#xff0c;用ARCHPR工具套上字典&#xff0c;爆破压缩包密码。密码为pavilion 解压得到原图&#xff0c;并且有了加密后的图片&#xff0c;根据代码里的key和参数直接运行脚本解密水印图片&#xff1a; import cv2 import numpy as np imp…

一文扫盲(10):考试管理系统的功能模块和界面设计

一、什么是考试管理系统 考试管理系统是一种用于管理和组织考试过程的软件系统。它提供了一系列功能&#xff0c;包括考试计划安排、考试报名、考生管理、试卷管理、考试监控、成绩管理等。考试管理系统的目的是简化和自动化考试流程&#xff0c;提高考试的效率和准确性。 考试…

启动配置 BOOT

在STM32F10xxx里&#xff0c;可以通过BOOT[1:0]引脚选择三种不同启动模式。 STM32微控制器实现了一个特殊的机制&#xff0c;系统可以不仅仅从Flash存储器或系统存储器启动&#xff0c;还可以从内置SRAM启动。 根据选定的启动模式&#xff0c;主闪存存储器、系统存储器或SRAM可…

微信小程序 手机号授权登录

手机号授权登录 效果展示 这里面用的是 uni-app 官方的登录 他支持多端发布 https://zh.uniapp.dcloud.io/api/plugins/login.html#loginhttps://zh.uniapp.dcloud.io/api/plugins/login.html#login 下面是代码 <template><!-- 授权按钮 --><button v-if&quo…

怎样给excel表格加密?如何有效的防止文件被他人你查看

在处理敏感信息或共享机密数据时&#xff0c;为 Excel 工作簿中的表格添加密码保护是一种重要的安全措施。当我们需要处理大量的工作簿并保护其中的表格时&#xff0c;手动逐个添加密码可能变得繁琐且耗时。因此&#xff0c;我们需要一种批量添加密码保护的方法。本文将详细介绍…

时钟模块RX8025SA 内置32.768 kHz石英晶体振荡器

实时时钟模块RX8025SA&#xff0c;料号Q41802552000100&#xff0c;是一款低功耗&#xff0c;高精度时钟芯片。时钟芯片RX8025SA选型过程中应该注意哪些&#xff1f;RX8025SA又应用在哪些领域呢&#xff1f;爱普生RTC实时时钟RX8025SA&#xff0c;内置32.768 kHz石英晶体振荡器…

【话题】如何看待AI技术,以及AI技术的发展现状和未来趋势

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 背景一、引言二、AIGC技术的发展现状2.1、技术突破与成果2.2、应用领域的拓展2.3、市场规模的增长 三、AIGC技术的未来趋势3.1、技术融合与创新3.2、应用领域的深化3.3、…

软件测试小妙招:详细解读 postman接口测试导入导出操作

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 postman中的集合脚本&#xff0c;环境变量、全局变量全部都可以导出&#xff0c;然后分享给团队…

追踪攻击数据包中的真实IP地址:方法与技巧

在网络安全领域&#xff0c;追踪攻击数据包中的真实IP地址是一项至关重要的任务。通过确定攻击者的真实IP地址&#xff0c;可以有效地识别和阻止网络攻击行为&#xff0c;提高网络安全防御水平。IP数据云IP地址查询将介绍几种常用的方法和技巧&#xff0c;帮助安全人员有效追踪…

命令行方式将mysql数据库迁移到达梦数据库(全步骤)

因项目需求&#xff0c;需要将mysql数据库转换为国产达梦数据库&#xff0c;但由于安全问题&#xff0c;正式环境只能用命令行方式连接&#xff0c;下列是操作全步骤 目录 一、操作逻辑二、操作步骤1、本地安装达梦相关工具2、将服务器mysql导出到本地a) 服务器命令行导出mysql…

数据中台:企业数字化转型的驱动力量_光点科技

在当今数字化快速发展的时代&#xff0c;企业正积极寻求转型升级的新路径。在这个过程中&#xff0c;数据中台以其独特的功能和价值&#xff0c;逐渐成为了企业数字化转型的关键驱动力。本文将深入探讨数据中台的角色、架构及其在企业中的应用&#xff0c;以期为企业的数字化转…

java多线程编码应用1——java多线程CompletableFuture使用技巧

在实际项目开发过程中&#xff0c;大部分程序的执行顺序都是按照代码编写的先后顺序&#xff0c;依次从上往下挨个执行的&#xff0c;但是对于统计或者批量操作数据时&#xff0c;是否有更好的方案呢&#xff1f;这时候就可以考虑使用多线程编程&#xff0c;异步并行执行多个任…

docker-compose安装es+kibana 8.12.2

小伙伴们&#xff0c;你们好&#xff0c;我是老寇&#xff0c;我又回来辣&#xff0c;几个月不见甚是想念啊&#xff01;&#xff01;&#xff01; 因云平台需要改造&#xff0c;es7升级为es8&#xff0c;所以记录一下&#xff0c;es8需要开启ssl认证&#xff0c;需要配置证书…

【3dmax笔记】027:配置修改器集、工具栏自定义与加载

文章目录 一、配置修改器集二、自定义工具栏三、加载工具栏 一、配置修改器集 可以把自己常用的修改命令放到右边框中的部分&#xff0c;便于自己的操作&#xff0c;省去了每次都要花半天时间找命令的尴尬。新建一个二维或者三维物体&#xff0c;点击修改面板&#xff0c;点击…

白盒测试:覆盖测试及测试用例设计

白盒测试&#xff1a;覆盖测试及测试用例设计 一、实验目的 1、掌握白盒测试的概念。 2、掌握逻辑覆盖法。 二、实验任务 某工资计算程序功能如下&#xff1a;若雇员月工作小时超过40小时&#xff0c;则超过部分按原小时工资的1.5倍的加班工资来计算。若雇员月工作小时超过…

1. C++入门:命名空间及输入输出

C相比C的变化 兼容C面向对象泛型C的不足的弥补 为什么要有命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地…

EMAP如何建数据源

新建数据源&#xff1a; EMAP底座的数据源&#xff0c;名称为“DB_EMAP_BIZ_BASE"&#xff0c;不可随意更改. 新建业务系统数据源&#xff0c;名称为”DB_STUDY_BIZ_BASE". 支持的数据库&#xff1a; 支持两种类型数据库&#xff1a;H2 和 oracle 新建H2数据源&am…

YOLOv9全网最新改进系列:YOLOv9融合HCF-NET网络中的PPA模块,红外小目标实验证明针对小目标的改进具有出色表现!

YOLOv9全网最新改进系列&#xff1a;YOLOv9融合HCF-NET网络中的PPA模块&#xff0c;红外小目标实验证明针对小目标的改进具有出色表现&#xff01; YOLOv9原文链接戳这里&#xff0c;原文全文翻译请关注B站Ai学术叫叫首er B站全文戳这里&#xff01; 详细的改进教程以及源码…

C语言贪吃蛇

注 &#xff1a;本文是基于链表实现贪吃蛇游戏 1.Win32 API 本篇文章中实现贪吃蛇会用到一些Win32 API的知识&#xff0c;接下来简单做下介绍 1.1 Win32 API Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外&#xff0c; 它同时也是⼀个 很大的服务中…