turbo pascal ```求救..高手进
1、甲乙丙丁戊五个人在运动会上分获百米、二百米、跳高、跳远和铅球冠军,有四个人猜测比赛结果:A说:乙获铅球冠军,丁获跳高冠军。B说:甲获百米冠军,戊获跳远冠军。C说:丙获...
1、甲乙丙丁戊五个人在运动会上分获百米、二百米、跳高、跳远和铅球冠军,有四个人猜测比赛结果:
A说:乙获铅球冠军,丁获跳高冠军。
B说:甲获百米冠军,戊获跳远冠军。
C说:丙获跳远冠军,丁获二百米冠军。
D说:乙获跳高冠军,戊获铅球冠军。
其中每个人都只说对一句,说错一句。求五人各获哪项冠军。 展开
A说:乙获铅球冠军,丁获跳高冠军。
B说:甲获百米冠军,戊获跳远冠军。
C说:丙获跳远冠军,丁获二百米冠军。
D说:乙获跳高冠军,戊获铅球冠军。
其中每个人都只说对一句,说错一句。求五人各获哪项冠军。 展开
展开全部
Private Sub Command1_Click()
Dim z As Integer
Dim A1 As Boolean 'A说的第一句话
Dim A2 As Boolean 'A说的第二句话
Dim B1 As Boolean 'B说的第一句话
Dim B2 As Boolean 'B说的第二句话
Dim C1 As Boolean 'C说的第一句话
Dim C2 As Boolean 'C说的第二句话
Dim D1 As Boolean 'D说的第一句话
Dim D2 As Boolean 'D说的第二句话
Dim Flag As Boolean
For z = 0 To 255
Flag = False
A1 = (z And 128) / 128
A2 = (z And 64) / 64
B1 = (z And 32) / 32
B2 = (z And 16) / 16
C1 = (z And 8) / 8
C2 = (z And 4) / 4
D1 = (z And 2) / 2
D2 = (z And 1) / 1
If A1 + A2 = 0 Then Flag = 1 '每个人说得不能全是假话
If B1 + B2 = 0 Then Flag = 1
If C1 + C2 = 0 Then Flag = 1
If D1 + D2 = 0 Then Flag = 1
If A1 * A2 = 1 Then Flag = 1 '每个人只能说一句真话
If B1 * B2 = 1 Then Flag = 1
If C1 * C2 = 1 Then Flag = 1
If D1 * D2 = 1 Then Flag = 1
If A1 * D1 = 1 Then Flag = 1 '每名运动员只能获得一项冠军
If A2 * C2 = 1 Then Flag = 1
If B2 * D2 = 1 Then Flag = 1
If A1 * D2 = 1 Then Flag = 1 '每个项目只能有一个冠军
If A2 * D1 = 1 Then Flag = 1
If B2 * C1 = 1 Then Flag = 1
If Flag = 0 Then Text1.Text = z
Next z
End Sub
通过上面的程序,可以求得z的值是105,对应的二进制为01101001
这样便知A说的第二句话,B说的第一句话,C说的第一句话,D说的第二句话是真话
对应的冠军是
丁获跳高冠军
甲获百米冠军
丙获跳远冠军
戊获铅球冠军
最后剩下的乙获二百米冠军
Dim z As Integer
Dim A1 As Boolean 'A说的第一句话
Dim A2 As Boolean 'A说的第二句话
Dim B1 As Boolean 'B说的第一句话
Dim B2 As Boolean 'B说的第二句话
Dim C1 As Boolean 'C说的第一句话
Dim C2 As Boolean 'C说的第二句话
Dim D1 As Boolean 'D说的第一句话
Dim D2 As Boolean 'D说的第二句话
Dim Flag As Boolean
For z = 0 To 255
Flag = False
A1 = (z And 128) / 128
A2 = (z And 64) / 64
B1 = (z And 32) / 32
B2 = (z And 16) / 16
C1 = (z And 8) / 8
C2 = (z And 4) / 4
D1 = (z And 2) / 2
D2 = (z And 1) / 1
If A1 + A2 = 0 Then Flag = 1 '每个人说得不能全是假话
If B1 + B2 = 0 Then Flag = 1
If C1 + C2 = 0 Then Flag = 1
If D1 + D2 = 0 Then Flag = 1
If A1 * A2 = 1 Then Flag = 1 '每个人只能说一句真话
If B1 * B2 = 1 Then Flag = 1
If C1 * C2 = 1 Then Flag = 1
If D1 * D2 = 1 Then Flag = 1
If A1 * D1 = 1 Then Flag = 1 '每名运动员只能获得一项冠军
If A2 * C2 = 1 Then Flag = 1
If B2 * D2 = 1 Then Flag = 1
If A1 * D2 = 1 Then Flag = 1 '每个项目只能有一个冠军
If A2 * D1 = 1 Then Flag = 1
If B2 * C1 = 1 Then Flag = 1
If Flag = 0 Then Text1.Text = z
Next z
End Sub
通过上面的程序,可以求得z的值是105,对应的二进制为01101001
这样便知A说的第二句话,B说的第一句话,C说的第一句话,D说的第二句话是真话
对应的冠军是
丁获跳高冠军
甲获百米冠军
丙获跳远冠军
戊获铅球冠军
最后剩下的乙获二百米冠军
参考资料: http://www.programfan.com/club/showtxt.asp?id=90952
展开全部
program Champions;
var a1,a2,a3,a4,a5:integer;
sum:integer;
function intToStr(s:integer):string;
var x:string;
begin
case s of
1:x:='Jia';
2:x:='Yi';
3:x:='Bing';
4:x:='Ding';
5:x:='Wu';
end;
intToStr:=x;
end;
procedure PrintResult;
begin
writeln('Answer #',sum,':');
writeln('100m:',intToStr(a1));
writeln('200m:',intToStr(a2));
writeln('TiaoGao:',intToStr(a3));
writeln('TiaoYuan:',intToStr(a4));
writeln('QianQiu:',intToStr(a5));
writeln;
end;
begin
sum:=0;
for a1:=1 to 5 do
for a2:=1 to 5 do
for a3:=1 to 5 do
for a4:=1 to 5 do
for a5:=1 to 5 do begin
if [a1,a2,a3,a4,a5]=[1..5] then
if ((a5=2) xor (a3=4)) and
((a1=1) xor (a4=5)) and
((a4=3) xor (a2=4)) and
((a3=2) xor (a5=5)) then begin
inc(sum);
PrintResult;
end;
end;
end.
----------------------------------
晕,竟然只有一组解||||||
var a1,a2,a3,a4,a5:integer;
sum:integer;
function intToStr(s:integer):string;
var x:string;
begin
case s of
1:x:='Jia';
2:x:='Yi';
3:x:='Bing';
4:x:='Ding';
5:x:='Wu';
end;
intToStr:=x;
end;
procedure PrintResult;
begin
writeln('Answer #',sum,':');
writeln('100m:',intToStr(a1));
writeln('200m:',intToStr(a2));
writeln('TiaoGao:',intToStr(a3));
writeln('TiaoYuan:',intToStr(a4));
writeln('QianQiu:',intToStr(a5));
writeln;
end;
begin
sum:=0;
for a1:=1 to 5 do
for a2:=1 to 5 do
for a3:=1 to 5 do
for a4:=1 to 5 do
for a5:=1 to 5 do begin
if [a1,a2,a3,a4,a5]=[1..5] then
if ((a5=2) xor (a3=4)) and
((a1=1) xor (a4=5)) and
((a4=3) xor (a2=4)) and
((a3=2) xor (a5=5)) then begin
inc(sum);
PrintResult;
end;
end;
end.
----------------------------------
晕,竟然只有一组解||||||
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么Easy的题还问?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
????
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询