C语言输入一个整数n,打印n行杨辉三角形。
时间: 2023-10-01 07:04:53 浏览: 141
好的,这是一个经典的编程题。下面是使用C语言编写的打印n行杨辉三角形的代码:
```
#include <stdio.h>
// 计算杨辉三角中第i行第j列的数值
int calc(int i, int j)
{
if (j == 1 || j == i) {
return 1;
} else {
return calc(i-1, j-1) + calc(i-1, j);
}
}
int main()
{
int n;
printf("请输入要打印的杨辉三角的行数:\n");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
printf("%d ", calc(i, j));
}
printf("\n");
}
return 0;
}
```
需要注意的是,在本程序中使用了递归算法来计算杨辉三角中的数值,可能对于非常大的行数会导致性能问题。因此,如果需要处理大型杨辉三角,建议使用非递归算法,可以参考其他相关资料进行优化。
相关问题
用c语言解决问题:输入一个小于20的整数n,要求输出n行的杨辉三角形。
以下是使用C语言实现的代码:
```c
#include <stdio.h>
int main() {
int n, i, j, k, triangle[20][20];
printf("请输入小于20的整数n:");
scanf("%d", &n);
// 初始化杨辉三角形第一列和对角线为1
for (i = 0; i < n; i++) {
triangle[i][0] = 1;
triangle[i][i] = 1;
}
// 计算其他位置的值
for (i = 2; i < n; i++) {
for (j = 1; j < i; j++) {
triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j];
}
}
// 输出杨辉三角形
for (i = 0; i < n; i++) {
// 输出每行的数字
for (k = 0; k < n-i; k++) {
printf(" ");
}
for (j = 0; j <= i; j++) {
printf("%d ", triangle[i][j]);
}
printf("\n");
}
return 0;
}
```
运行结果:
```
请输入小于20的整数n:7
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
```
用c语言编写根据输入的正整数,输出行数为n的杨辉三角形。
以下是用C语言编写输出行数为n的杨辉三角形的代码:
```c
#include <stdio.h>
// 定义组合数函数
int combination(int n, int k) {
int res = 1;
for (int i = 1; i <= k; i++) {
res *= (n - i + 1);
res /= i;
}
return res;
}
int main() {
int n;
printf("请输入杨辉三角形的行数:");
scanf("%d", &n);
// 打印杨辉三角形
for (int i = 0; i < n; i++) {
// 打印空格
for (int j = 0; j < n - i; j++) {
printf(" ");
}
// 打印数字
for (int j = 0; j <= i; j++) {
printf("%-3d ", combination(i, j));
}
printf("\n");
}
return 0;
}
```
运行程序后,输入想要打印的杨辉三角形的行数,即可输出相应的杨辉三角形。