注册 登录
编程论坛 C语言论坛

求教,这个利用随机数法求圆周率的程序有什么问题?

喔喔我 发布于 2019-08-11 09:57, 1966 次点击
#include <time.h>
#include <stdlib.h>
#define n 30000  //宏定义n为常量30000
main()
{
    float x,y;
    int c=0,d=0;
    randomize();
    while(c++<=n)
    {
    x=random(1001);   /* x,y为坐标。产生0-1000之间的随机数 */
    y=random(1001);
    if(x*x+y*y<=1000000) //判断点(x,y)是否在圆内
        d++;      //计数
    }
    printf("π=%f\n",4.*d/n);
    system("pause");
    return 0;
}
2 回复
#2
TysonKoothra2019-08-11 11:08
思路是对的,有一些函数用错了。如果有 IDE的话,这些问题在写代码的时候,很快就能发现。如果没有IDE的话,找一个 IDE用用吧。
程序代码:

#include <time.h> // 没有用到这个头文件里面的函数
#include <stdlib.h>
#define n 30000
main()
{
    float x,y;
    int c=0,d=0;
    randomize(); // 这里的函数是不存在的,可以不要这条语句
    while(c++<=n)
    {
        x=random(1001);   // 这里random函数不需要参数,应该写成 x = random() % 1000;
        y=random(1001);   // 这里random函数不需要参数,应该写成 y = random() % 1000;
        if(x*x+y*y<=1000000)
            d++;      
    }
    printf("π=%f\n",4.*d/n);    // 没有include 头文件stdio.h, printf 函数是不可用的。
    system("pause");
    return 0;
}

#3
暴君Dentiny2019-08-14 00:26
回复 2楼 TysonKoothra
我一直在看谭浩强的c语言,没听说可以这样定义,原来还可以定义坐标
1