怎么打印出等腰三角形形状的杨辉三角
时间: 2024-10-28 15:08:30 浏览: 18
要打印出等腰三角形形状的杨辉三角,我们通常只需要显示从上到下逐渐减少的行数,因为杨辉三角的结构本身就是倒置的等腰三角形。在C语言中,可以稍微修改上面提供的程序,仅打印指定行数的杨辉三角。假设用户输入`n`表示三角形的高度,以下是简化版的代码:
```c
#include <stdio.h>
#include <limits.h> // 引入ULLONG_MAX以便防止溢出
// 计算组合值,避免整型溢出
long long binomial_coefficient(int n, int k) {
long long fact_n = 1, fact_k = 1, fact_n_minus_k = 1;
for (int i = n; i > k; i--) {
fact_n *= i;
}
for (int i = 1; i <= k; i++) {
fact_k *= i;
}
for (int i = 1; i <= n - k; i++) {
fact_n_minus_k *= i;
}
return fact_n / (fact_k * fact_n_minus_k);
}
void print_pascal_triangle(int n) {
for (int i = 0; i <= n; i++) { // 从0开始,因为我们是从顶部开始绘制
for (int j = 0; j <= i; j++) { // 从左到右,直到当前行的最右边
printf("%lld ", binomial_coefficient(i, j)); // 显示数字,这里使用long long以避免溢出
}
printf("\n"); // 换行
}
}
int main() {
int n;
printf("请输入等腰三角形的行数(1 <= n <= %zu): ", ULLONG_MAX / (2 * 10)); // 设置合理的上限以防溢出
scanf("%d", &n);
// 检查输入是否合法
if (n < 1 || n > ULLONG_MAX / (2 * 10)) {
printf("输入的行数过大,超出范围。\n");
return 1;
}
print_pascal_triangle(n);
return 0;
}
```
运行此程序时,输入行数`n`,它将只打印出高度为`n`的等腰杨辉三角。如果输入超过一定的限制,程序会给出错误信息。
阅读全文