lin5720qwq 发表于 2021-1-26 20:19:39

s1e6课后作业问题

我用的kali的gcc编译,其它的都没问题,在最后一个动手时,我即使是将小甲鱼的抄下来也要这样:
见图片

风过无痕1989 发表于 2021-1-26 21:07:14

从图片上还是看不出来,你做的是哪一题,是 舍罕王的失算 吗?

lin5720qwq 发表于 2021-1-27 11:25:44

嗯,图片是编译时的报错,百度上的看不懂:)

dlrex 发表于 2021-1-28 01:27:23

本帖最后由 dlrex 于 2021-1-28 01:29 编辑

用到pow正常来说要在gcc后面加 -lm 才可以输出喔,不加的话就是你的那个结果,所以正确编译代码是gcc -lm 4.c -o 4
-lm中“-”是负号 l是L的小写

lin5720qwq 发表于 2021-1-28 13:41:04

dlrex 发表于 2021-1-28 01:27
用到pow正常来说要在gcc后面加 -lm 才可以输出喔,不加的话就是你的那个结果,所以正确编译代码是gcc -lm 4 ...

我照着样输了,但还是和图片一样

风过无痕1989 发表于 2021-1-28 13:57:04

lin5720qwq 发表于 2021-1-27 11:25
嗯,图片是编译时的报错,百度上的看不懂:)

感觉你缺少了 math.h 这个头函数及主函数 main() 的类型,系统默认其为 int 类型
#include <stdio.h>
#include <math.h>                         // 因为下面要用到 pow() 函数,math.h 就是它的头函数

int main()                                       // main() 的类型为 int
{
      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);         // pow() 函数求 2 的 i 次方
                sum = sum + temp;       // 累加每一次 i 的变化所求的值
      }

      weight = sum / 25000;         // 每 25000 颗的重量为 1 公斤

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

      return 0;
}

dlrex 发表于 2021-1-28 17:04:07

本帖最后由 dlrex 于 2021-1-28 17:05 编辑

$ gcc t5.c -o t5
/tmp/ccud7G13.o: In function `main':
t5.c:(.text+0x35): undefined reference to `pow'
collect2: ld returned 1 exit status
$ vi t5.c
$ gcc -lm t5.c -o t5 && ./t5
舍罕王应该给予达依尔18446744073709551615粒麦子!
如果每25000粒麦子为1Kg,那么应该给737869762948382公斤麦子!

你看我少了-lm 的情况 和你那个差不多一样,前提是你代码没抄错
页: [1]
查看完整版本: s1e6课后作业问题