C语言:输入一个正整数,输出指定行数的杨辉三角。 输入格式: 一个不大于20的正整数 输出格式: 对应输入值行数的杨辉三角。 杨辉三角中的每个值占六个字符的宽度,左对齐 如果输入超范围,则输出提示信息:input error! 并结束程序的运行。
时间: 2024-10-06 20:05:02 浏览: 36
在C语言中,你可以通过动态数组和嵌套循环来生成并输出杨辉三角。首先,我们需要定义一个二维数组来存储每个位置的数值,然后利用递归或迭代的方式来填充这个数组。这里是一个简单的示例,我们将使用迭代的方式:
```c
#include <stdio.h>
#include <string.h>
// 宽度函数,用于计算每个数字所需的空格
int width(int n) {
return (n * 6) + (n - 1);
}
// 输出杨辉三角的一行
void print_row(int row[], int size) {
for (int i = 0; i <= size; ++i) {
printf("%*d", width(i), row[i]);
if (i != size) printf(" ");
}
printf("\n");
}
// 生成并输出杨辉三角
void generate_pascal_triangle(int n) {
if (n <= 0 || n > 20) {
printf("input error!\n");
exit(1);
}
int triangle[n][n];
memset(triangle, 0, sizeof(triangle));
for (int i = 0; i < n; ++i) {
for (int j = 0; j <= i; ++j) {
// 计算当前元素的值,如果是第一列或最后一列则初始化为1
triangle[i][j] = (j == 0 || j == i) ? 1 : triangle[i - 1][j - 1] + triangle[i - 1][j];
// 输出当前行
print_row(triangle[i], i + 1);
}
}
}
int main() {
int input;
printf("请输入一个小于20的正整数: ");
scanf("%d", &input);
generate_pascal_triangle(input);
return 0;
}
```
在这个程序中,`generate_pascal_triangle`函数负责创建和打印杨辉三角,用户输入作为参数。如果输入超出范围,会显示错误消息并退出程序。
阅读全文