日暮迟归 2022-10-22 19:28 采纳率: 75%
浏览 22
已结题

请问输入2总是输出3是为什么?

#include <stdio.h>

int main(){
long int a=1,b=2,n,i,t;
double sum;
scanf("%ld",&n);
if(n<1)
printf("%d",-1);
else
{for(i=1,sum=0.00;i<=n;i++)
{sum=sum+b/a;
t=a;
a=b;
b=b+t;};
printf("%.1lf",sum);};

return 0;

}

  • 写回答

1条回答 默认 最新

  • codeaftercode 2022-10-22 19:51
    关注

    知识点:c++的除法,如果除数和被除数都是整形,则计算结果是整形,即1/10的结果是0
    注意for循环中的 sum=sum+b/a; 中的除法
    两个操作数b和a都是整形,所以你懂的
    改成:sum = sum + 1.0 * b / a;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月26日
  • 已采纳回答 10月22日
  • 创建了问题 10月22日

悬赏问题

  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟