页数:24页文件大小:177.0 KB来源: 计算机语言与程序设计ppt课件
本课件承接逻辑判断,先系统讲解逻辑与、逻辑或、逻辑非三种运算符及真值表,再以六嫌疑人案情分析为案例,把六条线索逐条翻译成CC1至CC6逻辑表达式,随后用0与1枚举六人组合、配合二维字符数组输出每个人是否为罪犯,最后给出跳水高手预测名次的课堂讨论题与一对一错的判定条件。
本页为第三讲 逻辑判断(续)章节封面,本讲以某地刑侦大队的六嫌疑人疑案为主线,讲解逻辑运算符与逻辑表达式。
某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:
要求编一程序将作案人找出来。
逻辑与的运算符为 &&。以串联开关电路比喻:A 表示开关A合上,B 表示开关B合上,A&&B 表示灯亮。
| A | B | A&&B |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 0 |
逻辑或的运算符为 ||。以并联开关电路比喻:A 或 B 任一合上,A||B 即灯亮。
| A | B | A||B |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
1 表示真,0 表示假,逻辑变量取值非真即假。
逻辑非的运算符为 !。设 A 表示A队到场、B 表示B队到场,能赛成 C = A&&B;赛不成 D = !C,则 D = !A||!B,即 A 不到场或 B 不到场球赛无法进行。
CC1:A 和 B 至少有一人作案。令变量 A 表示 A 作案、B 表示 B 作案,显然是或的关系:
CC1 = (A||B)| A | B | CC1 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
CC2:A 和 D 不可能是同案犯。可分析为:A 若是案犯则 D 一定不是(A&&(!D));D 若是案犯则 A 一定不是(D&&(!A)),两者为或的关系:
CC2 = !(A&&D)| A | D | A&&D | CC2 |
|---|---|---|---|
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
| 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 |
(A&(!B))||((!A)&&B) 称为异或运算,在数字逻辑课中有专门的表示符号,在计算机中对应二进制半加器。
CC3:A、E、F 中有两人涉嫌作案,有三种可能:
(A&&E)(A&&F)(E&&F)CC3 = (A&&E)||(A&&F)||(E&&F)| A | E | F | CC3 |
|---|---|---|---|
| 1 | 1 | 1 | 1 |
| 1 | 1 | 0 | 1 |
| 1 | 0 | 1 | 1 |
| 0 | 1 | 1 | 1 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 |
CC4:B 和 C 或同时作案,或都与本案无关,即同时作案 (B&&C) 或都无关 (!B&&!C):
CC4 = (B && C)||(!B && !C)| B | C | CC4 |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 1 |
CC5:C、D 中有且仅有一人作案,即 CC5=(C && !D)||(D && !C)。
CC6:如果 D 没有参与作案,则 E 也不可能参与作案。列出真值表归纳可得:
CC6 = D||!E| D | E | CC6 | 含义 |
|---|---|---|---|
| 1 | 1 | 1 | D作案,E也作案,可能 |
| 1 | 0 | 1 | D作案,E不作案,可能 |
| 0 | 0 | 1 | D不作案,E也不可能作案,可能 |
| 0 | 1 | 0 | D不作案,E却作案,不可能 |
至此案情分析已化成计算机可解的逻辑表达式。
采取枚举方法,枚举六个人作案与不作案的组合。6 个人每人都有作案或不作案两种可能,因此共有 26 种组合,从中挑出符合六条分析的作案者。
本页以图示方式展示六个人作案与不作案的组合枚举空间(共 26 种),源文件未给出更多文字说明。
为给出每个人是否为罪犯的信息,程序中定义了一个二维数组:
char info[2][9]={"不是罪犯","是罪犯"};info 为数组名,有两个字符串,每串最多 9-1 个英文字符,串末自动补空字符 '\0'。
'\0'在输出时用 printf("A:%s\n",info[A]);:若 A 为 0 则输出 A:不是罪犯;若 A 为 1 则输出 A:是罪犯。参考程序见 AQFX.c(案情分析)。
本页为讨论环节标题页,引出下页五位跳水高手预测名次的课堂讨论题。
五位跳水高手参加十米高台跳水决赛,五人据实力预测结果:
决赛成绩公布后每位选手的预测都只说对了一半,即一对一错,请编程解出比赛的实际名次。
== 的含义是“是”,数字 1、2、3、4、5 分别表示名次第一至第五每个人说的话一对一错,即一真一假,两个关系表达式之和必为 1,如 (B==2)+(A==3) 应为 1。归纳出五个条件:
ta=((B==2)+(A==3))==1; tb=((B==2)+(E==4))==1; tc=((C==1)+(D==2))==1; td=((C==5)+(D==3))==1; te=((E==4)+(A==1))==1;ta~te 非 1 即 0,五个条件值加在一起用于判断。
本页以图示方式给出五位选手名次枚举求解的多重循环结构,源文件未给出更多文字说明。
下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}