当前位置: 首页 > news >正文

C语言----杨辉三角

       各位看官们好。学习到这里想必大家应该对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;//这里我们就确定每一行的首个元素和最后一个元素为1arr[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;
}

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

 

相关文章:

C语言----杨辉三角

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

FlaUI

FlaUI是一个基于微软UIAutomation技术&#xff08;简称UIA&#xff09;的.NET库&#xff0c;它主要用于对Windows应用程序&#xff08;如Win32、WinForms、WPF、Store Apps等&#xff09;进行自动化UI测试。FlaUI的前身是TestStack.White&#xff0c;由Roemer开发&#xff0c;旨…...

MySQL调优-01反范式化表设计

MySQL调优-01反范式化表设计 数据库设计三范式 第一范式&#xff08;1NF&#xff09;。确保数据库表的每一列都是不可分割的原子数据项&#xff0c;即列中不可包含数组、记录等非原子数据项&#xff1b;确保表中没有重复的属性或列&#xff0c;每个属性只出现一次&#xff0c;…...

74从零开始学Java之排序算法中的冒泡和选择排序

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们要想成为一个优秀的程序员,其实非常关键的一点就是要锻炼培养自己的编程思维,就好比一个狙击手,要通过大量的射击训练要用大量的子弹喂出来。同样的…...

【Qt问题】VS2019 Qt win32项目如何添加x64编译方式

往期回顾&#xff1a; 【Qt问题】Qt常用快捷键汇总-CSDN博客 【Qt问题】Qt Creator 如何链接第三方库-CSDN博客 【Qt问题】Qt 如何带参数启动外部进程-CSDN博客 【Qt问题】VS2019 Qt win32项目如何添加x64编译方式 我们都知道vs2019在编译项目的时候是需要选择编译环境的&…...

LabVIEW换智能仿真三相电能表研制

LabVIEW换智能仿真三相电能表研制 在当前电力工业飞速发展的背景下&#xff0c;确保电能计量的准确性与公正性变得尤为重要。本文提出了一种基于LabVIEW和单片机技术&#xff0c;具有灵活状态切换功能的智能仿真三相电能表&#xff0c;旨在通过技术创新提高电能计量人员的培训…...

Python | Leetcode Python题解之第69题x的平方根

题目&#xff1a; 题解&#xff1a; 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批量处理

&#xff08;1&#xff09;cifar10数据集预处理 CIFAR-10是一个广泛使用的图像数据集&#xff0c;它由10个类别的共60000张32x32彩色图像组成&#xff0c;每个类别有6000张图像。 CIFAR-10官网 以下为CIFAR-10数据集data_batch_*表示训练集数据&#xff0c;test_batch表示测试…...

FSD自动驾驶泛谈

特斯拉的FSD&#xff08;Full-Self Driving&#xff0c;全自动驾驶&#xff09;系统是特斯拉公司研发的一套完全自动驾驶系统。旨在最终实现车辆在多种驾驶环境下无需人类干预的自动驾驶能力。以下是对FSD系统的详细探讨&#xff1a; 系统概述 FSD是特斯拉的自动驾驶技术&…...

golang获取变量动态类型

类型断言&#xff1a;data.(Type) 类型断言是最常用的获取变量动态类型的方法之一。允许在运行时将接口值转换为其具体类型。 data 是一个接口类型的变量。 Type 是一个具体的类型。 这个表达式的含义是&#xff0c;如果 data 的底层值是 Type 类型&#xff0c;那么 value 将接…...

外企接受大龄程序员吗?

本人知乎账号同公众号&#xff1a;老胡聊Java&#xff0c;欢迎留言并咨询 亲身体会外企经历所见所闻&#xff0c;外企能接受大龄程序员。 1 大概是10年的时候&#xff0c;进一家知名外企&#xff0c;和我一起进的一位manager&#xff0c;后来听下来&#xff0c;年龄35&#xf…...

【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开发环境时&#xff0c;总会出现以下的情况。(很多朋友其实本地已经自己安装好了.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的能力&#xff0c;包括启动、停止指定的particleAbility&#xff0c;获取dataAbilityHelper&#xff0c;连接、断开当前Ability与指定ServiceAbility等。 说明&#xff1a; 本模块首批接口从API version 7开…...

Flutter笔记:Widgets Easier组件库(8)使用图片

Flutter笔记 Widgets Easier组件库&#xff08;8&#xff09;&#xff1a;使用图片 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress o…...

商务分析方法与工具(五):Python的趣味快捷-文件和文件夹操作自动化

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…...

codeforce#938 (div3) 题解

C. Inhabitant of the Deep Sea 数组第一个元素减一下&#xff0c;最后一个元素减一下&#xff0c;一共能减k次&#xff0c;问有多少元素能减到0.细节模拟我是傻逼&#xff0c;有问题建议直接看tc面像tc编程 #include <iostream> #include <string.h> #include &…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...