c语言打印符号三角形(c语言打印出三角形)

题目要求:

规定这样一种形状的三角形,如图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();
}

运行结果:

原文链接:,转发请注明来源!