#include
void
main()
{
int
a1,b1,c1,d1,e1,f1,a2,b2,c2,d2,e2,f2
printf("ax^5+bx^4+cx^3+dx^2+ex+f=0\n")
printf("请输入:a
b
c
d
e
f\n")
printf("第一个:")
scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&d1,&e1,&f1)
printf("第二个:")
scanf("%d%d%d%d%d%d",&a2,&b2,&c2,&d2,&e2,&f2)
printf("两式相加后得:\n")
printf("%dx^5+%dx^4+%dx^3+%dx^2+%dx+%d=0\n",a1+a2,b1+b2,c1+c2,d1+d2,e1+e2,f1+f2)
}
由于变量太多!输出时要注意哦
希望回答对你有帮助!
//试试看这个,以前写的,应该满足你的要求#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct _PolyNode {
int index
int cofficient
} NodeType
typedef struct _polynomial {
NodeType data
struct _polynomial *next
} Polynomial
void append(Polynomial* head, NodeType data) {
Polynomial *p = (Polynomial*)malloc(sizeof(Polynomial))
p->data = data
p->next = head->next
head->next = p
}
void input(Polynomial* head) {
NodeType data
do {
scanf("%d%d", &data.cofficient, &data.index)
append(head, data)
} while(data.cofficient != 0 && data.index != -1)
}
/**
* 合并同类项并去除系数为0的项
*/
void merge(Polynomial *head) {
Polynomial *p
for(p = head->next p->next p = p->next)
if(p->data.index == p->next->data.index) {
p->data.cofficient += p->next->data.cofficient
p->next->data.cofficient = 0
}
for(p = head p->next)
if(p->next->data.cofficient == 0) {
Polynomial *q
q = p->next
p->next = q->next
free(q)
}
else
p = p->next
}
/**
* 按指数从高到低排序
*/
void sort(Polynomial *head) {
Polynomial *p, *q
for(p = head->next p->next p = p->next) {
NodeType t = p->data
for(q = p->next q q = q->next) {
if(t.index < q->data.index) {
p->data = q->data
q->data = t
t = p->data
}
}
}
}
Polynomial* add(Polynomial *a, Polynomial *b) {
Polynomial *p, *ret = (Polynomial*)malloc(sizeof(Polynomial))
ret->next = NULL
for(p = a->next p p = p->next)
append(ret, p->data)
for(p = b->next p p = p->next)
append(ret, p->data)
return ret
}
Polynomial* multiply(Polynomial *a, Polynomial *b) {
Polynomial *p, *q, *ret = (Polynomial*)malloc(sizeof(Polynomial))
ret->next = NULL
for(p = a->next p p = p->next)
for(q = b->next q q = q->next) {
NodeType data = {p->data.index + q->data.index, p->data.cofficient * q->data.cofficient}
append(ret, data)
}
return ret
}
void display(Polynomial *head) {
sort(head)
merge(head)
Polynomial *p
for(p = head->next p p = p->next) {
if(p->data.cofficient < 0)
printf("-")
else if(p != head->next)
printf("+")
if(!(abs(p->data.cofficient) == 1 && p->data.index > 0))
printf("%d", abs(p->data.cofficient))
if(p->data.index > 0) {
printf("X")
if(p->data.index > 1)
printf("^%d", p->data.index)
}
}
printf("\n")
}
int main() {
Polynomial *a = (Polynomial*)malloc(sizeof(Polynomial)),
*b = (Polynomial*)malloc(sizeof(Polynomial))
input(a)
input(b)
display(a)
display(b)
display(add(a, b))
display(multiply(a, b))
return 0
}