趣味C程序100.9 绘制杨辉三角
说明:1.本问题来源于《C语言经典、趣味、实用程序设计编程百例精解》,所有程序为本人自己编写。与原程序不同之处作有标记。
2.本系列所有程序均使用codeblocks编译,操作系统为Windows XP。
问题:在屏幕上显示杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
………………………………
分析:我以图形的特点出发,设计两个数组,循环输出,代码如下。
#include <stdio.h>
#include <stdlib.h> int main(void)
{
int i=, j=;
int a[]={}, b[]={};
a[]=;
int rows=; printf("Please input rows: ");
scanf("%d", &rows); //控制输出多少行 for(i=; i<=rows; i++)
{
for(j=; j<rows-i; j++) //控制输出每行前的空格
{
printf(" ");
} for(j=; j<rows; j++)//将数组a复制给数组b
{
b[j] = a[j];
} for(j=; j<=i-; j++) //通过数组b给下一行赋值
{
a[j] = b[j-] + b[j];
} for(j=; j<rows; j++) //输出新一行数组a
{
if(a[j]!=)
printf("%4d", a[j]);
} printf("\n");
} return ;
}
输出情况如下:

图1
原书分析如下:
杨辉三角中的数,正是(x+y)的N次幂展开式的各项的系数。从杨辉三角的特点出发,可以总结出:
1)第N行有N+1个值(设起始行为0行);
2)对于第N行的第J个值:(N>=2);
当J=1时或J=N+1时:其值为1;
J!=1且J!=N+1时:其值为第N-1行的第J-1个值和第J个值的和。
将如上特点提炼成数学公式可表示为:
1 x=1或x=N+1
c(x,y)=c(x-1,y-1)+c(x-1,y)
#include <stdio.h>
#include <stdlib.h> int YangHui(int x,int y); int main(void)
{
int i, j, n=;
printf("N=");
while(n>)
scanf("%d", &n); //控制输入正确的值以保证屏幕显示的图形正确 for(i=; i<=n; i++) //控制输出N行
{
for(j=; j<-*i; j++)
printf(" "); //控制输出第i行前的空格 for(j=; j<i+; j++)
printf("%4d", YangHui(i, j)); //输出第i行的第j个值 printf("\n");
} return ;
} int YangHui(int x, int y)
{
int z;
if((y==)||(y==x+))
return ; z=YangHui(x-,y-)+YangHui(x-, y);
return z;
}
输出情况如下:

图2
趣味C程序100.9 绘制杨辉三角的更多相关文章
- 经典问题(c++/python)素数、杨辉三角(金字塔型)、统计单词数、简单计算器、密码安全程度、凯撒密码加密、汉诺塔 (python课设实验实例)-- biaobiao88
[编写程序,输人一个大于2的自然数,然后输出小于该数字的所有素数组成的列表.]所谓素数,是指除了1和自身之外没有其他因数的自然数,最小的素数是2,后面依次是3.5.7.11.13... c++代码: ...
- JAVA 基础编程练习题33 【程序 33 杨辉三角】
33 [程序 33 杨辉三角] 题目:打印出杨辉三角形(要求打印出 10 行如下图) 程序分析: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 package ...
- C语言小程序(四)、杨辉三角
输入要显示的杨辉三角的行数,会打印出金字塔型的杨辉三角,不过行数太多的话,效果不太好,可以再调整一下格式控制. #include <stdio.h> #include <stdlib ...
- python 生成器生成杨辉三角
用Python写趣味程序感觉屌屌的,停不下来 #生成器生成展示杨辉三角 #原理是在一个2维数组里展示杨辉三角,空的地方用0,输出时,转化为' ' def yang(line): n,leng=0,2* ...
- java实现组合数_n!_杨辉三角_组合数递推公式_回文数_汉诺塔问题
一,使用计算机计算组合数 1,设计思想 (1)使用组合数公式利用n!来计算Cn^k=n!/k!(n-k)!用递推计算阶乘 (2)使用递推的方法用杨辉三角计算Cn+1^k=Cn^k-1+Cn^k 通过数 ...
- java基础:进制详细介绍,进制快速转换,二维数组详解,循环嵌套应用,杨辉三角实现正倒直角正倒等腰三角,附练习案列
1.Debug模式 1.1 什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序. 1.2 Debug介绍与操作流程 如何加断点 选择 ...
- [LeetCode] Pascal's Triangle II 杨辉三角之二
Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...
- POJ2167Irrelevant Elements[唯一分解定理 组合数 杨辉三角]
Irrelevant Elements Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 2407 Accepted: 59 ...
- HDNOIP201405杨辉三角
2016.1.27 试题描述 杨辉三角是形如如下的数字三角形: 1 1 1 1 2 1 …… 现在想求出杨辉三角第N行的N个数中,有多少个数能被给定的质数p整除. 输入 一行两个空格隔 ...
随机推荐
- 利用WinDriver开发PCI设备驱动程序
摘要 WinDriver是Jungo公司出版的一个设备驱动程序开发组件,它可以大大加速PCI设备驱动程序的开发.作者在实际的项目中采用了WinDriver来开发设备驱动程序,取得了相当好的运行效果.从 ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- 使用Java辅助类(CountDownLatch、CyclicBarrier、Semaphore)并发编程
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法 一.C ...
- python学习笔记--导入tab键自动补全功能的配置
今天开始学习Python,必须配置tab键补全功能 1.首先我们需要查看python的安装路径 [root@abc ~]# python Python 2.6.6 (r266:84292, Jan 2 ...
- SOAP消息创建
看了SOAP消息分析之后,大家对soap消息应该有了一个初步的认识,那么怎样自己编写一个soap消息呢? 先来创建一个简单的soap消息: @Test public void test1(){ try ...
- jquery easyUI 日期格式化,DateBox只显示年
jquery easyUI 日期格式化,DateBox只显示年 >>>>>>>>>>>>>>>>> ...
- 一个自定义线程池的小Demo
在项目中如果是web请求时候,IIS会自动分配一个线程来进行处理,如果很多个应用程序共享公用一个IIS的时候,线程分配可能会出现一个问题(当然也是我的需求造成的) 之前在做项目的时候,有一个需求,就是 ...
- android - android Couldn't load runtimecore_java from loader
在写Arcgis Android 或百度Android的时候,有时会报诸如,java.lang.UnsatisfiedLinkError:android Couldn't load runtimeco ...
- TP-LINK wr703n openwrt 挂载 U盘
1.首先设置好DNS 2.点SYSTEM 点SOFTWARE 更新软件列表 3.安装下列软件: block-mount kmod-usb-storage kmod-fs-ext4 e2fsprogs ...
- ipad屏幕旋转后的代理
- (void)statusBarOrientationChange:(NSNotification *)notification { UIInterfaceOrientation o ...