當前位置:首頁 » 編程語言 » 楊輝三角形c語言程序解析
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

楊輝三角形c語言程序解析

發布時間: 2022-03-05 09:16:15

『壹』 用c語言編寫楊輝三角形

楊輝三角形是形如
1
1
1
1
2
1
1
3
3
1
1
4
6
4
1
的三角形,其實質是二項式(a+b)的n次方展開後各項的系數排成的三角形,它的特點是左右兩邊全是1,從第二行起,中間的每一個數是上一行里相鄰兩個數之和。這個題目常用於程序設計的練習。
下面給出六種不同的解法。
解法一
#include
main()
{
int
i,j,n=0,a[17][17]={0};
while(n<1
||
n>16)
{
printf("請輸入楊輝三角形的行數:");
scanf("%d",&n);
}
for(i=0;i
評論
0
0
0
載入更多

『貳』 c語言程序輸出楊輝三角形

這樣肯定不對。

for(i=0;i<10;i++)
{
printf(" ");
for(j=0;j<n&&n<=10;j++)//第一次執行這個循環輸出一個值,就是三角頂。你剛開始就把三角頂搞了10個數,你想想,肯定不對吧。這個地方必須是j<=i
{
printf("%5d",a[i][j]);
n++;
}
}

『叄』 求楊輝三角的c語言編程,要完全正確的,急用!金字塔形的!

#include<stdio.h>
main()
{
inti,k,j,a[5][5]={{1},{1,1}};
for(i=2;i<=5;i++)
{
for(j=0;j<=i;j++)
if((j==0)||(j==i))
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
for(i=0;i<5;i++)
{
printf(" ");
for(k=0;k<=30-2*i;k++)
{
printf("");
}
for(j=0;j<=i;j++)
printf("%4d",a[i][j]);
}
getch();
}

『肆』 楊輝三角 用c語言怎麼編程

楊輝三角的形狀如下(因為網路知道不支持輸出空格,故以空格間隔。)
********1********(a+b)^0("^"表示次方)
*******1*1*******(a+b)¹
******1*2*1******(a+b)²
*****1*3*3*1*****(a+b)³
****1*4*6*4*1****(a+b)^4
我們知道,楊輝三角形的特點是:每行的第一列為1,最後一列為1。從第三行開始,中間各列等於上一行中前列與本列的和。

可以看出,最後一列的列數正好等於行數(第n行有n個數)。
我們首先就想到,使用一個二重循環就可解決這個問題,但是其中有個問題需要解決,就是數字的位置。C語言中不能象PASCAL語言那樣確定列印的坐標,但可以用空格來間接實現。認真觀察一下就會發現,從第二行開始,每行的第一個數都比上一行左移一個位置,也就是說,每行第一個數之前的空格數逐行減去一個數字所佔的列數。turbo c 2.0 以字元輸出時,每行80個字元,我們把第一行的第一個數(本行就一個數即1)放在第40個字元的位置處,且規定第個數字佔4列,第二行的第一個數要向左移8列(因為下一行的第n個數和上一行的第n個數不在同一列,即並不對齊,而是剛好錯開一個字元的距離)

代碼如下:
#define M 10
num(i,j)
int i,j;
{
if(i==j||j==0)
return(1);
else
return(num(i-1,j-1)+num(i-1,j));
}
main()
{
int n,i,j,k;
clrscr();
printf("輸入要列印的行數n:(n<=M)");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(k=0;k<36-2*i;k++)/*因為每個數佔4列,所以下一行要少打2個空格就剛好錯開*/
printf(" ");
for(j=0;j<=i;j++)
printf("%4d",num(i,j));
printf("\n");
}
getch();
}

『伍』 c語言楊輝三角形

按總寬度5位輸出整數,不足的位數在左邊補空格。

『陸』 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;j<i;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 ",a[i][j]);}

printf(" ");
}return 0;}

(6)楊輝三角形c語言程序解析擴展閱讀:

楊輝三角概述:

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個數(n>1),跟第2n-1行第4個數、第2n-2行第6個數……這些數之和是第4n-2個斐波那契數。

10將各行數字相排列,可得11的n-1(n為行數)次方:1=11^0; 11=11^1; 121=11^2……當n>5時會不符合這一條性質,此時應把第n行的最右面的數字"1"放在個位,然後把左面的一個數字的個位對齊到十位。

以此類推,把空位用「0」補齊,然後把所有的數加起來,得到的數正好是11的n-1次方。以n=11為例,第十一行的數為:1,10,45,120,210,252,210,120,45,10,1,結果為 25937424601=1110。

『柒』 用C語言編程:楊輝三角形

#include<stdio.h>
int main()
{
int a[100][100],n,i,j,k;
printf("請輸入要列印出來的楊輝三角的高度n:");
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<i+1;j++)
{
if(j==0||j==i)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(i=0;i<n;i++)
{
k=i+1;
for(j=0;j<i+1;j++)
{
while(k<n)
{
printf(" ");
k++;
}
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
自己看看吧!~~

『捌』 c語言程序楊輝三角

#include <stdio.h>
main()
{ int i,j,n=0,a[17][17]={0};
while(n<1 || n>16)
{ printf("請輸入楊輝三角形的行數(大於0,小於17):");
scanf("%d",&n);
}
for(i=0;i<n;i++)
a[i][0]=1; /*第一列全置為一*/
for(i=1;i<n;i++)
for(j=1;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];/*每個數是上面兩數之和*/
for(i=0;i<n;i++) /*輸出楊輝三角*/
{ for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}

//夠簡單了吧?

『玖』 楊輝三角c語言編程分析

以10層為例。定義一個int數組,賦初值為0,1,0...這樣就把當前層的計算簡化為用上一層的相鄰2數相加,在輸出當前數的同時把它存入數組對應位置,為下一層計算使用。舉例代碼如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#define N 10
int main(void){
int i, j, a[N+1]={0};
printf("Yang-Hui triangle 10 layer:\n");
for(*(a+1)=i=1;i<=N;i++){//利用本層某位上一層左右2位之和求得
printf("%*c",1+((N-i)<<1),' ');//計算並移動到屏幕上合適的位置
for(j=i;j>=1;j--)
printf("%4d",*(a+j)+=*(a+j-1));//輸出當前數並存入數組,供下一層計算用
printf("\n");
}
return 0;
}

『拾』 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;j<n-i;j++)

printf(" ");

for(j=0;j<=i;j++)

printf("%6d",c(i,j));

printf(" ");

}

getch();

return 0;

}