作业帮 > 综合 > 作业

怎么样用C++输出这样一个杨辉三角形 如图这样输出 要用上数组知识

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/08/06 17:02:07
怎么样用C++输出这样一个杨辉三角形 如图这样输出 要用上数组知识
1 1 1 1 1 1 1
1 2 3 4 5 6
1 3 6 10 15
1 4 10 20
1 5 15
1 6
1
怎么样用C++输出这样一个杨辉三角形 如图这样输出 要用上数组知识
#include
#include
#include
int main(void)
{
int n = 0;
int **a;
int i, j, k;
printf("Input n:");
scanf("%d", &n);
a = (int **)malloc(sizeof(int *)*n);
for (i = 0; i < n; ++i)
{
a[i] = (int *)malloc(sizeof(int)*n);
}
for (i = 0; i < n; ++i)
{
for (j = i; j < n; ++j)
{
if (i==0)
a[i][j]=1;
else
a[i][j] = a[i][j-1] + a[i-1][j-1];
}
}
for (i = 0; i < n; ++i)
{
for (j = 0; j < n; ++j)
{
if (a[i][j] == 0)
printf(" ");
else
printf("%4d", a[i][j]);
}
printf("\n");
}
return 0;
}
再问: 看看你的程序的结果 是一些随机数 还有#include #include #include 这三个头文件 我都没学呢 请用一些简单的方法做吧 只用数组和循环能做这个吗?
再答: #include #include #include int main(void) { int n = 0; int **a; int i, j, k; printf("Input n:"); scanf("%d", &n); a = (int **)malloc(sizeof(int *)*n); for (i = 0; i < n; ++i) { a[i] = (int *)malloc(sizeof(int)*n); memset(a[i], 0, sizeof(int)*n); } for (i = 0; i < n; ++i) { for (j = i; j < n; ++j) { if (i==0) a[i][j]=1; else a[i][j] = a[i][j-1] + a[i-1][j-1]; } } for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) { if (a[i][j] == 0) printf(" "); else printf("%4d", a[i][j]); } printf("\n"); } free(a); return 0; } 你应该是window下的编译器 我再linux下 是不一样的!这个就应该可以了!
再问: 程序能实现了 但是有一点还是不明白:为什么要声明一个**a ;a的指针的指针,声明*a不行吗? 这个我看不懂啊 麻烦大哥(大姐)再帮帮小弟吧^_^
再答: 因为 是一个二维数组啊! 用的就是二级指针了!