329759546 发表于 2018-8-11 10:18:10

求帮助

#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;
}





去掉unsigned long long sum = 0;和sum = sum + temp;
将sum全部改为temp变成代码


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

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

输出结果为什么小了一半

claws0n 发表于 2018-8-11 10:28:09

第二个根本就没累加呀,直接 temp = pow(2,63), weight = temp/25000

如果是要累加的话,应该是第一个
变量都叫 temp 了,temporary 暂时的

不再想起y 发表于 2018-8-11 10:31:20

unsigned long longtemp=0;//初值赋0

temp += pow(2, i);//没有加在一起

329759546 发表于 2018-8-11 10:42:09

不再想起y 发表于 2018-8-11 10:31
unsigned long longtemp=0;//初值赋0

temp += pow(2, i);//没有加在一起

这样出来输出的值为0

329759546 发表于 2018-8-11 10:42:41

claws0n 发表于 2018-8-11 10:28
第二个根本就没累加呀,直接 temp = pow(2,63), weight = temp/25000

如果是要累加的话,应该是第一个


累加怎么表示呢

claws0n 发表于 2018-8-11 11:00:16

329759546 发表于 2018-8-11 10:42
累加怎么表示呢

temp += pow(2,1);

329759546 发表于 2018-8-11 14:21:33

claws0n 发表于 2018-8-11 11:00
temp += pow(2,1);

谢谢

claws0n 发表于 2018-8-11 14:34:47

本帖最后由 claws0n 于 2018-8-11 14:36 编辑

329759546 发表于 2018-8-11 14:21
谢谢

打错了,不好意思。pow(2,i) ,变量 i 要进去才会改变

记得评选最佳答案{:10_254:}
页: [1]
查看完整版本: 求帮助