回 帖 发 新 帖 刷新版面

主题:[讨论]求解题

某宾馆有100间客房,30个服务员,客房门牌按劳1—100编排。如果第一个服务员将民有的门打开 ,第二个服务员将所有门牌号是2的倍数的门关上,第三个服务员将所有门牌号是3的倍数的站打开,第四个服务员将所有门牌号是4的倍数的门关上,……问当第30个服务员如上操作后,有哪几个门是打开的,哪几个门是关闭的,打开和关闭的门又各有几个?

回复列表 (共5个回复)

沙发

做一个数组a(1)-a(100)表示门的开闭
用外循环表示三十个服务员每次的开闭门
内存环表示开启或关闭符合条件的门
最后统计数组中的结果即可

板凳

以前我做过这类题目,不守我现在在学C了,程序可能写不出来了.

3 楼

很多没有中文的DOS,所以就不用中文了,用0和1吧,0就是关闭,1就是打开。

s$=space$(100)
for i=30 to 1 step -1
    for j=i to 100 step i
        if mid$(s$,j,1)=chr$(32) then mid$(s$,j,1)=chr$(i mod 2 + 48)
next j,i
print s$

4 楼

犯错误了,我们不能过份的追求简洁,还要顾及效率,改一改:

s$=space$(100)
for i=30 to 1 step - 1
    a$=chr$(i mod 2 + 48)
    for j=i to 100 step i
        if mid$(s$,j,1)=chr$(32) then mid$(s$,j,1)=a$
next j,i
print s$

5 楼

我想知道你这个程序运行了没有呀,我怎么看不大懂呢,请你分析一下,如果可行的话,我给你多加点分。决没问题

我来回复

您尚未登录,请登录后再回复。点此登录或注册