1 #include <iostream> 2 #include <iomanip> 3 using namespace std; 4 #define N 100 5 6 int main() 7 { 8 int a[N][N] = {0}; 9 int i, j, n = 6; 10 cin>>n; 11 12 for(i=1;i<=n;i++){ 13 a[i][1] = a[i][i] = 1; /*1.第一列和对角线的数都是1*/ 14 } 15 16 for(i=3;i<=n;i++) 17 { 18 for(j=2;j<=i-1;j++){ 19 a[i][j]=a[i-1][j-1]+a[i-1][j]; /*2.除两边的数, 等于左上/上两数之和*/ 20 } 21 } 22 23 for(i=1;i<=n;i++) 24 { 25 cout<<setw((n-i)*3)<<' '; 26 27 for(j=1;j<=i;j++) 28 { 29 cout<<setw(6)<<a[i][j]; 30 } 31 32 cout<<endl; 33 } 34 35 return 0; 36 }
c代码:
1 #include<stdio.h> 2 #define N 100 3 int main() 4 { 5 int a[N][N] = {0}; 6 int i, j, k, n = 6; 7 //scanf("%d",&n); 8 9 for(i=1;i<=n;i++){ 10 a[i][1] = a[i][i] = 1; /*1.第一列和对角线的数都是1*/ 11 } 12 13 for(i=3;i<=n;i++) 14 { 15 for(j=2;j<=i-1;j++){ 16 a[i][j]=a[i-1][j-1]+a[i-1][j];/*2.除两边的数外, 都等于左上/上两数之和*/ 17 } 18 } 19 20 for(i=1;i<=n;i++) 21 { 22 /*for(k=1;k<=n-i;k++){//输出空格美观, 缺点是数与上面的数是同列的关系不清 23 printf(" "); 24 }*/ 25 26 for(j=1;j<=i;j++){ /*j<=i的原因是不输出其它的数,只输出我们想要的数*/ 27 printf("%-6d",a[i][j]); 28 } 29 printf(" "); /*当一行输出完以后换行继续下一行的输出*/ 30 } 31 32 return 0; 33 }