#include <time.h>
#include <stdlib.h>
double jifen(int, int, int, int)
int main()
{
int a,b,d,n
double c
srand((unsigned)time(NULL))
printf("请输入a b\n")
scanf("%d %d",&a,&b)
printf("请输入n\n")
scanf("%d",&n)
d=1+b*b
c=jifen(a,b,d,n)
printf("积分为%lf\n",c)
return 0
}
double jifen(int a,int b,int d,int n)
{
int i,m=0
double x,y,result
for(i=1i<=ni++){
x=(double)rand()/(double)(RAND_MAX)*(b-a)+a
y=(double)rand()/(double)(RAND_MAX)*d
if(y<=1+x*x) m++
}
result=(double)m*(b-a)*d/n
return result
}
如上 使用double 在最后加入result的强制转换
另外在x定义那里,改为(rand/rand_max)*(b-a)+a
因为是a,b 之间的距离随机加a,当a不为0时原来的式子是错的。
#include "stdio.h"#include "time.h"
#include "math.h"
#include "dos.h"
#define PI 3.1415926
main()
{ double x,y,sum=0
int i
for(i=0i<=100i++)
{ srand(time(0))
x=rand()%10000
x=x/10000*PI/2
sleep(1)
srand(time(0))
y=rand()%10000
y=y/10000
if(y<=sin(x)) sum++
clrscr()
printf("%d%",i)
}
clrscr()
printf("%f ",sum/--i)
}
TC上没问题 VC上有点问题~~~~