说明: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 绘制杨辉三角的更多相关文章

  1. 经典问题(c++/python)素数、杨辉三角(金字塔型)、统计单词数、简单计算器、密码安全程度、凯撒密码加密、汉诺塔 (python课设实验实例)-- biaobiao88

    [编写程序,输人一个大于2的自然数,然后输出小于该数字的所有素数组成的列表.]所谓素数,是指除了1和自身之外没有其他因数的自然数,最小的素数是2,后面依次是3.5.7.11.13... c++代码: ...

  2. 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 ...

  3. C语言小程序(四)、杨辉三角

    输入要显示的杨辉三角的行数,会打印出金字塔型的杨辉三角,不过行数太多的话,效果不太好,可以再调整一下格式控制. #include <stdio.h> #include <stdlib ...

  4. python 生成器生成杨辉三角

    用Python写趣味程序感觉屌屌的,停不下来 #生成器生成展示杨辉三角 #原理是在一个2维数组里展示杨辉三角,空的地方用0,输出时,转化为' ' def yang(line): n,leng=0,2* ...

  5. java实现组合数_n!_杨辉三角_组合数递推公式_回文数_汉诺塔问题

    一,使用计算机计算组合数 1,设计思想 (1)使用组合数公式利用n!来计算Cn^k=n!/k!(n-k)!用递推计算阶乘 (2)使用递推的方法用杨辉三角计算Cn+1^k=Cn^k-1+Cn^k 通过数 ...

  6. java基础:进制详细介绍,进制快速转换,二维数组详解,循环嵌套应用,杨辉三角实现正倒直角正倒等腰三角,附练习案列

    1.Debug模式 1.1 什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序. 1.2 Debug介绍与操作流程 如何加断点 选择 ...

  7. [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, ...

  8. POJ2167Irrelevant Elements[唯一分解定理 组合数 杨辉三角]

    Irrelevant Elements Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 2407   Accepted: 59 ...

  9. HDNOIP201405杨辉三角

    2016.1.27 试题描述 杨辉三角是形如如下的数字三角形: 1 1    1 1   2    1 …… 现在想求出杨辉三角第N行的N个数中,有多少个数能被给定的质数p整除. 输入 一行两个空格隔 ...

随机推荐

  1. MobilePhone正则表达式

    电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号) ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3} ...

  2. FZU 2129 子序列个数 (动态规划)

    题意:子序列的定义:对于一个序列a=a[1],a[2],......a[n].则非空序列a'=a[p1],a[p2]......a[pm]为a的一个子序列,其中1<=p1<p2<.. ...

  3. 兔子--R.java丢失原因及解决的方法

    R.jar丢失原因: a:eclipse指向的adk路径有中文,或者是workspace路径有中文 b:xml文件里有错误或者引用的资源不存在 c:xml或者drawable下资源文件不能够有大写字母 ...

  4. System.currentTimeMillis();

    1.  意义: currentTimeMillis()返回以毫秒为单位的当前时间,返回的是当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位測量).注意,当返回值的时间单 ...

  5. Upstart概述引导方法事件驱动的任务和服务

    /*********************************************************************  * Author  : Samson  * Date   ...

  6. Sending e-mail with Spring MVC---reference

    reference from:http://www.codejava.net/frameworks/spring/sending-e-mail-with-spring-mvc Table of con ...

  7. 三分钟学会缓存工具DiskLruCache

    DiskLruCache是一个十分好用的android缓存工具,我们可以从GitHub上下载其源码:https://github.com/JakeWharton/DiskLruCache DiskLr ...

  8. WTL的核心机制

    WTL背景介绍 WTL是微软ATL开发组成员Nenad Stefanovic先生在ATL Windowing机制上发展起来的一整套GUI框架,运用template技术组织和创建GUI对象,构筑了精致的 ...

  9. select/**/*/**/from/**/RegSite

    select/**/*/**/from/**/RegSite  这样写sql也是可以的 替换空格

  10. ado.net 学习小结

    连接数据源 Connection对象.Connection对象处于最顶层,是所有数据访问请求的关口.我们通过其暴露的属性进行配置.下面是一段连接字符串的示例. if (string.IsNullOrE ...