再来一道趣味解题,望高手赐教!

airflight1981 2004-07-05 08:32:34
有1,2,3,4号码的四个运动员,在一项比赛中获得了前四名,现在知道的情况如下:
每个运动员的名次都与自己的号码不符.
第四名运动员的号码是某一名运动员的名次,而这个运动员的号码又是2号运动员的名次.3号运动员不是第一名.

请编程解决.
...全文
784 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
northwolves 2004-07-05
  • 打赏
  • 举报
回复
一般都是穷举法:

有兴趣做做下面十道题:

  1、第一个答案是b的问题是哪一个?
  (a)2;(b) 3;(c)4;(d)5;(e)6
  2、唯一的连续两个具有相同答案的问题是:
  (a)2,3;(b)3,4;(c)4,5;(d)5,6;(e)6,7;
  3、本问题答案和哪一个问题的答案相同?
  (a)1;(b)2;(c)4;(d)7;(e)6
  4、答案是a的问题的个数是:
  (a)0;(b)1;(c)2;(d)3;(e)4
  5、本问题答案和哪一个问题的答案相同?
  (a)10;(b)9;(c)8;(d)7;(e)6
  6、答案是a的问题的个数和答案是什么的问题的个数相同?
  (a)b;(b)c;(c)d;(d)e;(e)以上都不是
  7、按照字母顺序,本问题的答案和下一个问题的答案相差几个字母?
  (a)4;(b)3;(c)2;(d)1;(e)0。(注:a和b相差一个字母)
  8、答案是元音字母的问题的个数是:
  (a)2;(b)3;(c)4;(d)5;(e)6。(注:a和e是元音字母)
  9、答案是辅音字母的问题的个数是:
  (a)一个质数;(b)一个阶乘数;(c)一个平方数;(d)一个立方数,(e)5的倍数
  10、本问题的答案是:
  (a)a;(b)b;(c)c;(d)d;(e)e
airflight1981 2004-07-05
  • 打赏
  • 举报
回复
解这种题的大体思路是什么啊?
airflight1981 2004-07-05
  • 打赏
  • 举报
回复
我买的一本书上,觉得挺有意思的。高手就是高手啊!我还想问一下如过不用choose写,是不是就把(b=1 and a=4) or (b=3 and c=4)加到if语句里就行了?
northwolves 2004-07-05
  • 打赏
  • 举报
回复
temp = Choose(b, a = 4, b = 4, c = 4, d = 4) 等价于


(b=1 and a=4)or (b=2 and b=4) or (b=3 and c=4) or (b=4 and d=4)

可优化为:(b=1 and a=4) or (b=3 and c=4)


Private Sub Command1_Click()
Dim a As Integer, b As Integer, c As Integer, d As Integer
For a = 2 To 4 'skip 1
For b = 1 To 4
For c = 2 To 4 'skip 1 for not c=1
For d = 1 To 3 'skip 4
If Not (b - 2) * (c - 3) * (a - b) * (a - c) * (a - d) * (b - c) * (b - d) * (c - d) = 0 And ((b = 1 And a = 4) Or (b = 3 And c = 4)) Then MsgBox "a" & a & "b" & b & "c" & c & "d" & d
Next
Next
Next
Next
End Sub

哥们从哪搞来的这些题?
airflight1981 2004-07-05
  • 打赏
  • 举报
回复
望高手不吝赐教啊
airflight1981 2004-07-05
  • 打赏
  • 举报
回复
麻烦这为高手能不能在给小弟详细解释以下代码中choose函数的含义,因为msdn中的讲解太抽象.小弟不胜感激!
northwolves 2004-07-05
  • 打赏
  • 举报
回复
Not (b - 2) * (c - 3) * (a - b) * (a - c) * (a - d) * (b - c) * (b - d) * (c - d) = 0 表示
以下表达式均成立:

b<>2
c<>3
a,b,c,d 互不相等
northwolves 2004-07-05
  • 打赏
  • 举报
回复
Choose 函数

从参数列表中选择并返回一个值。

语法

Choose(index, choice-1[, choice-2, ... [, choice-n]])

Choose 函数的语法具有以下几个部分:

部分 描述
index 必要参数,数值表达式或字段,它的运算结果是一个数值,且界于 1 和可选择的项目数之间。
choice 必要参数,Variant 表达式,包含可选择项目的其中之一。


说明

Choose 会根据 index 的值来返回选择项列表中的某个值。如果 index 是 1,则 Choose 会返回列表中的第 1 个选择项。如果 index 是 2,则会返回列表中的第 2 个选择项,以此类推。

可以使用 Choose 来查阅一个列表中的项目。例如,如果 index 所指定的值为 3,而 choice-1 = "one"、choice-2 = "two"、且 choice-3 = "three",那么 Choose 将返回 "three"。当 index 代表一选项组中的值时,则这项功能将会特别有用。

即使它只返回一个选项值,Choose 仍然会计算列表中的每个选择项。所以应该注意到这项副作用。例如,当在每个选择项表达式中使用了 MsgBox 函数作为其中的一部分时,每计算一个选择项,就会显示一次消息框。

当 index小于 1 或大于列出的选择项数目时,Choose 函数返回 Null。

如果 index 不是整数,则会先四舍五入为与其最接近的整数。

注:CHOOSE 函数效率较低,尽量少用。


temp返回true时,表明以b的名次为号码的运动员得第4名
airflight1981 2004-07-05
  • 打赏
  • 举报
回复
If Not (b - 2) * (c - 3) * (a - b) * (a - c) * (a - d) * (b - c) * (b - d) * (c - d) = 0 And temp = True Then
能否解释一下这句
airflight1981 2004-07-05
  • 打赏
  • 举报
回复
temp返回true时是什么意思啊
northwolves 2004-07-05
  • 打赏
  • 举报
回复
Private Sub Command2_Click()
Dim temp As String, i As Integer
For i = 4 To 1 Step -1
temp = Choose(i, "a = 4", "b = 4", "c = 4", "d = 4")
MsgBox temp
Next
End Sub
airflight1981 2004-07-05
  • 打赏
  • 举报
回复
望不吝赐教
airflight1981 2004-07-05
  • 打赏
  • 举报
回复
请问chose函数的作用是什么?
northwolves 2004-07-05
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim a As Integer, b As Integer, c As Integer, d As Integer, temp As Boolean
For a = 2 To 4 'skip 1
For b = 1 To 4
For c = 2 To 4 'skip 1 for not c=1
For d = 1 To 3 'skip 4
temp = Choose(b, a = 4, b = 4, c = 4, d = 4) 'b 's rank is temp's result
If Not (b - 2) * (c - 3) * (a - b) * (a - c) * (a - d) * (b - c) * (b - d) * (c - d) = 0 And temp = True Then MsgBox "a" & a & "b" & b & "c" & c & "d" & d
Next
Next
Next
Next
End Sub
honght 2004-07-05
  • 打赏
  • 举报
回复
自己研究写出来才有乐趣吗
airflight1981 2004-07-05
  • 打赏
  • 举报
回复
请问诸位高手能把代码写出来吗?
airflight1981 2004-07-05
  • 打赏
  • 举报
回复
麻烦你把代码写出来吧,我对这个方法掌握得不是太好啊
airflight1981 2004-07-05
  • 打赏
  • 举报
回复
能不能把代码写出来,不胜感激!
victorycyz 2004-07-05
  • 打赏
  • 举报
回复

northwolves(狼行天下) 的方法确实很好。

本题也完全可以用他那个方法写,只不过类似for a=0 to 1的判断改到for a=1 to 4类推一下。
zhengoodman 2004-07-05
  • 打赏
  • 举报
回复
mark
加载更多回复(3)

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧