sophisticated 发表于 2019-1-9 10:45:56

c语言课后题求助

《带你学C带你飞》【第一季】[课后作业] S1E6:数据类型
动动手 1.舍罕王的失算 详情请见:https://fishc.com.cn/forum.php?mod=viewthread&tid=67054&extra=page%3D1%26filter%3Dtypeid%26typeid%3D570

感觉自己的程序和答案一样(反复对照了好几遍),但就是求不出最后的结果,求大佬解答{:5_111:}
我是windows环境,程序如下:

#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("这些麦子相当于%11ukg!!!\n", weight);
       
        return 0;
       
}

BngThea 发表于 2019-1-9 11:03:33

应该是内置的pow函数的参数问题
你可以这样写
temp = pow(2.0, double(i))

sophisticated 发表于 2019-1-9 11:16:19

expected expression before 'double'
刚才试了一下,编译器报错。。。
我试过参考答案可以算出,参考答案如下:
#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("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
      printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", weight);

      return 0;
}
感觉和我的是一样的。。。

爱学习的懒懒君 发表于 2019-1-9 11:24:19

20,21行你把llu写成11u了,一个是字母l,一个是数字1

sophisticated 发表于 2019-1-9 11:51:24

。。。
感谢!{:5_95:}

sophisticated 发表于 2019-1-9 11:52:11

BngThea 发表于 2019-1-9 11:03
应该是内置的pow函数的参数问题
你可以这样写
temp = pow(2.0, double(i))

感谢
页: [1]
查看完整版本: c语言课后题求助