这个挺简单啊。
成都创新互联是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的十多年时间我们累计服务了上千家以及全国政企客户,如成都雨棚定制等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致赞誉。
dx就是(b-i)/n;
然后做个n次的循环,每次加上矩形的值即可
下面是代码:如果n也定义成int,我的编译器不会执行类型转换,所以要强制执行,否则dx就会是int类型。若b-in,那么dx=0.
int f(int i,int b,int n,float *result)
{
float dx=(float)(b-i)/n;
for(int m=0;mn;m++)
*result+=((i+m*dx)*(i+m*dx)+3)*dx;
return 1;
}
i=0,b=10,n=1000,得到result=362.833,与精确值比较接近。因为矩形法求积分本来就不太准
另外,楼上的同学不要误导人家,积分的起始值可不一定是0,s=n*((n*i)*(n*i)+3)+s;明显把i默认当做0了。而且n是指划分的段数,不是区间长度。
#includevoidmain(){doublei,j;doublea,b,c=0;printf("请输入积分上下限:");scanf("%lf%lf",a,b);for(i=a;i=b;i+=10e-8){j=i*i+1;j*=10e-8;c+=j;}printf("ans=%.4f\n",c);}对了没考虑自变量取负值的情况,这个程序只适合算上下限都大于零的情况。
#include "stdio.h"
#include "math.h"
int main(void){
double i,s,d;
for(d=1E-7,s=i=0;i=2.0;i+=d)
s+=sqrt(4-i*i)*d;
printf("The result are %g\n",2*s);
return 0;
}
或
#include "stdio.h"
#include "math.h"
int main(void){
printf("The result are %g\n",2*asin(1)-2*asin(-1));
return 0;
}
你的错误原因在于scanf函数的错误运用,scanf函数以"\n"作为输入的结束,而你按下Enter键时在Windows上相当于输入了“\n\r”,这样引起的混乱致使程序无法识别你输入的a,b,n,故一直等待。
改进方法:输入语句改为 scanf("%lf %lf %d",a,b,n);
运行结果: