用C语言实现杨辉三角
时间: 2024-01-21 07:13:35 浏览: 84
以下是使用C语言实现杨辉三角的代码,其中使用了二维数组:
```c
#include <stdio.h>
int main() {
int rows, coef = 1;
printf("请输入行数:");
scanf("%d", &rows);
for (int i = 0; i < rows; i++) {
for (int space = 1; space <= rows - i; space++) {
printf(" ");
}
for (int j = 0; j <= i; j++) {
if (j == 0 || i == 0) {
coef = 1;
} else {
coef = coef * (i - j + 1) / j;
}
printf("%4d", coef);
}
printf("\n");
}
return 0;
}
```
相关问题
如何用C语言实现杨辉三角的打印?
在C语言中,杨辉三角是一个经典的组合数学问题,可以通过动态规划的方式实现。以下是简单的步骤:
1. 定义一个二维数组`triangle`来存储杨辉三角的每个元素。
2. 初始化数组,第一行和第一列只包含一个1。
3. 使用循环结构填充数组,对于每一行,从左到右和从右到左,前一个数加当前行的第一个数等于当前的数。
下面是一个基本的C代码示例:
```c
#include <stdio.h>
#define ROWS 10 // 设置杨辉三角的最大行数
// 打印杨辉三角
void printPascalTriangle(int triangle[][ROWS]) {
for (int i = 0; i <= ROWS; ++i) { // 遍历每一行
for (int j = 0; j <= i; ++j) { // 在每一行上遍历每个元素
printf("%d ", triangle[i][j]); // 输出元素值
}
printf("\n"); // 换行
}
}
int main() {
int triangle[ROWS][ROWS]; // 初始化一个二维数组
triangle[0][0] = 1;
// 填充三角形
for (int i = 1; i < ROWS; ++i) {
for (int j = 0; j < i; ++j) {
triangle[i][j] = triangle[i - 1][j] + triangle[i - 1][j + 1];
}
triangle[i][i] = 1;
}
// 打印三角形
printPascalTriangle(triangle);
return 0;
}
```
用C语言实现杨辉三角(用队列打印)
在C语言中,杨辉三角是一种经典的组合数学问题,通常用于展示二项式系数。使用队列数据结构来打印杨辉三角可以简化程序结构,因为队列的特点是先进先出(FIFO),适合逐行添加元素并按顺序输出。
下面是一个简单的C语言函数,它使用队列来存储杨辉三角的每一行,并逐行打印:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct {
int front;
int rear;
int array[100];
} Queue;
void init_queue(Queue *q) {
q->front = -1;
q->rear = -1;
}
bool is_empty(Queue *q) {
return (q->front == -1);
}
void enqueue(Queue *q, int value) {
if ((q->rear + 1) % 100 == 0) {
printf("Queue overflow! Increasing size.\n");
q->array = realloc(q->array, sizeof(int) * 2 * q->rear + 1);
}
q->array[++q->rear] = value;
}
int dequeue(Queue *q) {
if (is_empty(q)) {
printf("Queue underflow!\n");
return -1;
} else {
return q->array[q->front++];
}
}
void print_pascal_triangle(int n, Queue *triangle_q) {
for (int i = 0; i <= n; ++i) {
for (int j = 0; j <= i; ++j) {
enqueue(triangle_q, triangle_q->array[i-j] ? triangle_q->array[i-j] : 1);
}
while (!is_empty(triangle_q)) {
printf("%d ", dequeue(triangle_q));
}
printf("\n");
}
}
int main() {
Queue triangle;
init_queue(&triangle);
// 调用print_pascal_triangle函数生成并打印杨辉三角
print_pascal_triangle(5, &triangle);
return 0;
}
```
这个程序首先初始化一个队列,并在`print_pascal_triangle`函数中计算每个位置的值然后添加到队列中。当一行结束时,它会从队列中取出并打印所有的元素。注意,这里我们假设队列的大小足够大,如果需要动态调整大小,已包含相应的错误处理。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)