鱼C论坛

 找回密码
 立即注册
查看: 1331|回复: 2

[已解决]第六课课后题求助

[复制链接]
发表于 2019-1-10 20:27:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 我叫MD 于 2019-1-10 21:23 编辑

相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着 8 * 8 共 64 格的象棋说:“陛下,请您赏给我一些麦子吧。就在棋盘的第 1 格放 1 粒,第 2 格放 2 粒,第三格放 4 粒,以后每一格都比前一格增加一倍,依此放完棋盘 64 格,我就感激不尽了。”。舍罕王听了达依尔这个“小小”的要求,想都没想就满口答应下来。

结果在给达依尔麦子时舍罕惊奇地发现要给的麦子比自己想象的要多得多,于是他进行了计算,结果令他大惊失色。请问,舍罕王要兑现他的许诺共要多少粒麦子赏赐他的宰相?如果每25000粒麦子重1kg,那么舍罕王应该给予达依尔多少公斤麦子?
以上是题目,然后小甲鱼课后的代码是下面这样的
  1. #include <stdio.h>
  2. #include <math.h>

  3. int main()
  4. {
  5.         unsigned long long sum = 0;
  6.         unsigned long long temp;
  7.         unsigned long long weight;
  8.         int i;

  9.         for (i=0; i < 64; i++)
  10.         {
  11.                 temp = pow(2, i);
  12.                 sum = sum + temp;
  13.         }

  14.         weight = sum / 25000;

  15.         printf("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
  16.         printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", weight);

  17.         return 0;
  18. }
复制代码

以上是小甲鱼的代码,正常运行,然后我把定义temp变量删掉,把pow函数直接加到sum后面,变成接下来这样
  1. #include <stdio.h>
  2. #include <math.h>

  3. int main()
  4. {
  5.         unsigned long long sum = 0;
  6.         unsigned long long weight;
  7.         int i;

  8.         for (i=0; i < 64; i++)
  9.         {
  10.                 sum = sum + pow(2,i);
  11.         }

  12.         weight = sum / 25000;

  13.         printf("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
  14.         printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", weight);

  15.         return 0;
  16. }
复制代码

这样运行程序结果会变为0
1.png
然后我将64变为63,程序运行正常
2.png
为什么会这样呢?
最佳答案
2019-1-10 21:41:50
sum = sum + (unsigned long long)pow(2,i);
试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-1-10 21:41:50 | 显示全部楼层    本楼为最佳答案   
sum = sum + (unsigned long long)pow(2,i);
试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-10 22:20:18 | 显示全部楼层
ba21 发表于 2019-1-10 21:41
sum = sum + (unsigned long long)pow(2,i);
试试

可以正常显示了,能做一下解释吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 00:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表