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 &…...
【Docker】如何注册Hub账号并上传镜像到Hub仓库
一、创建Hub账户 浏览器访问:hub.docker.com 点击【Sign up】注册账号 输入【邮箱】【用户名】【密码】 ps:用户名要有字母数字;订阅不用勾选 点击【Sign up】注册即可 点击【Sign in】登录账号 输入【邮箱】【密码】 点击【Continue】登录 二…...
[初阶数据结构】单链表
前言 📚作者简介:爱编程的小马,正在学习C/C,Linux及MySQL。 📚本文收录于初阶数据结构系列,本专栏主要是针对时间、空间复杂度,顺序表和链表、栈和队列、二叉树以及各类排序算法,持…...
项目使用git开发流程
第一步 项目初期:领导负责的工作 01 创建仓库:在码云上面创建仓库地址,创建完成后点击初始化README:郝陶涛/vue-tea 02 领导在桌面上将代码克隆下来:将代码克隆下来之后,切换到代码内部,使用g…...
Day 28 MySQL的数据备份与恢复
数据备份及恢复 1.概述 所有备份数据都应放在非数据库本地,而且建议有多份副本 备份: 能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方 冗余: 数据有多份冗余,但不等备份&…...
PackageKit的使用(三)疑问篇
本篇主要是一些疑问归纳,不做具体的函数分析,但是会给出关键点,查看源码就会很清楚了 apt source PackageKit 1. org.freedesktop.PackageKit D-Bus 接口介绍 D-Bus API Reference: PackageKit Reference Manual c库的接口可以看源码。 2.…...
【Linux】17. 进程间通信 --- 管道
1. 什么是进程间通信(进程间通信的目的) 数据传输:一个进程需要将它的数据发送给另一个进程 资源共享:多个进程之间共享同样的资源。 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了…...
有哪些有效的复习方法可以帮助备考软考?
软考目前仍然是一个以记忆为主、理解为辅的考试。学过软考的朋友可能会感到困惑,因为软考的知识在日常工作中有许多应用场景,需要理解的地方也很多。但为什么我说它是理解为辅呢?因为这些知识点只要记住了,都不难理解,…...
【MySQL | 第九篇】重新认识MySQL锁
文章目录 9.重新认识MySQL锁9.1MySQL锁概述9.2锁分类9.2.1锁的粒度9.2.2锁的区间9.2.3锁的性能9.2.4锁的级别 9.3拓展:意向锁9.3.1意向锁概述9.3.2意向锁分类9.3.3意向锁作用(1)意向锁的兼容互斥性(2)例子1(…...
含义:理财风险等级R1、R2、R3、R4、R5
理财风险等级R1、R2、R3代表什么,为什么R1不保本,R2可能亏损 不尔聊投资https://author.baidu.com/home?frombjh_article&app_id1704141696580953 我们购买理财产品的时候,首先都会看到相关产品的风险等级。风险等级约定俗成有5级&…...
ICode国际青少年编程竞赛- Python-2级训练场-列表入门
ICode国际青少年编程竞赛- Python-2级训练场-列表入门 1、 Dev.step(3)2、 Flyer.step(1) Dev.step(-2)3、 Flyer.step(1) Spaceship.step(7)4、 Flyer.step(5) Dev.turnRight() Dev.step(5) Dev.turnLeft() Dev.step(3) Dev.turnLeft() Dev.step(7) Dev.turnLeft() Dev.…...
企业网站建设移动/搜索排名提升
前言 拿到字符串的开始和结束的位置,然后再进行字符串加密操作 I、字符串加密 #import <Foundation/Foundation.h> #import <dlfcn.h> #import "Index.h"#define FILENAME "/Users/monkey/Documents/iosreversebook/sourcecode/chapter-8/LibCla…...
wordpress相册插件nextgen gallery/网络推广应该怎么做啊
文章目录1、什么是生成器2、三元表达式3、列表解析4、生成器的表现形式4.1、生成器函数4.2、生成器表达式5、生成器只能被遍历一次6、生成器send用法7、使用迭代器协议访问对象的内置函数1、什么是生成器 在 Python 中,使用了 yield 的函数被称为生成器(…...
wordpress主题安装不成功/怎么注册网站
【题目来源】http://poj.org/problem?id1270【题目大意】 输入两行字母,第一行是字母,第二行是字母的关系。一对儿字母 A B 表示 A<B。比如,a b b f,表示a<b并且b<f 。现在要求依据输入,输出相应的所有拓扑序…...
微信分销系统价格/seo优化代理
在日志中记录Java异常信息的正确姿势参考文章: (1)在日志中记录Java异常信息的正确姿势 (2)https://www.cnblogs.com/nuccch/p/11061929.html 备忘一下。...
涿州网站建设涿州/seo网站关键词排名优化
有三中方法可以实现验证码的功能 第一种是自定义一个filter,放在SpringSecurity过滤器之前,在用户登录的时候会先经过这个filter,然后在这个filter中实现对验证码进行验证的功能,这种方法不推荐,因为它已经脱离了Sprin…...
如何找回网站后台密码/怎样免费给自己的公司做网站
给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一個質數,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一個質數5筛,把5留下&#x…...