唐平 发表于 2017-1-16 22:06:06

请问for里面的函数这么解释 还有pow (2,i)

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

nku新手 发表于 2017-1-16 22:06:07

我看这应该是国际象棋那道题
for每循环一次,计算一下第i+1个格子的麦子数( 因为i是从0开始,0代表第1个格子,以此次类推,i=63代表第64个格子),temp负责记录(i+1)个格子的麦子数
pow(2,i)代表2的i次幂,比如第一个格子是2^0=1个麦子,第二个格子是2^1=2个麦子........
sum则是把每次计算的格子里麦子数相加,即到i+1个格子一共有多少麦子数
后面weight就是重量换算了,就不讲了
{:10_256:}{:10_256:}{:10_256:}{:10_256:}

唐平 发表于 2017-1-17 00:12:10

nku新手 发表于 2017-1-16 22:28
我看这应该是国际象棋那道题
for每循环一次,计算一下第i+1个格子的麦子数( 因为i是从0开始,0代表第1个格子 ...

weight 是不是只是一个函数名,我也可以用 abcd来代替,感谢有你{:10_256:}{:10_256:}

nku新手 发表于 2017-1-17 15:56:34

本帖最后由 nku新手 于 2017-1-17 16:01 编辑

唐平 发表于 2017-1-17 00:12
weight 是不是只是一个函数名,我也可以用 abcd来代替,感谢有你

weight只是新定义的用来计算麦子重量的变量,它只是一个值,不是函数,当然,你想用abcd来存储麦子的总重量也没问题,因为你循环只是计算了麦子数,最后要求麦子重量,这里加了个变量weight用来将数量换算成重量

如果嫌多,可以不用,直接写printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", sum/25000);

小小小小小 发表于 2017-2-2 09:38:45

新手学习中。。

mhp0114 发表于 2017-2-4 14:18:17

nku新手 发表于 2017-1-16 22:28
我看这应该是国际象棋那道题
for每循环一次,计算一下第i+1个格子的麦子数( 因为i是从0开始,0代表第1个格子 ...

正解

不如喝牛奶 发表于 2017-2-7 17:20:26

i从0至63循环共64次,麦子后一个是前一个的两倍,则应该是等比数列,第一个是1个,即2的0次方,所以i也可以看作是2的指数。temp是一个临时变量,pow(2,i)的意思是计算2的i次方并赋值给临时变量temp,最后sum是总数,每次循环算出当前格子的麦子数量并和之前的总数相加。

xiaodi 发表于 2017-2-7 20:24:10

C语言pow()函数:求x的y次方(次幂)

fishc1008 发表于 2017-2-27 21:56:46

学习学习

kai759630 发表于 2017-2-28 17:09:00

mhp0114 发表于 2017-2-4 14:18
正解

请问你有没有c语言函数库,找了好久没找到。
页: [1]
查看完整版本: 请问for里面的函数这么解释 还有pow (2,i)