源文件如下:
#include<stdio.h>
#include<math.h>void qiudao(float *a,int n) //求导的各个系数的值,s为求导的次数
{
int i;
n--;
for(i=0;i<=n;i++)
a[i]=a[i+1]*(i+1);
}
void display_daoshu(float *a,int n,int s) //显示S次求导后的函数
{ int i;
printf("%d次求导结果为:",s);
for(i=n;i>=0;i--)
{
if(*(a+i)==0){} //当系数为0时,不操作if(*(a+i)==1)
else
{
if(*(a+i)==1) //当系数为1时,显示格式为“X^次数+”
{
if(i==0||i==1)
{
if(i==0)
{
printf("%g+",*(a+i)); //当次数为0时,显示格式为“系数+”
}
if(i==1)
{
printf("%g*X+",*(a+i)); //当次数为1时,显示格式为“系数*X+”
}
}
else
printf("X^%d+",i);
}
else
{
if(i==0||i==1)
{
if(i==0)
{
printf("%g+",*(a+i)); //当次数为0时,显示格式为“系数+”
}
if(i==1)
{
printf("%g*X+",*(a+i)); //当次数为1时,显示格式为“系数*X+”
}
}
else
{
printf("%g*X^%d+",*(a+i),i); //当次数不为0或1是,显示格式为“系数*X^次数+”
}
}
}
}
printf("\b\t\t"); //去掉多余的“+”符号,
}
int main()
{
double x=1.5,y; //y=x-f(x)/f'(x)
int n,i; //次数最大的值
int s=0; //求导次数
float a[100];
system("color 0c");
printf("请输入最大次数的值:");
scanf("%d",&n);
for(i=0;i<=n;i++)
{
printf("请输入次数为%d的系数:",i);
scanf("%f",a+i);
}
printf("\n\t\t原函数为/");
display_daoshu(a,n,s);
printf("\n\n");
printf("请输入求导的次数s:");
scanf("%d",&s);
for(i=0;i<s;i++)
{
qiudao(a,n,s);
--n;
}
printf("\n\t\t");
display_daoshu(a,n,s);
return 0;
}