MakaBako 2021-10-01 18:24 采纳率: 60%
浏览 32
已结题

一道很简单的算法输出却不对求答

求1-1/2+1/3-1/4到-1/100的值的一道题

int main()
{
    int sign,deno;
    double sum, term;
    sum = 1;
    sign = 1;
    deno = 2;
    while (deno <= 100)
    {
        sign = -1 * sign;
        term = sign / deno;
        sum = sum + term;
        deno = deno + 1;
    }
    printf("%f\n", sum);
    return 0;
}


为何定义deno为double 就能得到答案
而定义int就输出为1呢
在算法中deno好像一直是整数啊!

  • 写回答

3条回答 默认 最新

  • 19ty53 2021-10-01 19:18
    关注

    不是的,因为double/int是会当作整除来处理的。
    不过你的第11行也可以写成:

    term=sign/(double)term;
    //这样也不影响最后的答案
    

    你只需要记住,当你把不同的类型的变量放在一起,必须要在变量前加(类型)来转换类型

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月9日
  • 已采纳回答 10月1日
  • 创建了问题 10月1日

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用