伪代码
执行以下程序,输出值是多少?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
啥语言啊
Python nbwubo 发表于 2022-10-19 10:51
Python
那就还原代码啊,空手分析多累脑啊 wp231957 发表于 2022-10-19 11:13
那就还原代码啊,空手分析多累脑啊
还原了,有点问题,请高手还原下! 答案是 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 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 jackz007 发表于 2022-10-19 13:29
答案是 17 对吗?
答案是8 阿奇_o 发表于 2022-10-19 14:52
你这 哪里来的 // 地板除?^_ 不就是正常的 / 除法吗?
一个个 if 都要判断是否成立,若不成立且 ...
end if
b = b + a / 3
我对一行语句不理解,这个是做判断还是输出结果? 本帖最后由 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)的意思。 nbwubo 发表于 2022-10-19 15:27
end if
b = b + a / 3
不属于任何判断语句,是 单独的一句 赋值语句。 阿奇_o 发表于 2022-10-19 14:52
你这 哪里来的 // 地板除?^_ 不就是正常的 / 除法吗?
一个个 if 都要判断是否成立,若不成立且 ...
记住,凡是判断一个除法结果与另一个数相等的,那么,这个除法就必须是地板除!!! 本帖最后由 阿奇_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 它却成立了?——这不是有问题吗)
阿奇_o 发表于 2022-10-19 16:02
按你这说法,那你对比看看下面的判断:
答案是,地板除不止一个,而是全部,这是全整数运算,Ok??? jackz007 发表于 2022-10-19 15:42
这个答案就是 8,上一个代码把 a ^ b 按二进制位操作处理了,其实,应该是乘方(a ** b)的 ...
你这用的是python 代码吗
本帖最后由 jackz007 于 2022-10-19 16:24 编辑
nbwubo 发表于 2022-10-19 16:17
你这用的是python 代码吗
当然,%100 的 Python 代码!
你自己可以把代码保存后直接运行啊,像这样:
D:\\Python>python x.py
8
D:\\Python>
从屏幕上可以直接看到计算结果。 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:28
我自己敲的代码,麻烦大神看看有没有哪里有问题的,执行结果是正确的! nbwubo 发表于 2022-10-19 17:29
我自己敲的代码,麻烦大神看看有没有哪里有问题的,执行结果是正确的!
python里面一个斜杠是除法,得到的是浮点数
两个斜杠才是整除法 wp231957 发表于 2022-10-19 17:34
python里面一个斜杠是除法,得到的是浮点数
两个斜杠才是整除法
有道理,整除出来的结果清楚多了
页:
[1]