#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
typedef struct Term
{
int coef;//常数
int exp;//次方
}Term;
typedef struct Sqlist
{
Term term[100];
int len;
}Sqlist;
void Add(Sqlist A, Sqlist B, Sqlist* C)
{
int i = 0, k = 0, j = 0;
while (i < A.len && j < B.len)
{
if (A.term[i].exp > B.term[j].exp)
{
C->term[k++] = A.term[i++];
}
else if (A.term[i].exp < B.term[j].exp)
{
C->term[k++] = B.term[j++];
}
else
{
C->term[k].exp = A.term[i].exp;
C->term[k++].coef = A.term[i++].coef + B.term[j++].coef;
}
}
while (i < A.len)
{
C->term[k++] = A.term[i++];
}
while (j < B.len)
{
C->term[k++] = B.term[j++];
}
C->len = k;
}
int main()
{
y=3x^4+5x^3-3x^2+x+0;
Sqlist A = { {{3,4},{5,3},{-3,2},{1,1},{0,0}},5 };
//y = 4x ^ 4 + 2x ^ 3 - 4x ^ 2 + x + 8;
Sqlist B = { {{4,4},{2,3},{-4,2},{1,1},{8,0}},5 };
Sqlist C;
Add(A, B, &C);
for (int i = 0; i < C.len; ++i)
{
if (i == 0 && C.term[i].exp != 0)
{
printf("%dx^%d", C.term[i].coef, C.term[i].exp);
}
else
{
if (C.term[i].exp != 0)
{
printf("%+dx^%d", C.term[i].coef, C.term[i].exp);
}
else
{
printf("%+d", C.term[i].coef);
}
}
}
return 0;
}
多项式加法
最新推荐文章于 2024-07-13 16:00:03 发布