您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C语言 >> 辅导 >> 正文    
  C趣味程序百例(03)杨辉三角形 【注册男护士专用博客】          

C趣味程序百例(03)杨辉三角形

www.nanhushi.com     佚名   不详 

9.杨辉三角形
    在屏幕上显示杨辉三角形

                            1
                         1      1
                      1     2      1
                   1     3     3      1
               1      4     6      4     1
            1     5     10     10     5     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个值与第N-1行第J个值之和
    将这些特点提炼成数学公式可表示为:
                 1                          x=1或x=N+1
     c(x,y)= 
                 c(x-1,y-1)+c(x-1,y)        其它

    本程序应是根据以上递归的数学表达式编制的。
*程序说明与注释
#include<stdio.h>
void main()
{
    int i,j,n=13;
    printf("N=");
    while(n>12)
        scanf("%d",&n);     /*控制输入正确的值以保证屏幕显示的图形正确*/
    for(i=0;i<=n;i++)       /*控制输出N行*/
    {
        for(j-0;j<24-2*i;j++) printf(" ");  /*控制输出第i行前面的空格*/
        for(j=1;j<i+2;j++) printf("%4d",c(i,j));    /*输出第i行的第j个值*/
        printf("\n");
    }
}

void int c(int x,int y)     /*求杨辉三角形中第x行第y列的值*/
{
    int z;
    if((y==1)||(y==x+1))  return 1;  /*若为x行的第1或第x+1列,则输出1*/
    z=c(x-1,y-1)+c(x-1,y);          /*否则,其值为前一行中第y-1列与第y列值之和*/
    return z;
}
*运行结果
输入:N=12
输出:


*思考题
自行设计一种实现杨辉三角形的方法。

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目