麻烦帮看一下,一个求积分的程序,谢谢啊!!

来源:百度知道 编辑:UC知道 时间:2024/05/31 07:18:46
#include<math.h>
void main()
{float integral(float a,float b,float (*fun)(float));
float f1(float);
float f2(float);
float f3(float);
float a,b;
printf("input a and b:\n");
scanf("%f,%f",&a,&b);
printf("result1=");
integral(a,b,f1);
printf("result2=");
integral(a,b,f2);
printf("result3=");
integral(a,b,f3);
getch();
}
float f1(float x)
{return (x*(1+x));}
float f2(float x)
{return (x*(3+2*x));}
float f3(float x)
{return pow(x,3);}
float integral(float a,float b,float (*fun)(float x))
{float x=a,s=0,h;
int i,n=100000;
h=(b-a)/n;
for(i=1;i<=n;i++)
{s=s+h*(*fun)(x);
x=x+h;}
printf("%f\n",s);
}

那个n我不知道该怎么处理就让它等于10000了,不是应该趋向于无穷大吗?
求出来result 1、2、3全等于0.0000。
我好伤心,这个程序做了很久,做来做去好不容易编译成功了,居然这个结果,哪儿不对呢???多谢各位了!!!!

#include<math.h>
#include<stdio.h>
#include<conio.h>
float integral(float a,float b,float (*fun)(float));
float f1(float);
float f2(float);
float f3(float);
void main()
{

float a,b;
printf("input a and b:\n");
scanf("%f,%f",&a,&b);
printf("result1=");
integral(a,b,f1);
printf("result2=");
integral(a,b,f2);
printf("result3=");
integral(a,b,f3);
getch();
}
float f1(float x)
{return (x*(1.+x));}
float f2(float x)
{return (x*(3.+2.*x));}
float f3(float x)
{return (float)pow(x,3.);}
float integral(float a,float b,float (*fun)(float x))
{float x=a,s=0.,h;
int i,nn=1000;float n=1000;////////////////n为实,不能为循环变量.故换成nn
h=(b-a)/n;
for(i=1;i<=nn;i++)
{s=s+h*(*fun)(x);
x=x+h;}
printf("%f\n",s);
return s;