一元多项式的表示和相加c语言 调试过程
时间: 2024-03-03 12:48:08 浏览: 19
一元多项式可以表示为一个结构体,包含项数和每一项的系数和指数。具体的代码如下所示:
```
typedef struct node {
float coef; // 系数
int expn; // 指数
struct node *next;
}Node, *LinkList;
void create(LinkList &L) {
L = (LinkList)malloc(sizeof(Node));
L->next = NULL;
Node *p, *q;
p = L;
int n;
printf("请输入多项式的项数:");
scanf("%d", &n);
printf("请输入每一项的系数和指数:");
for (int i = 0; i < n; i++) {
q = (Node*)malloc(sizeof(Node));
scanf("%f%d", &q->coef, &q->expn);
q->next = NULL;
p->next = q;
p = q;
}
}
void add(LinkList &La, LinkList &Lb, LinkList &Lc) {
Node *pa = La->next, *pb = Lb->next, *pc;
Lc = pc = La;
while (pa && pb) {
if (pa->expn < pb->expn) {
pc->next = pa;
pc = pa;
pa = pa->next;
}
else if (pa->expn > pb->expn) {
pc->next = pb;
pc = pb;
pb = pb->next;
}
else {
float sum = pa->coef + pb->coef;
if (sum != 0) {
pa->coef = sum;
pc->next = pa;
pc = pa;
}
pa = pa->next;
pb = pb->next;
}
}
pc->next = pa ? pa : pb;
free(Lb);
}
```
上述代码中,create函数用于创建一元多项式,add函数用于对两个多项式进行相加,得到一个新的多项式。具体的调用方式可以在main函数中进行,如下所示:
```
int main() {
LinkList L1, L2, L3;
printf("请输入第一个多项式:\n");
create(L1);
printf("请输入第二个多项式:\n");
create(L2);
add(L1, L2, L3);
printf("相加后的多项式为:\n");
Node *p = L3->next;
while (p) {
printf("%.2fx^%d", p->coef, p->expn);
if (p->next != NULL && p->next->coef > 0)
printf("+");
p = p->next;
}
return 0;
}
```
在调试过程中,可以通过打印中间变量的值来观察程序运行的情况,找出问题所在。同时,也可以使用调试工具进行单步调试,方便地观察每一行代码的执行情况。