KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他解答。杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。
KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他解答。杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。
第一行包含一个整数数n。 (1≤n≤30)
包含n行,为杨辉三角的前n行,每个数输出域宽为5。
6
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
#include <stdio.h> long int Factorial(int n, int r) { if(n == 0 || n == r) { return 1; } else { int k = (n - r); long int value1 = 1; while(n) { value1 *= (n--); } long int value2 = 1; while(r) { value2 *= (r--); } long int value3 = 1; while(k) { value3 *= (k--); } long int value = 0; value = value1 / (value2 * value3); return value; } } int main() { int n = 0; scanf("%d", &n); int r = 1; printf("%5d\n",r); while(r < n) { long int num = 0; int i = r; for(int j = 0; j <= i; j++) { num = Factorial(i, j); printf("%5ld", num); } r++; printf("\n"); } }
int main() { int n; int arr[30][30]; scanf("%d", &n); for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { if (i >= 2 && j>0 && j<i) { arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; printf("%5d", arr[i][j]); } else { arr[i][j] = 1; printf("%5d", arr[i][j]); } } printf("\n"); } return 0; }
int main() { int n = 0; scanf("%d",&n); int i = 0; int arr[30][30] = {0}; for (i = 0; i < n; i++) { int j = 0; for (j = 0; j < n; j++) { arr[i][j] = 1; } } for (i=0;i<n;i++) { int j = 0; for (j=0;j<n;j++) { if (j==0) { arr[i][j] = 1; } else if(i==j) { arr[i][j] = 1; } else { arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1]; } } } for (i = 0; i < n; i++) { int j = 0; for (j = 0; j <= i; j++) { printf("%5d",arr[i][j]); } printf("\n"); } return 0; }
#include <stdio.h> int Yangh(int n, int m) { if(n == m || m == 0) { return 1; } return Yangh(n - 1, m) + Yangh(n - 1, m - 1); } int main() { int n = 0; int i = 0; int j = 0; scanf("%d", &n); for(i = 0; i < n; i++) { for(j = 0; j <= i; j++) { printf("%5d", Yangh(i, j)); } printf("\n"); } return 0; }
#include <stdio.h> int main() { int arr[30][30] = {0}; int i = 0; int j = 0; int n = 0; scanf("%d", &n); for (i = 0; i < n; i++) { for (j = 0; j <= i; j++) { if (i == j) arr[i][j] = 1; if (j == 0) arr[i][j] = 1; if (i > 1 && j > 0) arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; } } for (i = 0; i < n; i++) { for (j = 0; j <= i; j++) { printf("%5d", arr[i][j]); } printf("\n"); } return 0; }
#include <stdio.h> int main() { int n,a[31][31]={0},b=1; scanf("%d",&n); a[1][1]=1; int row=2,col=1; while(b++<n){ for(int i=col;i<=b;i++)a[row][i]=a[row-1][i-1]+a[row-1][i]; row++; } for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++)printf("%5d",a[i][j]); printf("\n"); } return 0; }
#include <stdio.h> int main() { int n; int arr[100][100]; scanf("%d",&n); //赋值 for(int i = 0;i<n;i++) { for(int j = 0;j<=i;j++) { arr[i][j]=1; } } //用上方两位相加 for(int i = 0;i<n;i++) { for(int j = 1;j<i;j++) { arr[i][j]=arr[i-1][j]+arr[i-1][j-1]; } } //打印 for(int i = 0;i<n;i++) { for(int j = 0;j<=i;j++) { printf("%5d",arr[i][j]); } printf("\n"); } return 0; }
#include <stdio.h> int main() { int n; scanf("%d ",&n); int arr[n][n]; int i; for(i=0;i<n;i++) { int j; for(j=0;j<=i;j++) { if(j==0||j==i) { arr[i][j] = 1; } else { arr[i][j] = arr[i-1][j] + arr[i-1][j-1];//正好是一个直角三角形 } printf("%5d",arr[i][j]);//域宽为5 } printf("\n"); } return 0; }
#include <stdio.h> int main() { int arr[31][31] = {0}; int n = 0; scanf("%d",&n); arr[1][1] = arr[2][1] = arr[2][2] = 1; for(int i = 3;i<=n;i++) { for(int j = 1;j<=i-1;j++) { if(j==1) arr[i][j] = 1; else arr[i][j] = arr[i-1][j-1] + arr[i-1][j]; } arr[i][i] = 1; } for(int i = 1;i<=n;i++) { for(int j = 1;j<=i;j++) { printf("%5d",arr[i][j]); } puts(""); } return 0; }
#include<stdio.h> int main() { int num = 0, arr[30][30] = {0}; scanf("%d", &num); for (int i = 0; i < num; i++) { for (int j = 0; j < num; j++) { if (i >= j) { if (j == 0 || i == j) arr[i][j] = 1; else arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; } if (arr[i][j] != 0) printf("%5d", arr[i][j]); } printf("\n"); } return 0; }
#include <stdio.h> int C(int a, int b){ long a_f = 1, b_f = 1, b_a_f = 1; for(int i = 1; i <= a; i++) a_f *= i; for(int i = 1; i <= b; i++) b_f *= i; for(int i = 1; i <= b-a; i++) b_a_f *= i; return b_f/a_f/b_a_f; } int main(){ int n; scanf("%d", &n); for(int i = 0; i < n; i++){ for(int j = 0; j < i+1; j++){ printf("%5d", C(j, i)); } printf("\n"); } return 0; }
#include <stdio.h> int main(){ int n, i, j, arr[30][30]; scanf("%d", &n); for(i = 0; i < n; i++){ for(int j = 0; j < i + 1; j++) arr[i][j] = (j == 0 || j == i)?1 : arr[i-1][j]+arr[i-1][j-1]; } for(i = 0; i < n; i++){ for(j = 0; j < i + 1; j++) printf("%5d", arr[i][j]); printf("\n"); } return 0; }
#include<stdio.h> int main() { int n =0; int arr[30][30]={0}; scanf("%d",&n); for(int i=0 ;i<n;i++) { for(int j=0;j<=i;j++) { if(j==0||j==n-1) { arr[i][j]=1; } else { arr[i][j]=arr[i-1][j]+arr[i-1][j-1]; } } } for(int i=0 ;i<n;i++) { for(int j=0;j<=i;j++) { printf("%5d",arr[i][j]); } printf("\n"); } return 0; }
//杨辉三角特性:两条斜边都是由数字1组成,其余的数则是等于上一行左右两个数字之和 #include<stdio.h> int main() { int n = 0; scanf("%d",&n); int arr[30][30]; int i = 0; for(i = 0;i<n;i++) { int j = 0; for(j = 0;j<=i;j++) { if(j == 0 || i == j) arr[i][j] = 1; else arr[i][j] = arr[i-1][j-1]+arr[i-1][j]; } } for(i = 0;i<n;i++) { int j = 0; for(j = 0;j<=i;j++) printf("%5d",arr[i][j]); printf("\n"); } return 0; }