源文件如下:
#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;
}