编程实现:输出一下的杨辉三角(要求输出10行)
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ……
void func(int n=10) { //编程实现:输出一下的杨辉三角(要求输出10行) int* s = (int*)malloc(sizeof(int)*n); int* s2 = (int*)malloc(sizeof(int) * n); int* p = s2, * q = s, * temp; memset(s, 0, sizeof(int) * (n + 1)); memset(s2, 0, sizeof(int) * (n + 1)); p[0] = 1; // 初始化第一行 for (int i = 0; i < n; i++) { q[0] = 1;// 每行的首元素为 1 q[i] = 1;// 每行的首元素为 1 for (int j = 1; j < i; j++) { q[j] = p[j - 1] + p[j];// 杨辉三角递推公式 } // 输出当前行 for (int k = 0; q[k] != 0; k++) { printf("%d ", q[k]); } printf("\n"); // 交换指针,p 指向当前行,q 指向下一行 temp = p; p = q; q = temp; // 清空下一行的数组 memset(q, 0, sizeof(int) * (n + 1)); } // 释放动态分配的内存 free(s); free(s2); return ; }
1
#include<stdio.h>
int main() { int f[10][10],i,j; for(i=0;i<10;i++) { f[i][0]=1; f[i][i]=1; } for(i=2;i<10;i++) for(j=1;j<i;j++) { f[i][j]=f[i-1][j-1]+f[i-1][j]; } for(i=0;i<10;i++) { for(j=0;j<=i;j++) printf("%5d",f[i][j]); printf("\n"); } }
#include<stdio.h> #define N void yf(int n){ int a[n][n]; for(int i=0;i<n;i++){ for(int j=0;j<=i;j++){ if(j==0 ||j ==i){ a[i][j] =1; }else{ a[i][j] = a[i-1][j]+a[i-1][j-1]; } }} for(int i=0;i<n;i++){ for(int j=0;j<=i;j++){ printf("%d ",a[i][j]); } printf("\n"); } } int main(){ int n; scanf("%d",&n); yf(n); return 0; }
。
#include <stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> int main(void) { //规律:第0列和对角线上的数据全部为1,其余位置上的数据为上一行正对数据与上一行正对前一个数据之和。 int num[10][10]; for (int i = 0; i < 10; i++) {//行 for (int j= 0;j<=i; j++) {//列 // 对角线和第0列上全部为1 if (i == j || 0 == j) { num[i][j] = 1; } else { num[i][j] =num[i - 1][j] +num[i - 1][j - 1]; } } } // 打印杨慧三角的前10行 for (int i = 0; i < 10; ++i) { for (int j = 0; j <= i; ++j) { printf("%d ", num[i][j]); }
printf("\n"); }
return 0; }
【答案解析】
仔细观察杨慧三...
用户登录可进行刷题及查看答案
仔细观察杨慧三角可以看到:
第0列和对角线上的数据全部为1,其余位置上的数据为上一行正对数据与上一行正对前一个数据之和。
比如:a[4][2] = a[3][2] + a[3][1]
#include<stdio.h> int main() { int array[10][10]; for (int i = 0; i < 10; ++i) { for (int j = 0; j <= i; ++j) { // 对角线和第0列上全部为1 if (i == j || 0 == j) array[i][j] = 1; else array[i][j] = array[i - 1][j] + array[i - 1][j - 1]; } } // 打印杨慧三角的前10行 for (int i = 0; i < 10; ++i) { for (int j = 0; j <= i; ++j) { printf("%5d", array[i][j]); } printf("\n"); } return 0; }
登录后提交答案