|| 返回 || 本站首页 ||奥赛信息||计算机基础||pascal基础||数据结构||经典算法||试题汇编||校本教程||自主练习||

|| 自主练习>> 逻辑判断问题

双击自动滚屏 

   

逻辑判断问题

 

猜测产品质量评奖

【问题】5家工厂的产品在一次评比中分获1,2,3,4,5,在公布结果前,已知E

        厂产品肯定不是第二、三名,五厂代表猜测评比结果,

          A厂的代表说:E厂一定能获得第一名。

          B厂的代表说:我厂的产品可能获第二名。

          C厂的代表说:A厂的产品质量最次。

          D厂的代表说:C厂的产品不是最好的。

          E厂的代表说:D厂的产品会获得第一名。

        公布结果后,证明只有产品获第一名和第二名的两个厂的代表猜对了。

        求5个厂产品各获第几名。

【答案】         

                 

【参考程序】

      var a,b,c,d,e:byte;

      begin

           for a:=1 to 5 do

               for b:=1 to 5 do

                for c:=1 to 5 do

                  for d:=1 to 5 do begin

                       e:=15-a-b-c-d;

                      if (e<>2) and (e<>3)   and  (a*b*c*d*e=120) then

                       if(ord(e=1)+ord(b=2)+ord(a=5)+

                          ord(c<>1)+ ord(d=1)=2) and

                           (ord((e=1) and ((a=1) or (a=2)))+

                            ord((b=2) and ((b=1) or (b=2)))+

                            ord((a=5) and ((c=1) or (c=2)))+

                            ord((c<>1) and ((d=1) or (d=2)))+

                            ord((d=1) and ((e=1) or (e=2)))

                            =2)   then

                         writeln('a:',a,' b:',b,' c:',c,' d:',d,' e:',e);

                  end;

      end.

 

谁获冠军?

【问题】甲乙丙丁戊五个人在运动会上分获百米、二百米、跳高、跳远和铅球冠军,有

        四个人猜测比赛结果:

          A说:乙获铅球冠军,丁获跳高冠军。

          B说:甲获百米冠军,戊获跳远冠军。

          C说:丙获跳远冠军,丁获二百米冠军。

          D说:乙获跳高冠军,戊获铅球冠军。

        其中每个人都只说对一句,说错一句。求五人各获哪项冠军。

【算法】用1,2,3,4,5分别代表百米、二百米、跳高、跳远和铅球5个项目,用a,b,c,d,e

        分别代表五人。如b=3 表示乙获跳高冠军。用多重循环穷举出来。

【答案】甲       

               

 

【参考程序】

       var a,b,c,d,e:byte;

       begin

            for a:=1 to 5 do

                for b:=1 to 5 do

                 for c:=1 to 5 do

                   for d:=1 to 5 do begin

                       e:=15-a-b-c-d;

                       if (ord(b=5)+ord(d=3)=1) and

                          (ord(a=1)+ord(e=4)=1) and

                          (ord(c=4)+ord(d=2)=1) and

                          (ord(b=3)+ord(e=5)=1) and (a*b*c*d*e=120)  then

                          writeln('a:',a,'b:',b,'c:',c,'d:',d,'e:',e);

                   end;

       end.

 

谁是小偷?

【问题】有A、B、C、D四名偷窃嫌疑犯,其中一人是小偷,审问中,A说:“我

        不是小偷”,B说:“C是小偷”,C说:“小偷肯定是D”,D说:“C

        在冤枉人”,有三人说真话,一人说假话,问到底谁是小偷?

【参考程序】

       var thief:char;

       begin

          for thief:='A' to 'D' do

            if ord(thief<>'A')+ord(thief='C')+ord(thief='D')+

               ord(thief<>'D')=3 then  writeln('The Thief is : ',thief);

       end.


 
 

 

 
 
 

制作与维护:重庆市忠县中学 谭海