C语言编程题——杨辉三角
概念:
杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。
分析:
我们把上图三角形左边的空格去掉后进行分析:
观察上图可以发现:
1、上图三角形的第一列的每个元素都是1;
2、三角形的斜边每个元素都是1;
3、从第三行,第二列开始,三角形中间的每个元素的值都等于它上面两个元素的和。
思路:
我们可以把这个杨辉三角看成一个二维数组,而我们只需要打印这个数组的左下方部分 :
1、我们首先创建一个二维数组:
#define ROW 10
#define COL 10
int main()
{int arr[ROW][COL] = { 0 };return 0;
}
2、这个二维数组的第一列的元素都为1,即当COL==0时,arr[ROW][COL] = 1;
3、这个二维数组的对角线的元素都为1,即当ROW == COL时,arr[ROW][COL] = 1;
4、从第三行,第二列开始,数组中间的每个元素的值都等于它上面两个元素的和:
当(ROW>=2 && COL >=1)时,arr[ROW][COL] = arr[ROW - 1][COL - 1] + arr[ROW - 1][COL];
以上内容转换为代码:
#define ROW 10
#define COL 10
int main()
{int arr[ROW][COL] = { 0 };int i = 0;int j = 0;//第一列和对角线都为1for (i = 0;i < ROW;i++){for (j = 0;j <= i;j++){if (j == 0)//第一列为1{arr[i][j] = 1;}if (i == j)//对角线为1{arr[i][j] = 1;}//从第三行,第一列的元素开始,中间的每个元素都等于它上面的两个元素之和if (i >= 2 && j >= 1){arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}}}return 0;
}
打印:
打印时,只需要再遍历一次数组左下方的元素即可:
for (i = 0;i < ROW;i++){for (j = 0;j <= i;j++){printf("%-3d ", arr[i][j]);}printf("\n");//打印完一行后换行}
效果如下:
如果想打印出刚开始的等腰三角形那种情况,只需要再控制一下每一行前面的空格数量,我们再次观察一下第一个图中杨辉三角的前三行:
当行号为3时,第一行有2个空格(ROW-1),第二行有1个空格(ROW-2),第三行有0个空格(ROW-3)
转换为代码:
for (i = 0;i < ROW;i++){for (j = 0;j < (ROW - 1) - i;j++)//控制空格数量{printf(" ");}for (j = 0;j <= i;j++){printf("%-3d ", arr[i][j]);}printf("\n");//打印完一行后换行}
因为 i 的初始值为0,所以循环条件中需要先给ROW - 1,然后再减 i 。
效果如下:
所有代码:
最后是整个程序的所有代码:
#include <stdio.h>
#define ROW 10
#define COL 10
int main()
{int arr[ROW][COL] = { 0 };int i = 0;int j = 0;//第一列和对角线都为1for (i = 0;i < ROW;i++){for (j = 0;j <= i;j++){if (j == 0)//第一列为1{arr[i][j] = 1;}if (i == j)//对角线为1{arr[i][j] = 1;}//从第三行,第一列的元素开始,中间的每个元素都等于它上面的两个元素之和if (i >= 2 && j >= 1){arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}}}for (i = 0;i < ROW;i++){for (j = 0;j < (ROW - 1) - i;j++)//控制空格数量{printf(" ");}for (j = 0;j <= i;j++){printf("%-3d ", arr[i][j]);}printf("\n");//打印完一行后换行}return 0;
}
C语言编程题——杨辉三角相关推荐
- C语言编程题——杨辉三角(两种方法实现)
杨辉三角--C语言实现 杨辉三角: 在屏幕上打印杨辉三角. 1 1 1 1 2 1 1 3 3 1 -- 根据上述例子可知: 1.每一行的第一个和第二个数为1: 2.其余的数为正上方和左边数字之和. ...
- 杨辉三角c语言编程视频,杨辉三角C语言编程
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 杨辉三角在程序练习当中是比较常见的,根据上面的给出的数列可以看出一些规律来,每行的两边都是1,从第2列开始,每个数是上一行相邻的数之和,根据 ...
- 某校2020专硕编程题-杨辉三角
题目 输入正整数n,输出n行杨辉三角 如:n=4 1 1 1 1 2 1 1 3 3 1 Java实现 public static void test05(){Scanner sc = new Sca ...
- 嵌入式 Linux 开发工具篇问题整理//C语言测试(杨辉三角、递归调用实现阶乘、计算器、统计字符串出现次数)//2018.07.12.//
嵌入式 Linux 开发工具篇问题整理 1. 嵌入式开发与传统开发的区别?(同类问题:单片机开发与嵌入式开发的区别) 是否有无操作系统: 2. 移植操作系统的好处有哪些 ...
- 杨辉三角c语言程序for循环,如何用C语言循环输出杨辉三角?
#include #define N 14 void main() { int i, j, k, n=0, a[N][N]; /*定义二维数组a[14][14]*/ while(n<=0||n ...
- 【已解决】蓝桥杯 2017年C组第五题 杨辉三角(分析与总结)
励志用少的代码做高效表达 题目描述: 杨辉三角也叫帕斯卡三角,在很多数量关系中可以看到,十分重要. 第0行: 1 第1行: 1 1 第2行: 1 2 1 第3行: 1 3 3 1 第4行: 1 4 6 ...
- 【C语言练习——打印杨辉三角及其变形】
CSDN话题挑战赛第1期 活动详情地址:活动地址 参赛话题:大学学习月/季度总结 话题描述:对自己大学的月/季度学习的复盘及展望 杨辉三角及其变形 前言 1.杨辉三角之左对齐 1.1 写法1 1.2 ...
- 关于蓝桥杯第十二届H题杨辉三角(满分结果)
一.题目描述 二.题目初步分析 杨辉三角大家都会,这题多了一个进行判断,相等就输出位置,难点在于:n可以为10亿,运行次数过多会超内存,超时 三.寻找规律 按照这类题,想出正确结果,只有寻找规律 第一 ...
- 每日程序C语言33-打印杨辉三角
题目: 打印出杨辉三角的前十行 程序分析 杨辉三角的前十行: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 3 ...
- LeetCode 第119题 杨辉三角II
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 通项公式 : n = n * (rowIndex - i) / (i + 1); ...
最新文章
- JDBC进行简单的增删改查
- Windows 10 周年更新正式版下载 + win10 快捷键
- 解除Ubuntu系统的root登录图形界面限制
- 一个自定义类型的运算符重载的例子
- 网络编程释疑之:TCP的TIME_WAIT状态在服务器开发中的影响?
- Cntlm安装和配置心得
- oracle数据库查看归档路径,centos7下查oracle归档及物理文件路径
- 使用计算机教学的意义,信息技术对教学的意义
- Spring Boot Java应用代码混淆介绍
- Adaboost新理解
- 我为什么鼓励大家运营个人公众号
- scapy:收发数据包
- java怎么分组查询_JAVA8 分组统计
- 软件技术毕业论文编程方向
- 数据目录是什么?为何需要它?
- unity tags的坑
- Win 10 关闭系统自动更新(解决svchost.exe 占用网络问题,解决svchost.exe不断消耗流量问题)
- 关于社区团购和菜场买菜的一点感想
- 【JavaScript】this指向经典面试题(超详细)
- java接口和抽象类的区别(经典面试题)