📄 test.cpp
字号:
#include<stdio.h>
#include<stdlib.h>
struct Data{
float coef;
int exp;
};
typedef struct Poly{
Data data;
struct Poly *next;
}Poly1,*Ppoly;
int locate(Ppoly L,int e){
Ppoly q;
q=L;
while(q){
if(q->data.exp==e) return 1;
else q=q->next;
}
return 0;
}
void insert(Ppoly L,Data e){
Ppoly p,q;
p=L;
Ppoly a;
a=new Poly1;
while(p){
if(p->data.exp<e.exp) {q=p;p=p->next;}
else break;
}
a->data=e;
a->next=q->next;
q->next=a;
}
void create(Ppoly &L){
Ppoly p;
p=new Poly1;
p->data.coef=1.0;
p->data.exp=-1;
p->next=NULL;
L=p;
Data d;
scanf("%f %d",&d.coef,&d.exp);
while(d.exp!=-1){
if(!locate(L,d.exp)) insert(L,d);
scanf("%f %d",&d.coef,&d.exp);
}
}
void print(Ppoly L){
Ppoly p;
p=L->next;
printf("你所输入的多项式为:");
if(p) { if(p->data.coef!=0) printf("%fx^%d",p->data.coef,p->data.exp);p=p->next;}
while(p){
float m;
m=p->data.coef;
if(m<0) printf("%fx^%d",p->data.coef,p->data.exp);
else if(m>0) printf("+%fx^%d",p->data.coef,p->data.exp);
p=p->next;
}
printf("\n");
}
void add(Ppoly L1,Ppoly L2){
Ppoly p1=L1->next,p2=L2->next;
int i;
if(!p1){
if(!p2) printf("两个0项的多项式相加为0!\n");
else print(L2);
}
else if(!p2){
if(!p1) printf("两个0项的多项式相加为0!\n");
else print(L1);
}
else{
while(p2){
while(p1){
if(p2->data.exp==p1->data.exp) {i=1;break;}
else {p1=p1->next;i=0;}
}
if(i==0) insert(L1,p2->data);
else if(i==1) p1->data.coef+=p2->data.coef;
p1=L1;
p2=p2->next;
}
}
}
void main(){
Ppoly q1,q2;
printf("请依次输入第一个多项式的系数和指数:(以指数为-1做结束)\n");
create(q1);
print(q1);
printf("请依次输入第二个多项式的系数和指数:(以指数为-1做结束)\n");
create(q2);
print(q2);
add(q1,q2);
printf("相加后的多项式是:");
print(q1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -