本文目錄一覽:
C語言,輸出楊輝三角
修改:#include”stdio.h”
void main()
{
int a[10][10],i,j;
for(i=0;i=9;i++){
a[i][0]=1;//原代碼此處需修改,第一位數為1
a[i][i]=1;
}
for(i=1;i=9;i++)
for(j=1;ji;j++)//原代碼此處需修改
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i=9;i++){
for(j=0;j=i;j++){printf(“%5d\t”,a[i][j]);}
printf(“\n”);
}return 0;}
擴展資料:
楊輝三角概述:
1.每個數等於它上方兩數之和。
2.每行數字左右對稱,由1開始逐漸變大。
3.第n行的數字有n+1項。
4.第n行數字和為2n。
5.第n行的m個數可表示為 C(n-1,m-1),即為從n-1個不同元素中取m-1個元素的組合數。
6.第n行的第m個數和第n-m+1個數相等 ,為組合數性質之一。
7.每個數字等於上一行的左右兩個數字之和。可用此性質寫出整個楊輝三角。即第n+1行的第i個數等於第n行的第i-1個數和第i個數之和,這也是組合數的性質之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。
8.(a+b)n的展開式中的各項係數依次對應楊輝三角的第(n+1)行中的每一項。
9.將第2n+1行第1個數,跟第2n+2行第3個數、第2n+3行第5個數……連成一線,這些數的和是第4n+1個斐波那契數;將第2n行第2個數(n1),跟第2n-1行第4個數、第2n-2行第6個數……這些數之和是第4n-2個斐波那契數。
10將各行數字相排列,可得11的n-1(n為行數)次方:1=11^0; 11=11^1; 121=11^2……當n5時會不符合這一條性質,此時應把第n行的最右面的數字”1″放在個位,然後把左面的一個數字的個位對齊到十位。
以此類推,把空位用「0」補齊,然後把所有的數加起來,得到的數正好是11的n-1次方。以n=11為例,第十一行的數為:1,10,45,120,210,252,210,120,45,10,1,結果為 25937424601=1110。
參考資料:楊輝三角-百度百科
C語言 楊輝三角形
#includestdio.h
int fun(int a[][100],int n);
main()
{
int n,i,j;
int a[100][100];
scanf(“%d”,n);
fun(a,n);
for(i=0;in;i++)
{
for(j=0;j=i;j++)
printf(“%d\t”,a[i][j]);
printf(“\n”);
}
}
int fun(int a[][100],int n)
{
int i,j;
for(i=0;in;i++)
a[i][0]=1;
for(i=0;in;i++)
for(j=0;j=i;j++)
a[i][j]=1;
for(i=1;in;i++)
for(j=1;j=i;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
怎樣用c語言來編寫楊輝三角形的遞歸程序?
方法一:用二維數組來編寫。
方法二:用自定義函數來編寫。
首先,楊輝三角的兩個腰邊的數都是1,其它位置的數都是上頂上兩個數之和。楊輝三角的任意一行都是的二項式係數,n為行數減1。也就是說任何一個數等於這個是高中的組合數。n代表行數減1,不代表列數減1。如:第五行的第三個數就為=6。
先定義一個二維數組:a[N][N],略大於要列印的行數。再令兩邊的數為1,即當每行的第一個數和最後一個數為1。a[i][0]=a[i][i-1]=1,n為行數。除兩邊的數外,任何一個數為上兩頂數之和,即a[i][j]=a[i-1][j-1]+a[i-1][j]。最後輸出楊輝三角。
方法一二維數組代碼如下:
#include stdio.h#define N 14void main(){ int i, j, k, n=0, a[N][N]; /*定義二維數組a[14][14]*/ while(n=0||n=13){ /*控制列印的行數不要太大,過大會造成顯示不規範*/ printf(“請輸入要列印的行數:”); scanf(“%d”,n); } printf(“%d行楊輝三角如下:\n”,n); for(i=1;i=n;i++) a[i][1] = a[i][i] = 1; /*兩邊的數令它為1,因為現在循環從1開始,就認為a[i][1]為第一個數*/ for(i=3;i=n;i++) for(j=2;j=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; /*除兩邊的數外都等於上兩頂數之和*/ for(i=1;i=n;i++){ for(k=1;k=n-i;k++) printf(” “); /*這一行主要是在輸出數之前打上空格佔位,讓輸出的數更美觀*/ for(j=1;j=i;j++) /*j=i的原因是不輸出其它的數,只輸出我們想要的數*/ printf(“%6d”,a[i][j]); printf(“\n”); /*當一行輸出完以後換行繼續下一行的輸出*/ } printf(“\n”);}
方法二:自定義函數代碼:
楊輝三角中的任何一個數都等於一個組合數。
#include stdio.h/* * 定義階乘,在這裡可能會想。為什麼要用float,當我試第一次的時候, * 如果用int的話,那麼在列印行數多了以後就會出錯。 * 這是因為階乘的數比較大,如果用int就不夠用了。下同 */float J(int i){ int j; float k=1; for(j=1;j=i;j++) k=k*j; return(k);}float C(int i,int j){ /*定義組合數*/ float k; k=J(j)/(J(i)*J(j-i)); return(k);}void main(){ int i=0,j,k,n; /*列印楊輝三角*/ while(i=0||i16){ printf(“請輸入要列印的行數:”); scanf(“%d”,i); } printf(“%d行楊輝三角如下:\n”,i); for(j=0;ji;j++){ for(k=1;k=(i-j);k++) printf(” “); for(n=0;n=j;n++) printf(“%4.0f”,C(n,j)); printf(“\n”); } printf(“\n\n”);}
楊輝三角 C語言程序
#include stdio.h
int c(int i,int j)
{if(j==0||j==i)return 1;
else return c(i-1,j)+c(i-1,j-1);
}
int main()
{
int n,i,j;
scanf(“%d”,n);
for(i=0;i=n;i++)
{
for(j=0;jn-i;j++)
printf(” “);
for(j=0;j=i;j++)
printf(“%6d”,c(i,j));
printf(“\n”);
}
getch();
return 0;
}
原創文章,作者:WKXN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/142878.html