#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
int a[10],i,n,d[10],power;
float in[10];
clrscr();
printf("Enter the order ofthe polynomialn");
scanf("%d",&n);
for(i=n;i>=0;i--)
{
printf("Enter the co-efficient of x^%d:",i);
scanf("%d",&a[i]);
}
printf("Given polynomial isn");
for(i=n;i>=0;i--)
{
if(power<0)
{
break;
}
if(a[i]>0)
{
if(i!=n)
printf(" + ");
}
else if(a[i]<0)
printf(" - ");
else
printf(" ");
printf("%dx^%d",abs(a[i]),i);
}
//To find derivative
for(i=n;i>=0;i--)
d[i]=a[i]*i;
printf("n Derivative of the given polynomial isn");
for(i=n;i>=1;i--)
{
if(power<0)
{
break;
}
if(d[i]>0)
printf(" + ");
else if(d[i]<0)
printf(" - ");
else
printf(" ");
printf("%dx^%d",d[i],i-1);
}
getch();
}
上面的程序只计算一阶导数,但我需要一个计算所有导数的程序 例如 2x^3+2x^2+3x+1 f1= 6x^2+4x+3 f2=12x+4 f3=12
像这样我需要修改程序,但不知道如何做到这一点,请帮助我//
试试这个
#include <stdio.h>
#include <stdlib.h>
typedef struct polynomial {
int order;
int *coefficient;
} Polynomial;
void init_poly(Polynomial *p){
int i;
printf("Enter the order of the polynomialn");
scanf("%d", &p->order);
p->coefficient = malloc((p->order + 1)*sizeof(int));
for(i = p->order; i >= 0; --i){
printf("Enter the co-efficient of x^%d:", i);
scanf("%d", &p->coefficient[i]);
}
}
void drop_poly(Polynomial *p){
free(p->coefficient);
}
void print_poly(Polynomial *p){
int i;
for(i = p->order; i >= 0; --i){
if(p->coefficient[i]){
if(p->order != i){
printf(" %c ", p->coefficient[i] < 0 ? '-' : '+');
printf("%d", abs(p->coefficient[i]));
} else
printf("%d", p->coefficient[i]);
if(i)
printf("x^%d", i);
}
}
printf("n");
}
void differential_poly(Polynomial *p){
int i;
for(i = 0; i < p->order; ++i){
p->coefficient[i] = p->coefficient[i+1] * (i+1);
}
p->coefficient[p->order--] = 0;
}
void r_print_differential_poly(Polynomial *p){
int i=1;
while(p->order){
differential_poly(p);
printf("f%d = ", i++);
print_poly(p);
}
}
int main(void){
Polynomial poly;
init_poly(&poly);
printf("Given polynomial isn");
print_poly(&poly);
r_print_differential_poly(&poly);
drop_poly(&poly);
return 0;
}