| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 884 人关注过本帖
标题:超简单的程序,求解!
只看楼主 加入收藏
You0
Rank: 2
等 级:论坛游民
帖 子:29
专家分:63
注 册:2014-8-2
结帖率:87.5%
收藏
已结贴  问题点数:10 回复次数:7 
超简单的程序,求解!
#include<stdio.h>

int main(void)
{
    int m,i,n;
    double p;
    scanf("%d",&m);
    for(i=0;i<m;i++)
    {
        scanf("%d",&n);
        p=(2/n)*(1/(n-1));
        printf("%lf\n",p);
    }
}


输入3的时候printf的p就是 0了,为什么?  要如何修改?
搜索更多相关主题的帖子: double 
2014-09-26 18:11
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:2 
p=(2/n)*(1/(n-1));
改为p=(2.0/n)*(1.0/(n-1));试试

坚持----------------------------------唯一的道路
shit ! ! !
2014-09-26 18:52
LD199
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:18
专家分:46
注 册:2013-10-12
收藏
得分:2 
同上楼
2014-09-26 19:36
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:2 
简单说说:
正如楼上二位所言,
我估计是问题对于楼主来说应该是新手不熟悉C语言造成的。其实不是什么大问题
一定要了解,C语言的基础数据类型是整形,所以/除法运算 是优先匹配整形的计算公式的
下次遇到浮点型的数据做除法运算,一定要使分子或者分母上出现浮点类型的。
你的原题可以写成这样 p=(2.0/(n*(n-1));
2014-09-26 20:25
豪仔仔
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2014-9-26
收藏
得分:2 
比如1/2,分子分母都是int类型,那么结果就是int类型,0,把分子改成double类型,那么结果就是double类型,0.5,这是一种默认的转换
2014-09-26 20:32
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:2 
回复 楼主 You0
/ 是什么,取整。

想抽苏烟了。
2014-09-26 21:16
fogmaple
Rank: 4
来 自:江西省赣州市于都县
等 级:业余侠客
威 望:1
帖 子:119
专家分:233
注 册:2014-7-28
收藏
得分:2 
以下是引用wssy213在2014-9-26 18:52:03的发言:

p=(2/n)*(1/(n-1));
改为p=(2.0/n)*(1.0/(n-1));试试

试试就知道
2014-09-27 13:19
悟也执迷
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2014-9-27
收藏
得分:2 
这个够清楚了。
以下是引用erty1001在2014-9-26 20:25:11的发言:

所以/除法运算 是优先匹配整形的计算公式的
下次遇到浮点型的数据做除法运算,一定要使分子或者分母上出现浮点类型的。
你的原题可以写成这样 p=(2.0/(n*(n-1));
2014-09-27 22:16
快速回复:超简单的程序,求解!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024550 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved