永发信息网

c 一个问题 8.14

答案:2  悬赏:0  手机版
解决时间 2021-08-24 14:42
  • 提问者网友:谁的错
  • 2021-08-24 05:57

# include<stdio.h>
double pi(double eps)
{
    int i=1;
    double t=1;
    while(i<eps)
    {

        t=i/3.0 ;
        i++;
    }
    return t;
}
main()
{
    double p,eps;
    scanf("%lf",&eps);
    p=pi(eps);
    printf("%lf",p);
    getch();

}

结果

结果应该是0,因为i是整数,怎么会是0.333333?????

 

最佳答案
  • 五星知识达人网友:天凉才是好个秋
  • 2021-08-24 06:53
int i=1;
    double t=1;
    while(i<eps)//当i=1小于eps=2.0,循环条件成立,执行循环。i在循环体内变成2之后,循环条件不成立,不执行循环
    {

    t=i/3.0 ;//t=1/3.0=0.333333
    i++;//i=2
    }
    return t;//返回0.333333



所以结果是0.333333。


整数也能和浮点数比较大小的。

全部回答
  • 1楼网友:玩家
  • 2021-08-24 08:18

当将C语言中的除法结果赋给整数的时候,将会丢弃小数部分,造成取商丢弃余数的现象。

如果赋给一个双精度类型,就不一定了。

所以你可以试试将t的类型改为int。

我没有环境,不知道运行结果如何,但理论上应该是0。

另外,你的程序里,t的值和i是不是整数有什么关系?与整数同浮点数比较大小有什么关系?

我没搞懂……

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯