本文目錄一覽:
用c語言打印楊輝三角 非數組,我只求過程,不求答案
不知道我這樣解釋能不能說清楚:
可以看看楊輝三角的定義,百科裡介紹了一個楊輝三角的第六個性質,具體是:
6、第n行的第1個數為1,第二個數為1×(n-1),第三個數為1×(n-1)×(n-2)/2,第四個數為1×(n-1)×(n-2)/2×(n-3)/3…依此類推。
而程序中的i是表示第i行,那麼上面的性質6里的n就是程序中的i,而k是保存了1×(n-1)×(n-2)/2×(n-3)/3…的值,其中(n-1)、(n-2)、(n-3)…中的1,2,3…是j的值。
比方說,一開始k=1,執行了一次內循環後,k=k*(i-j)/j 就是k=1×(n-1)/1;那麼第二次循環執行k=k*(i-j)/j,就等於執行了1×(n-1)×(n-2)/2……依次類推,應該能明白了吧!
用c語言輸出楊輝三角
C語言實現輸出n層楊輝三角,注意n34時會導致長整型溢出,參考代碼如下:
#includestdio.h
int main()
{
int i,j,n;
long a[34]={1};
scanf(“%d”,n);
if(n34)return 1;
for(i=0;in;i++){
for(j=i;j0;j–)
a[j]=a[j]+a[j-1];
for(j=0;j=i;j++)
printf(“%ld “,a[j]);
printf(“\n”);
}
return 0;
}
c語言編程打印楊輝數字金字塔不用數組
#includestdio.h
#define N 10
void main()
{
unsigned int i,j,k;
unsigned int b,c;
for(i=0;iN;i++)
{
for(j=N;ji;j–)
printf(” “);
for(j=0;j=i;j++)
{
b=c=1;
if(j=1)
{
for(k=i-j+1;k=i;k++)
b*=k;
for(k=1;k=j;k++)
c*=k;
}
printf(“%4d”,b/c);
}
printf(“\n”);
}
}
在打印楊輝三角時通常用到楊輝三角的兩個性質。
第一個就是楊輝三角中除了最外層的數為1外,其餘的數都是它肩上兩個數之和。用數組輸出楊輝三角就用這個性質。
第二個性質是楊輝三角的第n行恰好是C(n,0)~C(n,n)。這裡的C表示組合。不用數組輸出楊輝三角就用這個性質。
哪裡不明白可以Hi我。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/185266.html