利用数学原理用C语言队列打印杨辉三角
时间: 2024-05-03 15:17:23 浏览: 134
C语言利用队列打印杨辉三角
杨辉三角是一个由数字组成的三角形,第一行只有一个数字1,接下来每一行的数字都是左上方和右上方的数字之和。下面是一个6行的杨辉三角:
```
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
```
我们可以使用队列来实现杨辉三角的打印,具体步骤如下:
1. 定义一个队列,用来存储每一行的数字。
2. 将第一行的数字1入队。
3. 从第二行开始,每次弹出队列中的数字,计算下一行的数字,并将它们入队。
4. 将每一行的数字打印出来。
下面是实现杨辉三角的C语言代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
int queue[MAX_SIZE];
int front = -1, rear = -1;
void enqueue(int data) {
if (rear == MAX_SIZE - 1) {
printf("Queue is full.\n");
return;
}
if (front == -1) {
front = 0;
}
rear++;
queue[rear] = data;
}
int dequeue() {
if (front == -1 || front > rear) {
printf("Queue is empty.\n");
return -1;
}
int data = queue[front];
front++;
return data;
}
int main() {
int n, i, j, prev = 0;
printf("Enter the number of rows: ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
// 计算第i行的数字
for (j = 0; j <= i; j++) {
int curr = dequeue();
if (j == 0) {
enqueue(1);
} else {
enqueue(prev + curr);
}
prev = curr;
printf("%d ", curr);
}
// 将最后一个1入队
enqueue(1);
printf("\n");
}
return 0;
}
```
需要注意的是,我们在计算下一行的数字时,需要用到上一行的数字,因此需要用一个变量prev来保存上一行的数字。在计算完每一行的数字后,我们将最后一个1入队,以便计算下一行的数字。
阅读全文