第4章--习题解析---逻辑思维
萌到你眼炸
902次浏览
2021年01月30日 11:54
最佳经验
本文由作者推荐
鸠占鹊巢的意思-
第
4
章
习题解析
---
逻辑思维
1
.
3
个人比饭量大,每个人说了两句话。
A
说:
B
比我吃得多,
C
和我吃得一样多。
B
说:
A
比我吃得多,
A
也比
C
吃得多。
C
说:我比
B
吃得多,
B
比
A
吃得多。
事实上饭量越小的人讲对的话越多。请编程按饭量的大小输出
3
个人的顺序。
算法分析:
1
)把 每个人的饭量分别用整数
1
,
2
,
3
来表示,数字越大就表
示这个人的饭量越大,
由于题目中
A
说的话中提到了有可能两个人的
饭量相同,也就是说代表
3
个人饭量的数字有可能相等。
2
)用一 个三重循环来枚举每个人的饭量,分别用
A
,
B
,
C
表示< br>这
3
个人的饭量。将这
3
个人说的话
As
,
Bs
,
Cs
写成表达式:
As=(B>A)+(C==A)
;
Bs=(A>B)+(A>C)
;
Cs=(C>B)+(B>A)
;
3
)根据题意,饭量越小的人讲 对的话越多,也就是说,不存在两
个人,
其中一个人的饭量比另一个人小,
且说对的话 不比另一个人多。
当变量满足这个条件时,就可以输出这组解了。
①
#include
4-1--
饭量比较参考程序
②
int
main( )
③
{ int
A,B,C,as,bs,cs;
//
定义
3
个变量
,
分别表示
3
个人
④
for (A=1;A<=3;A++)
//
枚举
A
⑤
for (B=1;B<=3;B++)
//
枚举
B
⑥
for (C=1;C<=3;C++)
//
枚举
C
⑦
{ as=(B>A)+(C==A);
⑧
bs=(A>B)+(A>C);
⑨
cs=(C>B)+(B>A);
⑩
if (!((A>=B)&&(as>=bs)||(A>=C)&&(as>=cs)
⑪
||(B>=C)&&(bs>=cs)||(B>=A)&&(bs>=as)
⑫
||(C>=A)&&(cs>=as)||(C>=B)&&(cs>=bs)))
⑬
{
cout <<
⑭
cout <<
⑮
cout <<
⑯
}
//
输出结束
⑰
}
//
循环结束
⑱
return 0;
⑲
}
[
输出结果
]
:
A=3
B=1
C=2
2
.
4
名专家对
4
款赛车进行评论
A
说:
2
号赛车是最好的。
B
说:
4
号赛车是最好的。
C
说:
3
号不是最佳赛车。
D
说:
B
说错了。
事实上:只有一 款赛车最佳,
且只有一名专家说对了,其他
3
人
都说错了。请编程输出最佳车 的车号,以及哪位专家说对了。
[
算法分析
]
根据题意,只有一款赛车最佳。这就有
4
种情况,可 以枚举这
4
种情况,采用循环结构,令变量为
BestCar
,取
4
个可能的车号。
将
A
,
B
,
C
,
D
说的话与
BestCar
联 系起来,有
As=(BcstCar==2);
Bs=(BestCar==4);
Cs=(BestCar!
=
3);
Ds=(BestCar!
=
4);
根据题意,
只有一名专家说对,
因此在程序中使用如下的判定条件:
if (As+Bs+Cs+Ds==1)
即可判定
BestCar
的取值,
就是 最佳车号,
同时再测试
As
,
Bs,Cs,Ds
哪个取值为
1
,就输出该专家。
①
#include
4-2
,
最佳汽车参考程序
②
int
main( )
③
{ int
car,as,bs,cs,ds;
④
for (car=1;car<=4;car++)
//
枚举每款汽车
⑤
{ as=(car==2);
bs=(car==4); cs=(car!=3);
ds=!bs;
⑥
if (as+bs+cs+ds==1)
⑦
{
cout <<
⑧
if (as==1)
cout <<
⑨
if (bs==1)
cout <<
⑩
if (cs==1)
cout <<
⑪
if (ds==1)
cout <<
⑫
}
//
输出结束
⑬
}
//
循环结束
⑭
return 0; }
输出结果:
car
3
,
4
号专家说对了
3
.
5
位跳水高手参加
10m
高台跳水决赛,
有好 事者让
5
人据实力
预测比赛结果。
A
选手说:
B
第二,我第三;
B
选手说:我第二,
E
第四;
C
选手说:我第一,
D
第二;
D
选手说:
C
最后,我第三;
E
选手说:我第四,
A
第一;
决赛成绩公布之后,
每位选手的预测都只说对了一半,
即一对< br>一错。请编程解出比赛实际名次。
算法分析:
用变量< br>A
,
B
,
C
,
D
,
E
表示
5
个选手的排名,取值在
l
,
2
,
3
,< br>4
,
5
。
枚举每个选手的名次,这可以通过一个 五重循环来实现。根据题
意,
每个人说的话可以写成如下形式: