c語言列印正三角形(c語言列印符號三角形)
2023-05-09 15:54:09 2
題目要求:
規定這樣一種形狀的三角形,如圖7-36所示為一個符號三角形:
#include "stdio.h"typedef struct QNode{ /*定義隊列結點類*/ char data; struct QNode *next;} QNode , *QueuePtr;typedef struct{ /*定義一個鏈隊列*/ QueuePtr front; /*隊頭指針*/ QueuePtr rear; /*隊尾指針*/}LinkQueue;initQueue(LinkQueue *q){ /*初始化一個空隊列*/ q->front = q->rear = (QueuePtr)malloc(sizeof(QNode)); /*創建一個頭結點,隊頭隊尾指針指向該結點*/ if( !q->front) exit(0); /*創建頭結點失敗*/ q->front->next = NULL; /*頭結點指針域置NULL*/}EnQueue(LinkQueue *q, char e){ /*入隊列操作*/ QueuePtr p; p = (QueuePtr)malloc(sizeof(QNode)); /*創建一個隊列元素結點*/ if( !q->front) exit(0); /*創建頭結點失敗*/ p->data = e; /*將元素e入隊列*/ p->next = NULL; /*修改隊尾指針*/ q->rear ->next = p; q->rear = p;}DeQueue(LinkQueue *q, char *e){ /*如果隊列q不為空,刪除q的隊頭元素,用e返回其值*/ QueuePtr p; if(q->front == q->rear) return; /*隊列為空,返回*/ p = q->front->next; *e = p->data; q->front->next = p->next; if(q->rear == p) q->rear = q->front;/*如果隊頭就是隊尾,則修改隊尾指針*/ free(p);}printTriangle(int n){ LinkQueue q; char e,a,b ; int i,j;initQueue(&q); /*初始化隊列*/printf("Input the the charecter( /-) of the row.1\n"); for(i=0;i<n;i ){ /*輸入第一行的符號,併入隊列*/ scanf("%c",&e); EnQueue(&q,e); }printf("The charecter triangle is like\n"); for(i=0;i<n;i ){ /*控制符號三角形的行數*/ for(j=0;j<i;j ) printf(" "); /*控制輸出格式,列印成倒三角形狀*/ DeQueue(&q,&a); /*出隊列,列印每行的第一個符號*/ printf("%c ",a); for(j=0;j<n-i-1;j ) /*控制輸出每一行,第i行輸出n-i個符號*/ { DeQueue(&q,&b); /*出隊列*/ printf("%c ",b); if(a == b) EnQueue(&q,' '); /*向隊尾插入新元素*/ else EnQueue(&q,'-'); a = b; } printf("\n"); /*控制輸出格式,列印成倒三角形狀*/ }}main{ int n; printf("Please input the number of ' ' or '-' of the row.1 \n"); scanf("%d",&n); /*輸入符號三角形中第一行的元素個數*/ getchar; printTriangle(n); /*列印符號三角形*/ getche;}
運行結果:
運行結果
,