用C语言完成一个用队列相关基本操作实现输出杨辉三角的程序
时间: 2024-05-14 19:16:46 浏览: 83
好的,下面是用C语言编写的输出杨辉三角的程序:
```c
#include <stdio.h>
#define MAXSIZE 10
int main()
{
int triangle[MAXSIZE][MAXSIZE] = {0};
int i, j, n;
printf("请输入您想输出的行数:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
triangle[i][0] = 1; // 除每行第一个数为1外,其余都为0
for (j = 1; j <= i; j++) {
triangle[i][j] = triangle[i-1][j] + triangle[i-1][j-1]; // 计算杨辉三角每个数的值
}
}
printf("输出的杨辉三角如下:\n");
for (i = 0; i < n; i++) {
for (j = 0; j <= i; j++) {
printf("%-2d ", triangle[i][j]); // 格式化输出杨辉三角
}
printf("\n");
}
return 0;
}
```
以上就是用C语言实现输出杨辉三角的程序,您可以将要输出的行数输入进去,程序会自动输出相应的杨辉三角。
相关问题
C语言队列操作实现输出杨辉三角的程序
好的,让我来为您解答。下面是一个基于队列实现输出杨辉三角的 C 语言程序:
```c
#include<stdio.h>
#include<stdlib.h>
// 定义队列结构体
typedef struct {
int *data;
int front, rear;
} Queue;
// 初始化队列
void initQueue(Queue *q, int size) {
q->data = (int *)malloc(sizeof(int) * size);
q->front = q->rear = 0;
}
// 入队操作
int enQueue(Queue *q, int e) {
q->data[q->rear++] = e;
return 1;
}
// 出队操作
int deQueue(Queue *q, int *e) {
if (q->front == q->rear) return 0;
*e = q->data[q->front++];
return 1;
}
// 输出杨辉三角
void printTriangle(int n) {
Queue q1, q2;
int i, j, a, b;
// 初始化两个队列
initQueue(&q1, n);
initQueue(&q2, n);
// 第一行
enQueue(&q1, 1);
for (i = 1; i <= n; i++) {
// 输出当前行
for (j = 0; j < n - i; j++)
printf(" ");
while (deQueue(&q1, &a)) {
printf("%3d", a);
// 计算下一行元素值
if (deQueue(&q1, &b)) {
enQueue(&q2, a + b);
enQueue(&q1, b);
}
}
printf("\n");
// 将第二行元素移动到第一行
while (deQueue(&q2, &a)) enQueue(&q1, a);
// 在队列尾部添加 0 表示下一次计算已结束
enQueue(&q1, 0);
}
// 释放队列内存
free(q1.data);
free(q2.data);
}
int main() {
int n;
printf("请输入杨辉三角行数:");
scanf("%d", &n);
printTriangle(n);
return 0;
}
```
该程序使用两个队列,依次存储杨辉三角每一行的元素值。输出一行后,将第二个队列中的元素移动到第一个队列中,然后在第一个队列尾部添加一个 0,表示下一行的计算已结束。程序最终输出一个 n 行的杨辉三角。
用c语言完成:利用队列的基本操作,打印杨辉三角形
好的,以下是用C语言实现打印杨辉三角形的代码:
```c
#include <stdio.h>
int main() {
int n, i, j, c;
int a[100][100]; // 定义二维数组存储杨辉三角形
printf("请输入行数:");
scanf("%d", &n); // 输入行数
// 初始化第一列和对角线上的值为1
for (i = 0; i < n; i++) {
a[i][0] = 1;
a[i][i] = 1;
}
// 计算其它位置的值
for (i = 2; i < n; i++) {
for (j = 1; j < i; j++) {
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
}
// 打印杨辉三角形
for (i = 0; i < n; i++) {
// 控制输出的空格数
for (c = n - i - 1; c > 0; c--) {
printf(" ");
}
// 输出数字
for (j = 0; j <= i; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
```
希望对你有帮助!
阅读全文