m0_60180839 2022-11-04 22:23 采纳率: 100%

# 最下面的if在判断什么

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

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

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

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 = ");
Print_Polyn(pc);

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

return 0;
``````

}

Polyn Create_Polyn() //尾插法建立多项式.
{
int c,e;
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;
``````

}

{
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 qa=pa->next;
Polyn qb=pb->next;
pc = (Polyn)malloc(sizeof(Polynomial)); //单链表pc用来存放pa,pb的和
pc->next = NULL;
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;
}
}

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日

#### 悬赏问题

• ¥15 Python 如何安装 distutils模块
• ¥15 关于#网络#的问题：网络是从楼上引一根网线下来，接了2台傻瓜交换机，也更换了ip还是不行
• ¥15 资源泄露软件闪退怎么解决？
• ¥15 CCF-CSP 2023 第三题 解压缩(50％)
• ¥30 comfyui openpose报错
• ¥20 Wpf Datarid单元格闪烁效果的实现
• ¥15 图像分割、图像边缘提取
• ¥15 sqlserver执行存储过程报错
• ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
• ¥15 浮窗和全屏应用同时存在，全屏应用输入法无法弹出