杨辉三角 c语言版 队列解决

来源:百度知道 编辑:UC知道 时间:2024/06/22 07:31:28
利用循环队列求杨辉三角形第n行的数值,n为用户输入任意值。

(队列都以类的形式定义 )

【例】计算第n行杨辉三角的值

第 1 行 0 1 0
第 2 行 0 1 1 0
第 3 行 0 1 2 1 0
第 4 行 0 1 3 3 1 0
第 5 行 0 1 4 6 4 1 0

我的程序是:
#include "stdio.h"
#include "malloc.h"
#define MaxSize 100
typedef struct
{
int data[MaxSize];
int front,rear;
}SqQueue;
void InitQueue(SqQueue *q)
{
q=(SqQueue *)malloc (sizeof(SqQueue));
q->front=q->rear=0;
}
int enQueue(SqQueue *q,int e)
{
if((q->rear+1)%MaxSize==q->front)
return 0;
q->rear=(q->rear+1)%MaxSize;
q->data[q->rear]=e;
return 1;
}
int deQueue(SqQueue *q,int *e)
{
if(q->front==q->rear)
return 0;
q->front=(q->front+1)%MaxSize;

第一个错误是构造一个typedef struct 错了应该是这样定义struct typedef目前只发现一个错误啊!我能力有限啊!我才上大一啊!对不住了!不过你可以尝试一下吗?

首先定义a[i]=1是初始化数组,全部初始化为1,以后会有0,而1则为素数,0就不是.而定义的a[101],定义了101个空间,但不可能有101个素数.
第2:里面的双重循环,主要是这样:一个数,比如说20,那么就要把,从2~19全部被20除,如果除进,那么就不是素数,那么就标志为0,

if(a[i]!=0)
以后凡是为0的,都不是素数,要不为0而为1才是素数