未照耀的荣光 2021-07-02 02:13 采纳率: 100%
浏览 12
已采纳

有没有hxd知道为什么出不来结果啊

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

typedef struct Polynode
{
int coef,exp;
struct Polynode *next;
}Pnode;

Pnode* creat()
{
Pnode *rear,*s,*head;
int c,e;
head=(Pnode *)malloc(sizeof(Pnode));
rear=head;
scanf("%d %d",&c,&e);
while(c!=0)
{
s=(Pnode *)malloc(sizeof(Pnode));
s->coef=c;
s->exp=e;
rear->next=s;
rear=s;
scanf("%d %d",&c,&e);
rear->next=NULL;
}
}//尾插法以0结束

Pnode* polyadd(Pnode *p1,Pnode p2)
{
int sum=0,i=0,c[100],e[100],j=0;
Pnode
r;
p1=p1->next;
p2=p2->next;
Pnode *head;
Pnode *l,*s;
head=(Pnode *)malloc(sizeof(Pnode));
head->next=NULL;
l=head;
while(p1!=NULL&&p2!=NULL)
{
sum=p1->coef+p2->coef;
if(p1->exp>p2->exp)//p1的指数大于p2的指数
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->exp=p2->exp;
s->coef=p2->coef;
l=s;
p2=p2->next;
}
if(p1->expexp)
{
if(p1->exp>p2->exp)//p1的指数小于p2的指数
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->exp=p1->exp;
s->coef=p1->coef;
l=s;
p1=p1->next;
}
if(p1->exp==p2->exp&&sum!=0)
{
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->coef=sum;
s->exp=p1->exp;
l=s;
p1=p1->next;
p2=p2->next;
}
if(p1->exp==p2->exp&&sum==0)
{
p1=p1->next;
p2=p2->next;
}
printf("升幂输出为:\n");
while(l!=NULL)
{
printf("%dx^%d",l->coef,l->exp);
c[i]=l->coef;
e[i]=l->exp;
l=l->next;
i++;
if(l!=NULL)
printf("+");
}
printf("降幂输出为:\n");
for(j=0;i<=i;j++)
{
printf("%dx%d",c[j],e[j]);
if(c[j+1]!=-1&&e[j+1]!=-1)
printf("+");
}
}

Pnode* polyminus(Pnode *p1,Pnode p2)
{
int sum=0,i=0,c[100],e[100],j=0;
Pnode
r;
p1=p1->next;
p2=p2->next;
Pnode *head;
Pnode *l,*s;
head=(Pnode *)malloc(sizeof(Pnode));
head->next=NULL;
l=head;
while(p1!=NULL&&p2!=NULL)
{
sum=p1->coef-p2->coef;
if(p1->exp>p2->exp)//p1的指数大于p2的指数
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->exp=p2->exp;
s->coef=p2->coef;
l=s;
p2=p2->next;
}
if(p1->expexp)
{
if(p1->exp>p2->exp)//p1的指数小于p2的指数
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->exp=p1->exp;
s->coef=p1->coef;
l=s;
p1=p1->next;
}
if(p1->exp==p2->exp&&sum!=0)
{
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->coef=sum;
s->exp=p1->exp;
l=s;
p1=p1->next;
p2=p2->next;
}
if(p1->exp==p2->exp&&sum==0)
{
p1=p1->next;
p2=p2->next;
}
printf("升幂输出为:\n");
while(l!=NULL)
{
printf("%dx^%d",l->coef,l->exp);
c[i]=l->coef;
e[i]=l->exp;
l=l->next;
i++;
if(l!=NULL)
printf("-");
}
printf("降幂输出为:\n");
for(j=0;i<=i;j++)
{
printf("%dx%d",c[j],e[j]);
if(c[j+1]!=-1&&e[j+1]!=-1)
printf("-");
}
}

Pnode* polymultiply(Pnode *p1,Pnode p2)
{
int sum=0,i=0,c[100],e[100],j=0;
Pnode
r;
p1=p1->next;
p2=p2->next;
Pnode *head;
Pnode *l,*s;
head=(Pnode )malloc(sizeof(Pnode));
head->next=NULL;
l=head;
while(p1!=NULL&&p2!=NULL)
{
sum=p1->coef
p2->coef;
if(p1->exp>p2->exp)//p1的指数大于p2的指数
s=(Pnode *)malloc(sizeof(Pnode));
l->next=s;
s->exp=p2->exp;
s->coef=p2->coef;
l=s;
p2=p2->next;
}
if(p1->expexp)
{
if(p1->exp>p2->exp)//p1的指数小于p2的指数
s=(Pnode )malloc(sizeof(Pnode));
l->next=s;
s->exp=p1->exp;
s->coef=p1->coef;
l=s;
p1=p1->next;
}
if(p1->exp==p2->exp&&sum!=0)
{
s=(Pnode )malloc(sizeof(Pnode));
l->next=s;
s->coef=sum;
s->exp=p1->exp;
l=s;
p1=p1->next;
p2=p2->next;
}
if(p1->exp==p2->exp&&sum==0)
{
p1=p1->next;
p2=p2->next;
}
printf("升幂输出为:\n");
while(l!=NULL)
{
printf("%dx^%d",l->coef,l->exp);
c[i]=l->coef;
e[i]=l->exp;
l=l->next;
i++;
if(l!=NULL)
printf("
");
}
printf("降幂输出为:\n");
for(j=0;i<=i;j++)
{
printf("%dx%d",c[j],e[j]);
if(c[j+1]!=-1&&e[j+1]!=-1)
printf("
");
}
}

int main()
{
int i,j;
printf("| ------------------ 请输入要进行的操作----------- |\n");
printf("|------------------ 1:输入Am--------------------- |\n");
printf("| ------------------ 2:输入Bn----------------------|\n");
printf("| ------------------ 3:计算Am+Bn-------------------|\n");
printf("| ------------------ 4:计算Am-Bn-------------------|\n");
printf("| ------------------ 5:计算Am*Bn-------------------|\n");
printf("| ------------------ 6:退出------------------------|\n");
scanf("%d",&i);
{
Pnode *polya,*polyb,*polyc;
switch(i)
{
case 1:
{
printf("请输入Am\n");
polya=creat() ;

                }
            case 2:
                {
                    printf("请输入Bn\n");
                    polyb=creat()    ;
                    
                }
            case 3:
                {
                    printf("M=Am+Bn=:");
                    polyadd(polya,polyb);
                    
                }
            case 4:
                {
                    printf("M=Am-Bn=:");
                    polyminus(polya,polyb)    ;
                    
                }
            case 5:
                {
                    printf("M=Am*Bn=:");
                    polymultiply(polya,polyb);
                        
                }
                
        }
    }
    printf("运算结束\n");
}
  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-07-02 05:31
    关注

    你函数定义全是错的,比如

    Pnode* polyadd(Pnode *p1,Pnode p2)

    应该为

    Pnode* polyadd(Pnode *p1,Pnode *p2)

    第二个链表没有定义成指针类型啊

    其它几个函数都是这样

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?