日暮迟归 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日