用c语言,打印出杨辉三角形的前n行,n由键盘输入
时间: 2024-03-07 10:49:20 浏览: 26
好的,我知道了。下面是代码实现:
```c
#include <stdio.h>
int main() {
int n, i, j;
printf("请输入要打印杨辉三角形的行数:");
scanf("%d", &n);
int a[n][n];
for (i = 0; i < n; i++) {
for (j = 0; j <= i; j++) {
if (j == 0 || j == i) {
a[i][j] = 1;
} else {
a[i][j] = a[i-1][j-1] + a[i-1][j];
}
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
```
这段代码中,我们使用了二维数组来存储杨辉三角形的每一个数,然后使用两个循环来打印出每一行的数。如果当前列数是第一列或者最后一列,那么该位置的值就是1;否则,该位置的值就是上一行当前列和上一行前一列的和。最后,我们将该值打印出来,并且换行。
相关问题
c语言设计一个程序,键盘输入一个小于20的整数作为行数,输出字母组成的杨辉三角形
好的,以下是一个C语言程序,可以实现您的要求:
```c
#include <stdio.h>
int main() {
int rows, coef = 1, space, i, j;
printf("请输入杨辉三角形的行数:");
scanf("%d", &rows);
for (i = 0; i < rows; i++) {
for (space = 1; space <= rows - i; space++) {
printf(" "); // 打印空格
}
for (j = 0; j <= i; j++) {
if (j == 0 || i == 0) {
coef = 1;
} else {
coef = coef * (i - j + 1) / j;
}
printf("%4d", coef); // 打印数值,占4个字符的宽度
}
printf("\n"); // 换行
}
return 0;
}
```
程序中,我们先通过 `scanf` 函数从键盘读入一个小于20的整数作为行数,然后使用两层循环打印出杨辉三角形。在循环中,我们使用一个变量 `coef` 来计算组合数,并打印出数值,通过控制空格数量和数值宽度来美化输出结果。
由c语言编程打印具有如下形式的杨辉三角形(它的特点是左右两边全是工,从第二行起,中间的每一个数是上一行里相 邻两个数之和》,其中输出数据的行数口从键盘输入,并且n=108
好的,以下是C语言代码实现:
```c
#include <stdio.h>
int main() {
int n, i, j, k;
printf("请输入行数:");
scanf("%d", &n);
int a[n][n]; // 二维数组存储杨辉三角形
// 初始化
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
a[i][j] = 0;
}
}
// 赋值
a[0][n/2] = 1; // 第一行只有中间一个数是1
for (i = 1; i < n; i++) {
for (j = 1; j < n-1; j++) {
a[i][j] = a[i-1][j-1] + a[i-1][j+1]; // 根据公式计算
}
}
// 输出
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (a[i][j] != 0) { // 只输出不为0的数
printf("%d ", a[i][j]);
}
}
printf("\n");
}
return 0;
}
```
这个杨辉三角形是以中间列为基准,所以我把第一行的1放在了中间列。输出结果如下:
```
请输入行数:10
1
1 1 1
1 2 2 2 1
1 3 4 4 4 3 1
1 4 7 8 8 7 4 1
1 5 11 15 16 15 11 5 1
1 6 16 26 31 31 26 16 6 1
1 7 22 42 57 63 57 42 22 7 1
1 8 29 64 99 120 120 99 64 29 8 1
```