为了账号安全,请及时绑定邮箱和手机立即绑定

为什么输出都是0

为什么输出都是0

C
慕侠2084024 2017-10-08 08:25:11
#include<stdio.h> #include<math.h> int main() { int n,m,k; double i; while(~scanf("%d %d %d",&n,&m,&k)) { if(n <= 5 && n >= 1 && m <= 5 && m >= 1 && k <= 5 && k >= 1) { i =  k / (n + m + k) * (k-1) / ( n + m + k - 1); printf("%.2lf\n",i); } } return 0;  }
查看完整描述

3 回答

已采纳
?
望远

TA贡献1017条经验 获得超1032个赞

i =  k*1.0 / (n + m + k) * (k-1) / ( n + m + k - 1);

查看完整回答
1 反对 回复 2017-10-08
  • 慕侠2084024
    慕侠2084024
    为什么乘以1.0就可以了
  • 望远
    望远
    1.0是double类型,在运算时运算出现了小精度到大精度的自动类型转换,int -->double
?
慕的地4358790

TA贡献3条经验 获得超0个赞

i =  k*1.0 / (n + m + k) * (k-1) / ( n + m + k - 1);因为函数声明变量的时候都是整型,所以i的计算结果为整型(已经舍去小数点后的东西,再改为保留两位小数0.00),但是k*1.0可以起到隐形类型转换为Double类型,此刻输出的正是你想要的答案。

查看完整回答
反对 回复 2017-10-08
?
望远

TA贡献1017条经验 获得超1032个赞

m n k定义的都是整数,整数÷整数=整数。

查看完整回答
反对 回复 2017-10-08
  • 3 回答
  • 0 关注
  • 1816 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信