m0_60180839 2022-11-04 22:23 采纳率: 100%
浏览 40
已结题

最下面的if在判断什么

#include <stdio.h>
#include <stdlib.h>

typedef struct Polynomial//定义结构体
{
float coef; //系数.
int expn; //指数:
struct Polynomial *next; //指向下一节点指针
}Polynomial,*Polyn;

Polyn Create_Polyn(); //尾插法建立多项式.

void Print_Polyn(Polynomial *head); //打印多项式.

Polyn Add_Polyn(Polynomial *pa,Polynomial *pb); //多项式相加.

Polyn Suberact_Polyn(Polynomial *pa,Polynomial *pb); //多项式相减.

int main()
{
Polynomial *pa,*pb,*pc,*pd;

/*--------------------一元多项式的创建---------------------*/ 
printf("请输入多项式pa的各项系数和指数(输入0结束): \n");
pa=Create_Polyn();
printf("请输入多项式pb的各项系数和指数(输入0结束): \n");
pb=Create_Polyn();

/*------------------一元多项式的格式输出-------------------*/
printf("\n多项式: pa = ");
Print_Polyn(pa);
printf("\n多项式: pb = ");
Print_Polyn(pb);

/*--------------------一元多项式相加-----------------------*/
printf("\n多项式pa和pb的和为:pa+pb = ");
pc=Add_Polyn(pa,pb);
Print_Polyn(pc);

/*--------------------一元多项式相减-----------------------*/
printf("\n多项式pa和pb的差为:pa-pb = ");
pd=Suberact_Polyn(pa,pb);
Print_Polyn(pd);
printf("\n");

return 0;

}

Polyn Create_Polyn() //尾插法建立多项式.
{
Polynomial *head,*rear,*s;//头 尾 s 指针
int c,e;
head = (Polyn)malloc(sizeof(Polynomial));//开辟一个空间
rear = head; //尾指针r指向头指针
scanf("%d,%d",&c,&e); //输入多项式的系数和指数项
while(c!=0){ //若c=0,代表多项式输入结束
s = (Polyn)malloc(sizeof(Polynomial));//生成新结点s
s->coef = c;
s->expn = e;
rear->next = s; //尾插
rear = s;
scanf("%d,%d",&c,&e); //数字域
}
rear->next = NULL; //将表中最后一个结点的next置为NULL

return head; 

}

void Print_Polyn(Polynomial *head) /打印多项式./
{
Polyn q=head->next;
int flag=1;
if(!q){ //q不为空 不进行if
putchar('0');
printf("\n");
return;
}
while(q){
if(q->coef > 0 && flag!=1){ //多项式中某一项系数大于0,输出+号
putchar('+');
}
if(q->coef!=1 && q->coef!=-1){ //多项式系数不是正负1
printf("%g",q->coef); //%g表示以%f%e中较短的输出宽度输出单双精度实数
if(q->expn==1) putchar('X'); //若指数为1,输出X
else if(q->expn) printf("X^%d",q->expn); //指数不为1,输出x^%d格式
}
else{
if(q->coef==1){ //系数为1
if(!q->expn) putchar('1');
else if(q->expn==1) putchar('X');
else printf("X^%d",q->expn);
}
if(q->coef==-1){ //系数为-1
if(!q->expn) printf("-1");
else if(q->expn==1) printf("-X");
else printf("-X^%d",q->expn);
}
}
q=q->next;
flag++;
}
printf("\n");
}

Polyn Add_Polyn(Polynomial *pa,Polynomial *pb) //多项式相加.
{
Polyn qa=pa->next;
Polyn qb=pb->next;
Polyn headc,pc,qc;
pc = (Polyn)malloc(sizeof(Polynomial)); //单链表pc用来存放pa,pb的和
pc->next = NULL;
headc = pc;
while(qa!=NULL && qb!=NULL) //当两个多项式均未扫描结束时
{
qc = (Polyn)malloc(sizeof(Polynomial));
if(qa->expn < qb->expn) //pa的指数项小于pb的指数项
{
qc->coef = qa->coef;
qc->expn = qa->expn;
qa = qa->next;
}
else if(qa->expn == qb->expn) //指数项相同时
{
qc->coef = qa->coef + qb->coef;
qc->expn = qa->expn; //当然也可以是qb->expn
qa=qa->next;
qb=qb->next;
}
else{ //pa的指数项大于pb的指数项
qc->coef=qb->coef;
qc->expn=qb->expn;
qb=qb->next;
}
if(qc->coef!=0){
qc->next = pc->next;
pc->next = qc;
pc = qc;
}
else free(qc);
}
while(qa!=NULL){ //pa存在剩余项,将剩余项插入到pc当中
qc = (Polyn)malloc(sizeof(Polynomial));
qc->coef = qa->coef;
qc->expn = qa->expn;
qa = qa->next;
qc->next = pc->next;
pc->next = qc;
pc = qc;
}
while(qb!=NULL){ //pb存在剩余项,将剩余项插入到pc当中
qc = (Polyn)malloc(sizeof(Polynomial));
qc->coef = qb->coef;
qc->expn = qb->expn;
qb = qb->next;
qc->next = pc->next;
pc->next = qc;
pc = qc;
}
return headc;
}

Polyn Suberact_Polyn(Polynomial *pa,Polynomial pb) //多项式相减.
{
Polyn h=pb;
Polyn p=pb->next;
Polyn pd;
while(p){ //pa-pb就等于pa+(-pb),所以将pb多项式的各项符号循环遍历变号
p->coef
=-1;
p=p->next;
}

pd=Add_Polyn(pa,h);        //利用已创函数Add_Polyn()执行pa+(-pb),即减法运算
 
for(p=h->next;p;p=p->next){    //执行完pa+(-pb)后,循环遍历,将pb的符号全部更改为之前的状态
    p->coef*=-1;
}
return pd;

}

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-11-04 22:29
    关注

    哪一行啊???

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月12日
  • 已采纳回答 11月4日
  • 赞助了问题酬金15元 11月4日
  • 创建了问题 11月4日

悬赏问题

  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算