注册 登录
编程论坛 C++教室

新人,高手帮忙看看

wang28152002 发布于 2012-08-12 11:56, 434 次点击
很简单的求π的一个程序。根据π/4=1-(1/3)+(1/5)-(1/7)+.........这个公式,帮忙看看下面这个程序为什么输出为4.000啊,还有把pi的赋值取消的话,就会出现—37346743一大溜很大的数,我邮箱wang281520027@
有没有QQ群什么的啊,哪位朋友有学习的好资料发我邮箱里,谢谢,我这也有一点资料,互相帮忙

#include <stdio.h>

int main()
{
    int sign=1,deno=1,i=1;

   
    double n=1,pi,term=0;
    while(n>=1e-6)
    {
        term=term+sign/deno;
        
        sign=-sign;
        deno=deno+2;
        n=i/deno;

    }
    pi=term*4;
    printf("%lf\n",pi);
https://bbs.bccn.net/thread-285348-1-1.html
    system("pause");
        return 0;
}
8 回复
#2
wang281520022012-08-12 12:04
现在是学C语言好还是学C++好啊?我也很迷惑
#3
hijk3732012-08-12 12:40
把deno=1定义为double型数据,否则你得不到你想要的结果;

n=i/deno;
等号右边的 i/deno 是两个数据类型都是整型数据,1/1=1,那么n的值为1 ,进入循环,在第二次循环中,n=1/3=0,退出循环,temp值为第二次循环时的值:temp=1-0;即temp值为1.

pi=temp*4;  pi值为4.000000
#4
qq8725519692012-08-12 16:27
%d 这个是正整数
#5
honter2012-08-13 14:13
sign/deno,这个值是int型的,除了第一次以外,其他时候均是零,因此term的值始终为1,所以结果为4。
#6
lkxiwang2012-08-14 11:11
两个整数用“\”取商
#7
wang281520022012-08-14 13:55
回复 3楼 hijk373
好了,谢谢,呵呵
不过我定义输出格式是%9.8f后为什么输出的是3.14159065啊
#8
Vitens2012-08-14 15:36
回复 2楼 wang28152002
你迷惑?估计是你觉得只学习其中一门语言以后就够了。
一个是面向过程的c语言。
一个是面向对象的C++。
两者的思想都不一样、
如果想学的话都得学习哈,学的怎么样又是另外一回事了,入门是必须的。
而且C++就是C plus plus,别疑惑了,着手开始学习吧。
我们是开了C语言的课,现在自学的C++,蛮轻松的呀(基本入门)。
其实我对这些的了解并不是太多,我以后的方向是图像处理,反正这方面对C和C++都得要求的,当然还有数学的知识。。。
送你一句话   Over-thinking ruins you!!!
#9
best_12012-08-14 18:41
c++好 为什么 ?因为c++是一个既面向对象和面向过程的语言 。大家都知道 c语言是一个面向过程的语言,比较的机械,相输出语句这么简单的语句也要分很多 ,现在大多数都是用的c++  。java是借鉴的c++的纯面向对象,其中少了c++一些比较困难的东西。如果你把c++学好了 ,其它语言你可以在两周内学会。我是学游戏程序设计的,相信我,c++的用途很广,像游戏逻辑的实现,和一些图形软件的开发。当然还有很多

[ 本帖最后由 best_1 于 2012-8-14 18:43 编辑 ]
1