程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 趣味C程序100.9 繪制楊輝三角,100.9楊輝

趣味C程序100.9 繪制楊輝三角,100.9楊輝

編輯:關於C語言

趣味C程序100.9 繪制楊輝三角,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=0, j=0;
    int a[20]={0}, b[20]={0};
    a[0]=1;
    int rows=1;

    printf("Please input rows: ");
    scanf("%d", &rows);    //控制輸出多少行

    for(i=1; i<=rows; i++)
    {
        for(j=0; j<rows-i; j++) //控制輸出每行前的空格
        {
            printf("  ");
        }

        for(j=0; j<rows; j++)//將數組a復制給數組b
        {
            b[j] = a[j];
        }

        for(j=1; j<=i-1; j++) //通過數組b給下一行賦值
        {
            a[j] = b[j-1] + b[j];
        }

        for(j=0; j<rows; j++) //輸出新一行數組a
        {
            if(a[j]!=0)
                printf("%4d", a[j]);
        }

        printf("\n");
    }

    return 0;
}

輸出情況如下:

圖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=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", YangHui(i, j)); //輸出第i行的第j個值

        printf("\n");
    }

    return 0;
}

int YangHui(int x, int y)
{
    int z;
    if((y==1)||(y==x+1))
        return 1;

    z=YangHui(x-1,y-1)+YangHui(x-1, y);
    return z;
}

輸出情況如下:

圖2

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved