Ⅰ 怎樣用一維數組寫出c語言,輸出楊輝三角的的前8行

#include
<stdio.h>
void
main()
{
int
yh[17][17]
=
{0};
int
i,j;
for
(
i
=
1;
i
<=
16;
i++)
{
for
(
j
=
1;j
<=
16;
j++)
{
yh[i][10
-
i
+
1]
=
yh[i][10
+
i
-
1]
=
1;
if(i
>
1)
{
yh[i][j]
=
yh[i
-
1][j
-
1]
+
yh[i
-
1][j
+
1];
}
}
}
for
(
i
=
1;
i
<=
8;
i++)
{
for
(
j
=
1;j
<=
17;
j++)
{
if(yh[i][j]
!=
0)
{
printf("%3d",yh[i][j]);
}
else
printf("
");
}
printf("\n");
}
}
這是本人自己寫的代碼,應該符合樓主的要求
不好意思沒看清是一維數組,不好意思哈,不過網路有一些楊輝三角的C語言介紹,樓主可以參考一下

Ⅱ 詳解C語言用數組表示楊輝三角........

楊輝三角形的六種解法
楊輝三角形是形如
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
的三角形,其實質是二項式(a+b)的n次方展開後各項的系數排成的三角形,它的特點是左右兩邊全是1,從第二行起,中間的每一個數是上一行里相鄰兩個數之和。這個題目常用於程序設計的練習。
下面給出六種不同的解法。
解法一
#include <stdio.h>
main()
{ int i,j,n=0,a[17][17]={0};
while(n<1 || n>16)
{ printf("請輸入楊輝三角形的行數:");
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");
}
}
點評:解法一是一般最容易想到的解法,各部分功能獨立,程序淺顯易懂。
解法二
#include <stdio.h>
main()
{ int i,j,n=0,a[17][17]={1};
while(n<1 || n>16)
{ printf("請輸入楊輝三角形的行數:");
scanf("%d",&n);
}
for(i=1;i<n;i++)
{ a[i][0]=1; /*第一列全置為一*/
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");
}
}
點評:解窢二是在解法一的基礎上,把第一列置為1的命令移到下面的雙重循環中,減少了一個循環。注意初始化數組的變化。
解法三
#include <stdio.h>
main()
{ int i,j,n=0,a[17][17]={0,1};
while(n<1 || n>16)
{ printf("請輸入楊輝三角形的行數:");
scanf("%d",&n);
}
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=1;i<=n;i++) /*輸出楊輝三角*/
{ for(j=1;j<=i;j++) printf("%5d",a[i][j]);
printf("\n");
}
}
點評:解法三是在解法一、二的基礎上,把第一列置為1的命令去掉了,注意初始化數組的變化。
解法四
#include <stdio.h>
main()
{ int i,j,n=0,a[17][17]={0,1};
while(n<1 || n>16)
{ printf("請輸入楊輝三角形的行數:");
scanf("%d",&n);
}
for(i=1;i<=n;i++)
{ for(j=1;j<=i;j++)
{ a[i][j]=a[i-1][j-1]+a[i-1][j]; /*每個數是上面兩數之和*/
printf("%5d",a[i][j]); /*輸出楊輝三角*/
}
printf("\n");
}
}
點評:解法四是在解法三的基礎上,把計算和列印合並在一個雙重循環中。
解法五
#include <stdio.h>
main()
{ int i,j,n=0,a[17]={1},b[17];
while(n<1 || n>16)
{ printf("請輸入楊輝三角形的行數:");
scanf("%d",&n);
}
for(i=0;i<n;i++)
{ b[0]=a[0];
for(j=1;j<=i;j++)
b[j]=a[j-1]+a[j]; /*每個數是上面兩數之和*/
for(j=0;j<=i;j++) /*輸出楊輝三角*/
{ a[j]=b[j]; /*把算得的新行賦給a,用於列印和下一次計算*/
printf("%5d",a[j]);
}
printf("\n");
}
}
點評:解法一到解法四都用了二維數組,佔用的空間較多。而解法五隻使用了兩個一維數組。
解法六
#include <stdio.h>
main()
{ int i,j,n=0,a[17]={0,1},l,r;
while(n<1 || n>16)
{ printf("請輸入楊輝三角形的行數:");
scanf("%d",&n);
}
for(i=1;i<=n;i++)
{ l=0;
for(j=1;j<=i;j++)
{ r=a[j];
a[j]=l+r; /*每個數是上面兩數之和*/
l=r;
printf("%5d",a[j]); /*輸出楊輝三角*/
}
printf("\n");
}
}
點評:解法六隻使用了一個一維數組和兩個臨時變數。

Ⅲ 用C語言數組,編寫楊輝三角

#include<stdio.h>
int main()
{
int a[10][10],i,j;
for(i=0; i<10; i++)
{
for(j=10; j>=i; j--)
printf("%2c",' ');
for(j=0; j<=i; j++)
{
if(i==j||j==0)
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%3d ",a[i][j]);
if(i==j)
printf("\n");
}
}
return 0;
}

Ⅳ C語言利用一維數組編寫楊輝三角

#include <stdio.h>
#define N 10 /* 要列印的層數 */
int main(void)
{
int arr[N]; /* 用於保存生成的楊輝三角的每一行的值 */
int i, j;
arr[0] = 1; /* 楊輝三角的第一層 */

/* 先把第一層列印出來 */
printf("%5d\n", arr[0]);
arr[1] = arr [0] = 1;//這樣寫是為了表明演算法。
printf("%5d%5d\n", arr[0], arr[1]);
/* 不斷地求楊輝三角的每一層 */
for (i = 2; i < N; i++) /* i代表當前層用到的arr的最大下標 */
{
arr[i] = arr[i-1]; /* 把最外邊的1外移一位 */
for(j = i-1; j>0; j--)//每一行的a[0],始終為1,不用計算。
/* 用楊輝三角的性質求出層里裡面的每一個數 */
{
/* 楊輝三角的性質就是這句 */
arr[j] = arr[j - 1] + arr[j];
}
/* 求出一行後,馬上列印出此行 */
for (j = 0; j <= i; j++)
{
printf("%5d",arr[j]);
}
printf("\n");
}
return 0;
}

Ⅳ C語言編寫 用數組輸出楊輝三角十行

//C語言經典100例中的原題,給你,希望對你有幫助!
#include "stdio.h"
#include "conio.h"
main()
{
int i,j;
int a[10][10];
printf("\n");
for(i=0;i<10;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<10;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
getch();
}

Ⅵ C語言編寫 用數組輸出楊輝三角六行

#include "stdio.h"
#include "conio.h"

void main()
{ int n,i,j,k,a[20][20];
printf("please enter a n :\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{a[i][1]=1;a[i][i]=1;}
for(i=3;i<=n;i++)
for(j=2;j<i;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=1;i<=n;i++)
{ printf("\n");
for(j=1;j<=i;j++)
printf("%d ",a[i][j]);}

}

這個你輸入6就出現你要的結果
你還可以輸入其餘數字 你輸入幾 就出現幾行 最大為20行

Ⅶ c語言一維數組實現楊輝三角

#define N 135
main()
{
int a[N];
float i,j,k;
for(i=0;i<N;i++)
a[i]=0;
a[0]=1;
for(i=3,j=2;j<=N;i++)
{
a[j]=1;
a[j-1]=1;
j=j+i;
}
for(i=3,j=2;i<N;i++)
{
if(a[i]!=1)
{
a[i]=a[i-j]+a[i-j-1];
}
else
j+=0.5;
}
printf("\n\n");
for(i=0,j=2,k=2;i<N;i++)
{
if(i==k)
{
printf("\n");
j++;
k=k+j;
}
printf("%4d ",a[i]);
}
}

Ⅷ C語言,用數組輸入楊輝三角

第一個問,是為了不讓數組超界。
第二個問,同樣,賦值這樣是為了使得第一排的第一個數為1,這是楊慧三角的定義,頂角必須為1,否則後面的數字算不出來。其他的位置的值都是通過第一排的中間那個1(也就是a[0][10])算出來的,楊慧三角第n層的值和第n-1層有關。
第三個問,因為你中間計算的時候為了成圖中的三角形,所以兩個數中間隔了一個數,而這個數的值沒有被賦值,因為這個位置不是楊輝三角的部分,所以就是你先前給他的那個0,因此當為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語言編程,數組解決

樓主你好!!!

問題在於第二個for()循環,for(j=0;j<=9;j++),表示每行都要輸出10個數,但是1-9行,都沒10個數,所以後面的會是隨機數!!!

應該為;for(j=0;j<=i;j++);