?? 楊輝三角.c
字號:
#include <stdio.h>
#define TRUE 1
#define FALSE 0
#define MAXSIZE 50
typedef struct
{
int element[MAXSIZE];
int front;
int rear;
}SeqQueue;
void InitQueue(SeqQueue *Q)
{
Q->front=Q->rear=0;
}
int EnterQueue(SeqQueue *Q, int x)
{
if((Q->rear+1)%MAXSIZE==Q->front)
return(FALSE);
Q->element[Q->rear]=x;
Q->rear=(Q->rear+1)%MAXSIZE; /* 重新設置隊尾指針 */
return(TRUE);
}
int DeleteQueue(SeqQueue *Q, int *x)
{
if(Q->front==Q->rear) /*隊列為空*/
return(FALSE);
*x=Q->element[Q->front];
Q->front=(Q->front+1)%MAXSIZE; /*重新設置隊頭指針*/
return(TRUE);
}
int GetHead(SeqQueue *Q, int *x)
{
if(Q->front==Q->rear) /*隊列為空*/
return(FALSE);
*x=Q->element[Q->front];
return(TRUE);
}
void YangHuiTriangle( )
{
int n;
int i;
int temp;
int x;
int N;
SeqQueue Q;
InitQueue(&Q);
EnterQueue(&Q,1); /* 第一行元素入隊*/
printf("請輸入要打印的行數 N:");
scanf("%d",&N);
for(n=2;n<=N;n++) /* 產生第n行元素并入隊,同時打印第n-1行的元素*/
{
EnterQueue(&Q,1); /* 第n行的第一個元素入隊*/
for(i=1;i<=n-2;i++) /* 利用隊中第n-1行元素產生第n行的中間n-2個元素并入隊*/
{
DeleteQueue(&Q,&temp);
printf("%6d",temp); /* 打印第n-1行的元素*/
GetHead(&Q,&x);
temp=temp+x; /*利用隊中第n-1行元素產生第n行元素*/
EnterQueue(&Q,temp);
}
DeleteQueue (&Q,&x);
printf("%6d",x); /* 打印第n-1行的最后一個元素*/
EnterQueue(&Q,1); /* 第n行的最后一個元素入隊*/
printf("\n");
}
}
void main()
{
YangHuiTriangle( );
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -