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;
}