以下程序能生成形如 (0,0) + (15.7,3) + (141.3,4) + (185.26,5) + (97.34,7) + (106.76,8) 的随机多项式,其中(0, 0) 是固定的项,表示多项式的开始,对运算结果不产生影响.括号中的第一项表示底数,第二项表示指数,如: (a,b) 表示 a 的 b 次方.
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
typedef struct PNode
{
double coef;//系数
int exp;//指数
struct PNode *next;//指向下一结点的指针
}PNode,*Polynomial;
int static flag=0;
int CreatePoly(Polynomial &head)
{
int k,i;
head=new PNode;
head->next=NULL;head->coef=0;head->exp=0;//头结点系数和指数都为0
Polynomial p,pre,lp;
if(flag == 0)
{
srand((unsigned)time(NULL));flag=1;
}
k=rand()%12;
for(i=0;i<3+k;i++)
{
p=new PNode;//生成新结点
p->coef=(rand()%100)*3.14;
p->