专业C10讲习题课2课件讲课资料_第1页
专业C10讲习题课2课件讲课资料_第2页
专业C10讲习题课2课件讲课资料_第3页
专业C10讲习题课2课件讲课资料_第4页
专业C10讲习题课2课件讲课资料_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

此讲的几个例题分别涉及以下知识点:逻辑关系判断及布尔变量设计函数调用循环语句及break和continue的应用第十讲习题课(2)例一、跳水高手5位跳水高手参加10米高台跳水决赛,有好事者让5人据实力预测比赛结果。 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一。决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错。请编程解出比赛的实际名次。例一、跳水高手首先,对ABCDE的名次进行全排列。可以用最笨的五重循环,但必须保证ABCDE的名次没有相同的。for(a=1;a<=5;a++)

for(b=1;b<=5;b++)

for(c=1;c<=5;c++)

for(d=1;d<=5;d++)

for(e=1;e<=5;e++)

{

if(a!=b&&a!=c&&a!=d&&a!=e)

if(b!=c&&b!=d&&b!=e)

if(c!=d&&c!=e)

if(d!=e)

……例一、跳水高手其次,分析每人说过的话,二句中一句真一句假。枚举每人的话,保证两句的真假值之和为1,而不是真假的逻辑与值为true。 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一。if((b==2)+(a==3)==1)

if((b==2)+(e==4)==1)

if((c==1)+(d==2)==1)

if((c==5)+(d==3)==1)

if((e==4)+(a==1)==1)

例一、跳水高手也可以写成: A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一。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; t=ta+tb+tc+td+te;if(t==5)cout<<…例二、行政疑案某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:A、B至少有一人作案;A、E、F三人中至少有两人参与作案;A、D不可能是同案犯;B、C或同时作案,或与本案无关;C、D中有且仅有一人作案;如果D没有参与作案,则E也不可能参与作案。试编一程序,将作案人找出来。例二、行政疑案逻辑与&&犹如一个开关电路,如图。A------表示开关A合上B------表示开关B合上A&&B表示灯亮与否A&&BABABA&&B111100010000例二、行政疑案逻辑或||的电路,如图。A------表示开关A合上B------表示开关B合上A||B表示灯亮与否ABA||B111101011000A||BAB例二、行政疑案将案情的每一条写成逻辑表达式,第一条用CC1表示,第二条用CC2表示,依次类推。CC1:A、B至少有一人作案;令A变量表示A作案

B变量表示B作案这显然是或的关系。因此CC1=A||B;ABCC1000101011111例二、行政疑案CC2:A、E、F三人中至少有两人参与作案;分析:第一种AE作案。写成A&&E

第二种AF作案。写成A&&F

第三种EF作案。写成E&&F

这三者是或的关系。因此CC2=(A&&E)||(A&&F)||(E&&F);AEFCC211111101101101110010010010000000例二、行政疑案CC2的真值表例二、行政疑案CC3:A、D不可能是同案犯;分析:A如果是案犯,则D一定不是案犯,写成A&&(!D)

D如果是案犯,则A一定不是案犯,写成D&&(!A)

这两者是或的关系。另外,AD都不是案犯。因此CC3=!(A&&D);ADA&&DCC31001111000010101例二、行政疑案CC4:B、C或同时作案,或与本案无关;分析:第一种情况,同时作案。写成B&&C

第二种情况,都与本案无关,写成!B&&!C

这两者是或的关系。因此CC4=(B&&C)||(!B&&!C);CC5:C、D中有且仅有一人作案;因此CC5=(C&&!D)||(D&&!C);例二、行政疑案CC6:如果D没有参与作案,则E也不可能参与作案;DE!ECC6含义1101D作案,E也作案可能1011D作案,E不作案可能0011D不作案,E也不可能作案可能0100D不作案,E却作案不可能DE+DE+DE=(DE+DE)+(DE+DE) =D(E+E)+E(D+D) =D+ECC6=D||!E例三、验证哥德巴赫猜想哥德巴赫猜想可表述为:a)任一不小于6之偶数,都可以表示成两个奇质数之和;b)任一不小于9之奇数,都可以表示成三个奇质数之和。欧拉也提出另一等价版本,即任一大于2的偶数都可写成两个质数之和。欧拉的命题比哥德巴赫的命题要求更高。现在通常把这两个命题统称为哥德巴赫猜想。把命题"任何一个大偶数都可以表示成为一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和"记作"a+b",哥氏猜想就是要证明"1+1"成立。1966年陈景润证明了"1+2"成立,即"任何一个大偶数都可表示成一个素数与另一个素因子不超过2个的数之和"。例三、验证哥德巴赫猜想将6~N以内的偶数分解为两个质数之和。例如38=7+31算法:设n=n1+n21、令n1=3~n/2,2、若n1是质数,则令n2=n-n1。否则n1++,再转23、若n2是质数,则分解式已找到,否则,令n1++,再转2#include<iostream>#include<cstdlib>usingnamespacestd;intmain(){

voiddivide(intn);inti,n; cout<<"请输入一个大于6的整数:"; cin>>n; if(n<6)exit(0); for(i=6;i<n+1;i+=2) divide(i); return0;}voiddivide(intn){

intIsPrime(intn);inti,m; for(i=3;i<n/2+1;i++) { if(!IsPrime(i))continue; m=n-i; if(IsPrime(m))break; } if(i>n/2) { cout<<"哥德巴赫猜想不成立"; return; } cout<<n<<"="<<i<<"+"<<m<<endl;}intIsPrime(intn){inti; for(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论