老师好:

   请问能讲解一下题集3第三问的题意吗?我分别用递归和循环写了代码,结果都不能拿满分,不知道问题在哪里。

    更正:经过尝试,题目要求的是A1 + A2 + A3... + An

Comments  

# shixiaoyu 2021-10-16 11:33
https://onlinegdb.com/gMUvGtQk- 这是代码
如果把result和x的初始化那两行删掉答案就会出错,但为什么系统不会自动初始化为0呢
# yuanyuan 2021-10-16 11:45
Quoting shixiaoyu:
https://onlinegdb.com/gMUvGtQk- 这是代码
如果把result和x的初始化那两行删掉答案就会出错,但为什么系统不会自动初始化为0呢

我理解的是当你将变量赋值的时候,对应变量所在内存会变成你给定数值的二进制表示方式。eg. a = 0; -> 00000000。 而你定义变量的时候C只会在内存中给这两个变量分别分配两个字节,而并没有变动内存里的内容。这样你直接输出变量而不赋值的时候会输出内存里原来的内容,出现“垃圾值”的情况。

再看到你代码的22行:
x=x+i*(i-1)*(i-2);
因为你没有给x赋值,所以等号右边的x计算的时候是一个垃圾值,因此答案会错。
# Moderator 2021-10-16 12:14
为什么要求系统给你初始化?

为什么初始化为0,不是初始化为1,或-1呢?
+1 # Moderator 2021-10-12 20:27
嗯,请大家注意认证审题。

还有,大家在提交前,为啥不用样例测试一下呢?
+1 # Moderator 2021-10-12 17:59
看看其他同学的意见。

看到有同学得了80分的。
+1 # Moderator 2021-10-12 20:40
得80分的那位同学,如何用我给大家准备的在线CS50IDE上测试一下样例,就能知道为啥出错了。

You have no rights to post comments