PASCAL数组题.帮我看看程序

来源:百度知道 编辑:UC知道 时间:2024/05/21 13:28:42
旅馆里有一百个房间,从1到100编了号,第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”……,以后都是如此。问第100个服务员来过后,哪几扇门是打开的。

program baimenbaikai;
var
a:array[1..100] of integer;
i,j:integer;

begin
for i:=1 to 100 do
a[i]:=0;

for i:=2 to 100 do
begin
for j:=1 to 100 do
if (j mod i=0) then
begin
if (a[i]=0) then
begin
a[i]:=1;
end
else
begin
a[i]:=0;
end
end;

end;
for i:=1 to 100 do
if a[i]=0 then
writeln(a[i],'');
readln;
end.

每次都inc一下 最后mod 就只有0 和1 两种状态了

兄弟,我有一段时间没用DELPHI了,都快忘了,我把VB的代码给你看看,希望你能看懂吧

Sub test()
Dim a As Integer
Dim i As Integer

Dim myarray(1 To 100) As Boolean

For i = 1 To 100

a = 100 \ i ’求出有多少个倍数
For y = 1 To a

myarray(y * i) = Not myarray(y * i) ’相对应的值取反
Next

Next

For i = 1 To 100
If myarray(i) = True Then ’遍历数组,如果是真的话。。。

Debug.Print i
End If
Next

End Sub

答案是:
1
4
9
16
25
36
49
64
81
100

思路就是这样,你自己调整一下吧