设计函数求一元多项式的导数。
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。
输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
#include<stdio.h>
#include<stdlib.h>
#define MAX 1001
typedef struct poly
{
int coef;
int exp;
}POLY;
int Input(POLY a[]);
void Diff(POLY a[],POLY b[],int n);
void Display(POLY a[]);
int main()
{
POLY polyarray[MAX];
POLY diff[MAX];
for(int i=0;i<MAX;i++)
{
polyarray[i].coef=-1;
polyarray[i].exp=-1;
}
int num=Input(polyarray);
//Display(polyarray);
Diff(polyarray,diff,num);
Display(diff);
}
int Input(POLY a[])
{
int coef,exp;
char ch;
int i=0;
do
{
scanf("%d %d",&coef,&exp);
ch=getchar();
a[i].coef=coef,a[i].exp=exp;
i++;
} while (ch!='\n');
return i;
}
void Diff(POLY a[],POLY b[],int n)
{
for(int i=0;i<MAX;i++)
{
b[i].coef=-1;
b[i].exp=-1;
}
if(n==1||a[0].exp==0)
{
b[0].coef=0;
b[0].exp=0;
}
else
{
for(int i=0;i<n;i++)
{
if(a[i].exp>0)
{
b[i].coef=a[i].coef*a[i].exp;
b[i].exp=a[i].exp-1;
}
}
}
}
void Display(POLY a[])
{
int i=0;
while(a[i+1].exp!=-1)
{
printf("%d %d ",a[i].coef,a[i].exp);
i++;
}
printf("%d %d",a[i].coef,a[i].exp);
}