lyf971013 发表于 2020-1-28 13:10:00

第六课课后作业问题

#include <stdio.h>
#include <math.h>

int main()
{
        unsigned long long sum = 0;
        unsigned long long temp;
        unsigned long long weight;
        int i;
       
        for (i=0; i < 64; i++)
        {
                temp = pow(2,i);
                sum = sum+ temp;
        }
       
        weight = sum / 25000;
       
        printf("舍罕王应该给予达伊尔%11u粒麦子!\n",sum);
        printf("如果每25000粒麦子为1kg,那么应该给%11u公斤麦子!\n",weight);
       
        return 0;
       
}

为什么我计算的结果和答案的不一样 代码我看了好久。。

lyf971013 发表于 2020-1-28 13:12:35

其实这里计算得到的麦子数(18446744073709551615 )并非正确的结果,因为 unsigned long long 能够表示最大的数字是 18446744073709551615
这个是正确答案

lyf971013 发表于 2020-1-28 14:51:46

求教

zltzlt 发表于 2020-1-28 15:05:40

是 %llu 不是 %11u
页: [1]
查看完整版本: 第六课课后作业问题