nbwubo 发表于 2022-10-19 10:41:22

伪代码

执行以下程序,输出值是多少?

a = 24 : b = 2 : c = 3
if a / c == b ^ c then
b = b * c
end if
if c + a / b > b then
a = a - b * c
end if
b = b + a / 3
if b > a + c then
b = 2 * b
else
c = a / c
end if
output a + b / c ^ 2

wp231957 发表于 2022-10-19 10:48:18

啥语言啊

nbwubo 发表于 2022-10-19 10:51:48

wp231957 发表于 2022-10-19 10:48
啥语言啊

Python

wp231957 发表于 2022-10-19 11:13:54

nbwubo 发表于 2022-10-19 10:51
Python

那就还原代码啊,空手分析多累脑啊

nbwubo 发表于 2022-10-19 11:58:57

wp231957 发表于 2022-10-19 11:13
那就还原代码啊,空手分析多累脑啊

还原了,有点问题,请高手还原下!

jackz007 发表于 2022-10-19 13:29:19

       答案是 17 对吗?
a , b , c = 24 , 2 , 3
if a // c == b ^ c : b = b * c
if c + a // b > b : a = a - b * c
b = b + a // 3
if b > a + c : b = 2 * b
else : c = a // c
print(a + b // c ^ 2)

阿奇_o 发表于 2022-10-19 14:52:58

本帖最后由 阿奇_o 于 2022-10-19 15:51 编辑

jackz007 发表于 2022-10-19 13:29
答案是 17 对吗?

你这 哪里来的 // 地板除?^_   不就是正常的 / 除法吗?
一个个 if 都要判断是否成立,若不成立且还有else就走else,没有else就结束(end if)该条件语句。
所以,就手算或心算,一个个代入值进行判断和运算,即可。

答案应该是: 18+12/6**2 = 18+1/3 = 18.33333...   

ps : 错了,我在第二个if 没乘上c,算错了 a 的值(后面的也跟着错了)。 a应该等于 a = a - b*c = 24 - 6*3 = 6
最后的结果是: 6 + 8/2**2 = 6 + 8/4 = 8

a, b, c = 24, 2, 3
if a/c == b**c:
    b = b*c

   
b
6
if c + a/b > b :# 3 + 24/6 > 6 ?
    a = a - b*c

   
a
6
b = b + a/3
b
8.0
if b > a+c :# 6 > 6+3 ?NO
    b = 2*b
else:
    c = a/c# 6/3 = 2

   
c
2.0

print(a + b/c**2)# 6 + 8/2**2 = ?
8.0

nbwubo 发表于 2022-10-19 15:26:25

jackz007 发表于 2022-10-19 13:29
答案是 17 对吗?

答案是8

nbwubo 发表于 2022-10-19 15:27:55

阿奇_o 发表于 2022-10-19 14:52
你这 哪里来的 // 地板除?^_   不就是正常的 / 除法吗?
一个个 if 都要判断是否成立,若不成立且 ...

end if
b = b + a / 3

我对一行语句不理解,这个是做判断还是输出结果?

jackz007 发表于 2022-10-19 15:42:27

本帖最后由 jackz007 于 2022-10-19 15:45 编辑

nbwubo 发表于 2022-10-19 15:26
答案是8

a , b , c = 24 , 2 , 3
if a // c == b ** c : b = b * c
if c + a // b > b : a = a - b * c
b = b + a // 3
if b > a + c : b = 2 * b
else : c = a // c
print(a + b // c ** 2)
      这个答案就是 8,上一个代码把 a ^ b 按二进制位操作处理了,其实,应该是乘方(a ** b)的意思。

阿奇_o 发表于 2022-10-19 15:48:27

nbwubo 发表于 2022-10-19 15:27
end if
b = b + a / 3



不属于任何判断语句,是 单独的一句 赋值语句。

jackz007 发表于 2022-10-19 15:53:47

阿奇_o 发表于 2022-10-19 14:52
你这 哪里来的 // 地板除?^_   不就是正常的 / 除法吗?
一个个 if 都要判断是否成立,若不成立且 ...

          记住,凡是判断一个除法结果与另一个数相等的,那么,这个除法就必须是地板除!!!

阿奇_o 发表于 2022-10-19 16:02:12

本帖最后由 阿奇_o 于 2022-10-19 16:19 编辑

jackz007 发表于 2022-10-19 15:53
记住,凡是判断一个除法结果与另一个数相等的,那么,这个除法就必须是地板除!!!

按你这说法,那你对比看看下面的判断:
8 / 4 == 2
True
8 // 4 == 2
True

7 / 4 == 1.75
True
7 // 4 == 1.75    # 若按你的说法,这里是不是应该 True ??
False

7 / 4
1.75

7 // 4
1
除法是除法,地板除是地板除,还是要分清楚的。 ^_      
(最简单的我要判断 3/2 == 1这显然不成立,但你改成地板除 3//2 == 1 它却成立了?——这不是有问题吗)


jackz007 发表于 2022-10-19 16:05:52

阿奇_o 发表于 2022-10-19 16:02
按你这说法,那你对比看看下面的判断:

          答案是,地板除不止一个,而是全部,这是全整数运算,Ok???

nbwubo 发表于 2022-10-19 16:17:49

jackz007 发表于 2022-10-19 15:42
这个答案就是 8,上一个代码把 a ^ b 按二进制位操作处理了,其实,应该是乘方(a ** b)的 ...

你这用的是python 代码吗

jackz007 发表于 2022-10-19 16:22:18

本帖最后由 jackz007 于 2022-10-19 16:24 编辑

nbwubo 发表于 2022-10-19 16:17
你这用的是python 代码吗

         当然,%100 的 Python 代码!
         你自己可以把代码保存后直接运行啊,像这样:
D:\\Python>python x.py
8

D:\\Python>
         从屏幕上可以直接看到计算结果。

nbwubo 发表于 2022-10-19 17:28:26

a, b, c = 24, 2, 3

if a/c == b**c:
    b = b * c
    print(b)
if c + a / b > b:
    a = a - b * c
    print(b)
b = b + a / 3
if b > a + c:
    b = 2 * b
    print(b)
else:
    c = a / c
    print(c)

print(a + b / c**2)

nbwubo 发表于 2022-10-19 17:29:01

nbwubo 发表于 2022-10-19 17:28


我自己敲的代码,麻烦大神看看有没有哪里有问题的,执行结果是正确的!

wp231957 发表于 2022-10-19 17:34:04

nbwubo 发表于 2022-10-19 17:29
我自己敲的代码,麻烦大神看看有没有哪里有问题的,执行结果是正确的!

python里面一个斜杠是除法,得到的是浮点数
两个斜杠才是整除法

nbwubo 发表于 2022-10-19 19:34:09

wp231957 发表于 2022-10-19 17:34
python里面一个斜杠是除法,得到的是浮点数
两个斜杠才是整除法

有道理,整除出来的结果清楚多了
页: [1]
查看完整版本: 伪代码