一元多项式的求导
Time Limit:1000MS Memory Limit:10000K
Total Submit:294 Accepted:69
Description
一个一元多项式可以看作由若干个一元单项式按降幂排列成的线性表。请编写程序对输入的一元多项式进行求导,并输出求导的结果。
Input
输入为一个一元多项式,按照降幂依次输入每个单项式的系数和指数,并以-1 -1作为结束。系数和指数均为整数,指数不小于0。
Output
输出为求导结果多项式,按照降幂依次输出每个单项的系数和指数,每个数值后面用一个空格隔开,输出结果多项式后换行。
系数为0的单项式不得输出——除非结果多项式就是0,则直接输出0并换行。
Sample Input
2 7 3 5 12 1 6 0 -1 -1
Sample Output
14 6 15 4 12 0
Source
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <conio.h>
typedef struct node
{
int coef;
int expn;
struct node * next;
} PolyNode;
PolyNode * Create_Poly(char ch) //输入多项式
{
PolyNode * p, *s,*r;
int x; int y;
p=(PolyNode *)malloc(sizeof(PolyNode));
p->next=NULL;
printf("请输入一元多项式%c:(格式:系数 指数,指数递减,以-1 -1结束.)\n",ch);
scanf("%d %d",&x,&y);
while(x!=-1)
{
s=(PolyNode *)malloc(sizeof(PolyNode)); //s每次都被重新分配了一次内存(重新开辟了一个存储空间)
s->coef=x;
s->expn=y;
s->next=NULL;
if(p->next==NULL)
{
p->next=s; //s已经连接到p的后面
r=s;
}
else
{
r->next=s; //当地址相同时,则开辟的内存空间也可用
r=s;
}
scanf("%d %d",&x,&y);
}
return p;
}
PolyNode *QiuDao_Poly(PolyNode *h)
{int a,b;
PolyNode *t;
t=h->next;
while(t->next!=NULL)
{
a=t->coef;
b=t->expn;
a=a*b;
b=b-1;
t=t->next;
}
return t; //一定不要忘记return.
}
void Out_Poly(PolyNode *j)
{ while(j->next!=NULL)
{
printf("%d %d",j->coef,j->expn);
j=j->next;
}
}
int main()
{ PolyNode * f,* g;
printf("多项式求导:\n");
f=Create_Poly('A'); //输入多项式A
Out_Poly(f);
g=QiuDao_Poly(f);
Out_Poly(g);
getch();
}
求好心人帮助,运行后结果莫名奇妙。
怎么改正。
谢谢!谢谢!
菜鸟跪求!