1、 初始时初始时 sum=1 10 9 8 7 6 5 4 3 2 1 Sum*10 Sum*9 Sum*8 Sum*1 Sum Sum for(i=1;i0 y=0 y=-1 y=1 x=0 是是 否否 是是 否否 x0 y=0 y=-1 y=1 x=0 提示提示和和输入整数输入整数 x 输出输出 y 有了上述了解之后,我们来看解有了上述了解之后,我们来看解“谁做的好事谁做的好事”的程序框图的程序框图fo r(k=1;k =4;k=k+1)假假 真真 g !=1 su m =3 被被 试试 者者 th ism a n =6 4+k;su m =(被被 试试 者者th ism a n !=A)+
2、(被被 试试 者者th ism a n =C)+(被被 试试 者者th ism a n =D)+(被被 试试 者者th ism a n !=D);假假 真真 输输 出出 该该 被被 试试 者者;有有 解解 标标 志志g g=1 1;输输 出出 无无 解解 信信 息息;现在我们来分析现在我们来分析“谁做的好事谁做的好事”的的NS流程图。流程图。它是由两大块组成的,如图它是由两大块组成的,如图3.8循环体循环体for(k=1;k=4;k+)语句语句1;1;第一块第一块循环结构循环结构第二块第二块分支结构分支结构我们讲这一段是希望你掌握我们讲这一段是希望你掌握NS图,这对今后图,这对今后的学习会有好
3、处。按照程序框图很容易写出程序的学习会有好处。按照程序框图很容易写出程序(如下页所示)(如下页所示)thisman=64+k;sum=(thisman!=A)+(thisman=C)+(thisman=D)+(thisman!=D);sum=3真真假假输出该被测试者;输出该被测试者;有解标志置有解标志置1 1;逻辑表达式逻辑表达式 B A A&B 1 1 表示真,表示真,0 0 表示假,表示假,这是逻辑变量的取值,非真即假这是逻辑变量的取值,非真即假 B A A|B 1 1 表示真,表示真,0 0 表示假表示假思路:思路:()()()()DEDEDEDEDEDEDED EEE DDDECC6=
4、D|!E以上是案情分析,已经化成了计算机可解的逻辑表达式以上是案情分析,已经化成了计算机可解的逻辑表达式DDEE62 输输 出出 CC1+CC2+CC3+CC4+CC5+CC6=6 假假 真真 CC1=A|B;CC2=!(A&D);CC3=(A&E)|(A&F)|(E&F);CC4=(B&C)|(!B&!C);CC5=(C&!D)|(D&!C);CC6=D|(!E);for(F=0;F=1;F=F+1)for(E=0;E=1;E=E+1)for(D=0;D=1;D=D+1)for(C=0;C=1;C=C+1)for(B=0;B=1;B=B+1)for(A=0;A=1;A=A+1)为了给出每个人
5、是否为罪犯的信息,程序中定义为了给出每个人是否为罪犯的信息,程序中定义了一个了一个二维数组二维数组。char info29=“不是罪犯不是罪犯”,“是罪犯是罪犯”;有两个字串每串最多有91个英文字符info为数组名char 是说,是说,info 数组的元素为字符,数组的元素为字符,2为下标,表为下标,表示有两个字符串,每个字符串最多有示有两个字符串,每个字符串最多有91个字符。个字符。因为英文字符占一个字节,而汉字占两个字节,故四因为英文字符占一个字节,而汉字占两个字节,故四个汉字要占个汉字要占 8 个英文字符的地方。个英文字符的地方。每一字串后面自动跟一个空字符每一字串后面自动跟一个空字符0
6、因此可以看出:因此可以看出:第第 0 号字符串号字符串 info0 的内容为的内容为“不是罪犯不是罪犯”。第第 1 号字符串号字符串 info1 的内容为的内容为“是罪犯是罪犯”。在输出时用在输出时用cout“A:”infoA endl;如果如果A为为0,则输出,则输出 A:不是罪犯不是罪犯如果如果A为为1,则输出,则输出 A:是罪犯是罪犯参考程序参考程序 4_1.cpp(案情分析)(案情分析)讨讨 论论五位跳水高手将参加十米高台跳水决赛,有好事五位跳水高手将参加十米高台跳水决赛,有好事者让五个人据实力预测比赛结果。者让五个人据实力预测比赛结果。A选手说:选手说:B第二,我第三;第二,我第三;
7、B选手说:我第二,选手说:我第二,E第四;第四;C选手说:我第一,选手说:我第一,D第二;第二;D选手说:选手说:C最后,我第三;最后,我第三;E选手说:我第四,选手说:我第四,A第一第一;决赛成绩公布之后,每位选手的预测都只说对了决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错,请编程解出比赛的实际名次。一半,即一对一错,请编程解出比赛的实际名次。1、首先是将五个人的预测写成逻辑表达式:、首先是将五个人的预测写成逻辑表达式:让关系运算符让关系运算符“=”的含义是的含义是“是是”。让数字让数字 1、2、3、4、5 分别表示分别表示名次名次第一、第二,第一、第二,第五第五。让整型变量让
8、整型变量 A、B、C、D、E 分别表示每个选手所得分别表示每个选手所得名次。名次。A选手说:选手说:B=2,A=3;B选手说:选手说:B=2,E=4;C选手说:选手说:C=1,D=2;D选手说:选手说:C=5,D=3;E选手说:选手说:E=4,A=1;2、考虑到每个人说的话是一对一错,、考虑到每个人说的话是一对一错,即一真一假,比如即一真一假,比如A说的说的 (B=2)+(A=3)应该是应该是 1 1 +0 =1 0 +1 =1 05tatbtctdte3、只有等于、只有等于5 时才都符合每个人所说的话,这仅只时才都符合每个人所说的话,这仅只是符合题意的一个必要条件,同时还得考虑是符合题意的一
9、个必要条件,同时还得考虑 A、B、C、D、E 的取值不得有相同者的取值不得有相同者,1,2,3,4,5A B CDEABCDE且可以考虑可以考虑*120A B CDE 是一个条件是一个条件4、仍然可以用枚举的方法,让变量、仍然可以用枚举的方法,让变量A、B、C、D、E 在在 15 中取值,形成满足上述条件的中取值,形成满足上述条件的 AE 的组合,即是所求。这时可用循环结构,的组合,即是所求。这时可用循环结构,如下所示如下所示 输输 出出 A A,B B,C C,D D,E E t=5 假假 真真 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;假假 真真 A*B*C*D*E=120 E=15-(A+B+C+D);f fo or r(D D=1 1;D D=5 5;D D=D D+1 1)f fo or r(C C=1 1;C C=5 5;C C=C C+1 1)f fo or r(B B=1 1;B B=5 5;B B=B B+1 1)f fo or r(A A=1 1;A A=5 5;A A=A A+1 1)
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。