c语言 求数值积分

来源:百度知道 编辑:UC知道 时间:2024/05/25 13:20:13
#include <stdio.h>
float f(float x)
{
return 4/(x*x+1);
}
void main()
{
float A,B,N,H=(B-A)/N,sum=0;
printf ("请输入A值:");
scanf ("%f",&A);
printf ("请输入B值:");
scanf ("%f",&B);
printf ("请输入N值:");
scanf ("%f",&N);
int i;
for(i=1;i<=N;i++)
{
sum+=(f(A)+f(A+H))*H/2;
A=A+H;
}
printf("%.5f\n",sum);
}

输入A=0 B=1 N=100后 运行结果为0
错在哪里 请高手指点

H=(B-A)/N这一句不应该放在变量声明中,因为刚定义时,A,B,N没有赋值,是随机值

应该将
float A,B,N,H=(B-A)/N,sum=0;

改为:

float A,B,N,H,sum=0;

将H=(B-A)/N;放在scanf ("%f",&N); 后面。

#另外建议将int i放在主函数起始处。

-----------------------------------------

更改后的程序:

#include<stdio.h>
float f(float x)
{
return 4/(x*x+1);
}
void main()
{
float A,B,N,H,sum=0;
int i;
printf ("请输入A值:");
scanf ("%f",&A);
printf ("请输入B值:");
scanf ("%f",&B);
printf ("请输入N值:");
scanf ("%f",&N);
H=(B-A)/N;
for(i=1;i<=N;i++)
{
sum+=(f(A)+f(A+H))*H/2;
A=A+H;
}
printf("%.5f\n",sum);

}

H=(B-A)/N
H 的定义位置有问题 把它的定义放到 A B 输入之后试试
scanf ("%f",&A);
printf ("请输入B值:");
scanf ("%f",&B);
printf ("请输入N值:");