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

我们可以看到我们外围都是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;//这里我们就确定每一行的首个元素和最后一个元素为1arr[i][j] = 1;arr[i][i] = arr[i - 1][j - 1] + arr[i - 1][j];//确定三角形内部的大小
//规律是上一行前一列和本列数之和。这个大家可以多看一下上面的图片就可以看出来了}}}
啊呀,这里不小心将确定三角形内部大小也写出来了。主要是这个要是分开的话比较麻烦写在一起很方便看。所以这里我就写出来。大家看一下。
打印并且好看
既然我将前两个步骤结合在一起了。我们直接跳到写一个步骤。打印了。但其实当我们写了上面两个步骤后,第三步也很简单了。我们用的二维数组赋值。那么我们也需要用二维数组打印嘛。这里很简单我们只需要再用一个双循环就可以打印了吧。但是我们开始也说了,我们不仅仅是为了打印还要为了好看。是吧。那么如果我们直接打印肯定不好看。比如说我们写着写着一个75582出来,是不是很长啊。那么我们为了防止这样的情况所以我们就在每一个打印前多空几个这样看起来就好多了吧。
但是大家看一下,这样虽然答案是对的,但是却也不是很好看啊,而且也不是三角形啊。这里就体现出来我们传递过来参数的重要性了。我们传递过来的是函数,那么我们是不是就可以确定出我们第一行与最后一行相隔的数是不是就是穿过来的行数啊。我们把这些数直接打印为" ”。这样就好看多了
这里我就不输入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;
}
这里大家应该对实现杨辉三角就比较简单了吧。如果有不理解的地方大家一定要评论区或者私信我,我来补充。
相关文章:
C语言----杨辉三角
各位看官们好。学习到这里想必大家应该对C语言的了解也是很深刻的了吧。但是我们也不能忘记我们一起学习的知识啊。在我们以前学习C语言的时候我想大家应该都听说过杨辉三角吧。虽然我们把其中的规律找到那么这个代码就简单很多了。那么接下里我们就来讲讲杨辉三角。 首先我们先…...
FlaUI
FlaUI是一个基于微软UIAutomation技术(简称UIA)的.NET库,它主要用于对Windows应用程序(如Win32、WinForms、WPF、Store Apps等)进行自动化UI测试。FlaUI的前身是TestStack.White,由Roemer开发,旨…...
MySQL调优-01反范式化表设计
MySQL调优-01反范式化表设计 数据库设计三范式 第一范式(1NF)。确保数据库表的每一列都是不可分割的原子数据项,即列中不可包含数组、记录等非原子数据项;确保表中没有重复的属性或列,每个属性只出现一次,…...
74从零开始学Java之排序算法中的冒泡和选择排序
作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们要想成为一个优秀的程序员,其实非常关键的一点就是要锻炼培养自己的编程思维,就好比一个狙击手,要通过大量的射击训练要用大量的子弹喂出来。同样的…...
【Qt问题】VS2019 Qt win32项目如何添加x64编译方式
往期回顾: 【Qt问题】Qt常用快捷键汇总-CSDN博客 【Qt问题】Qt Creator 如何链接第三方库-CSDN博客 【Qt问题】Qt 如何带参数启动外部进程-CSDN博客 【Qt问题】VS2019 Qt win32项目如何添加x64编译方式 我们都知道vs2019在编译项目的时候是需要选择编译环境的&…...
LabVIEW换智能仿真三相电能表研制
LabVIEW换智能仿真三相电能表研制 在当前电力工业飞速发展的背景下,确保电能计量的准确性与公正性变得尤为重要。本文提出了一种基于LabVIEW和单片机技术,具有灵活状态切换功能的智能仿真三相电能表,旨在通过技术创新提高电能计量人员的培训…...
Python | Leetcode Python题解之第69题x的平方根
题目: 题解: class Solution:def mySqrt(self, x: int) -> int:if x 0:return 0C, x0 float(x), float(x)while True:xi 0.5 * (x0 C / x0)if abs(x0 - xi) < 1e-7:breakx0 xireturn int(x0)...
libhv http client vs cpr
libhv http client 和 cpr 的性能对比 libhv test code static void test_http_async(HttpClient* cli, int seq, int* resp_cnt) {auto req std::make_shared<HttpRequest>();req->method HTTP_GET;req->url "www.baidu.com";req->timeout 1…...
CTFHub-Web-文件上传
CTFHub-Web-文件上传-WP 一、无验证 1.编写一段PHP木马脚本 2.将编写好的木马进行上传 3.显示上传成功了 4.使用文件上传工具进行尝试 5.连接成功进入文件管理 6.上翻目录找到flag文件 7.打开文件查看flag 二、前端验证 1.制作payload进行上传发现不允许这种类型的文件上传 …...
笔记2:cifar10数据集获取及pytorch批量处理
(1)cifar10数据集预处理 CIFAR-10是一个广泛使用的图像数据集,它由10个类别的共60000张32x32彩色图像组成,每个类别有6000张图像。 CIFAR-10官网 以下为CIFAR-10数据集data_batch_*表示训练集数据,test_batch表示测试…...
FSD自动驾驶泛谈
特斯拉的FSD(Full-Self Driving,全自动驾驶)系统是特斯拉公司研发的一套完全自动驾驶系统。旨在最终实现车辆在多种驾驶环境下无需人类干预的自动驾驶能力。以下是对FSD系统的详细探讨: 系统概述 FSD是特斯拉的自动驾驶技术&…...
golang获取变量动态类型
类型断言:data.(Type) 类型断言是最常用的获取变量动态类型的方法之一。允许在运行时将接口值转换为其具体类型。 data 是一个接口类型的变量。 Type 是一个具体的类型。 这个表达式的含义是,如果 data 的底层值是 Type 类型,那么 value 将接…...
外企接受大龄程序员吗?
本人知乎账号同公众号:老胡聊Java,欢迎留言并咨询 亲身体会外企经历所见所闻,外企能接受大龄程序员。 1 大概是10年的时候,进一家知名外企,和我一起进的一位manager,后来听下来,年龄35…...
【DevOps】掌控云端:Google Cloud SDK 快速上手
一、Google Cloud SDK Google Cloud SDK (Software Development Kit) 是一组工具,包括 gcloud、gsutil 和 bq,用于通过命令行或自动化脚本访问和管理 Google Cloud 资源和服务。以下是 Cloud SDK 的详细介绍: 1、gcloud 命令行工具 gcloud 是 Cloud SDK 的核心组件,用于管理 …...
【Unity 踩坑系列】配置VScode环境Downloading the.NET Runtime Failed to download.NET 7.0.9installation timed out
1.问题描述 在最近使用Unity配置VScode开发环境时,总会出现以下的情况。(很多朋友其实本地已经自己安装好了.net环境 PS:可能各种版本.net 6.0 - .net 8.0都试过安装了 但就是会自动下载最新版本的.net ) Downloading the .NET Runtime. Downloading .NET versio…...
深入了解 NumPy:深度学习中的数学运算利器
文章目录 1. 导入NumPy2. 创建NumPy数组3. 数组的算术运算4. N维数组4.1 创建和操作多维数组4.2 高维数组 5. NumPy的广播功能5.1 基本广播示例5.2 更复杂的广播示例 6. 访问数组元素6.1 基于索引的访问6.2 遍历数组6.3 基于条件的访问6.4 高级索引6.5 性能考虑 在深度学习和数…...
鸿蒙开发接口Ability框架:【@ohos.ability.particleAbility (particleAbility模块)】
particleAbility模块 particleAbility模块提供了Service类型Ability的能力,包括启动、停止指定的particleAbility,获取dataAbilityHelper,连接、断开当前Ability与指定ServiceAbility等。 说明: 本模块首批接口从API version 7开…...
Flutter笔记:Widgets Easier组件库(8)使用图片
Flutter笔记 Widgets Easier组件库(8):使用图片 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress o…...
商务分析方法与工具(五):Python的趣味快捷-文件和文件夹操作自动化
Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊! 喜欢我的博客的话,记得…...
codeforce#938 (div3) 题解
C. Inhabitant of the Deep Sea 数组第一个元素减一下,最后一个元素减一下,一共能减k次,问有多少元素能减到0.细节模拟我是傻逼,有问题建议直接看tc面像tc编程 #include <iostream> #include <string.h> #include &…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
