计算机计算机程序设计基础第二三讲ppt课件

上传人:bin****86 文档编号:54928464 上传时间:2018-09-22 格式:PPT 页数:65 大小:1.06MB
返回 下载 相关 举报
计算机计算机程序设计基础第二三讲ppt课件_第1页
第1页 / 共65页
计算机计算机程序设计基础第二三讲ppt课件_第2页
第2页 / 共65页
计算机计算机程序设计基础第二三讲ppt课件_第3页
第3页 / 共65页
计算机计算机程序设计基础第二三讲ppt课件_第4页
第4页 / 共65页
计算机计算机程序设计基础第二三讲ppt课件_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《计算机计算机程序设计基础第二三讲ppt课件》由会员分享,可在线阅读,更多相关《计算机计算机程序设计基础第二三讲ppt课件(65页珍藏版)》请在金锄头文库上搜索。

1、1,计算机程序设计基础,第二讲 逻辑判断,2,二、逻辑判断,清华附中有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。 A说:不是我。 B说:是C。 C说:是D。 D说:他胡说。 已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。,问题:谁做的好事?,3,二、逻辑判断,为了解这道题,我们要学习逻辑思维与判断,以及如何解这类问题的思路。1、关系运算符和关系表达式 大于 = 大于等于 = 等于 != 不等于,4,二、逻辑判断,请大家看如下程序 / 程序s2_1.c #include void main( ) int b,c; / 整型变量b=

2、3;c=2; / 对变量赋值printf(“3 2 是 %dn”,(bc); / 输出逻辑值printf(“3=2 是 %dn”,(b=c); printf(“3=2 是 %dn”,(b=c);printf(“3 2 是 %dn”,(b 2 是 1 说明 3 2 是真3=2 是 1 3=2 是真3=2 是 0 3=2 是假3 2 是 0 3c,测试bc这种关系是否成立,成立为真,不成立为假。成 立 关系表达式的值为1; 不成立 关系表达式的值为0。,7,二、逻辑判断,这时在内存中系统找到一个字节。 让“=”的含义为“是” 让“!=”的含义为“不是”,下面,我们把四个人说的四句话写成关系表达式。

3、在声明变量时,让thisman表示要找的人,定义他是字符变量,char thisman;,Thisman地址xxxx,8,二、逻辑判断,A说:不是我。写成关系表达式为(thisman!=A) B说:是C。 写成关系表达式为(thisman=C) C说:是D。 写成关系表达式为(thisman=D) D说:他胡说。写成关系表达式为(thisman!=D)在C语言中字符也是有数值的,这个数值就是字符的ASCII码值,字符 A B C D ASCII码值 65 66 67 68,9,二、逻辑判断,字符存放在内存中是以ASCII码的形式存放的,因此,用赋值语句 thisman = A; thisman

4、 = 65; 两者是等效的,在内存中存的都是65。 可以做实验,如下例所示,Thisman65 地址xxxx,10,二、逻辑判断,/ 例 s2_2.c #include / 包含头文件 void main( ) / 主函数 char thisman; / 声明字符变量thisman=A; / thisman 赋值为Aprintf(“thisman=%cn”,thisman); / 输出thisman的值printf(“ 65=A -取值为%dn”,65=A); / 验证/ 65是否等于A,并输出结果 ,thisman=A 65=A-取值为1,编译链接后运行,输出结果为:,11,二、逻辑判断,1

5、、如何找到该人,一定是“先假设该人是做好事者,然后到每句话中去测试看有几句是真话”。“有三句是真话就确定是该人,否则换下一人再试”。 比如,先假定是A同学,让 thisman=A; 代入到四句话中,思路:,A说:thisman!=A; A!=A 假,值为0。 B说:thisman=C; A=C 假,值为0。 C说:thisman=D; A=D 假,值为0。 D说:thisman!=D; A!=D 真,值为1。,显然,不是A做的好事(四个关系表达式值的和为1),12,二、逻辑判断,再试B同学,让thisman=B; 代入到四句话中,思路:,A说:thisman!=A; B!=A 真,值为1。 B

6、说:thisman=C; B=C 假,值为0。 C说:thisman=D; B=D 假,值为0。 D说:thisman!=D; B!=D 真,值为1。,显然,不是B所为(四个关系表达式值的和为2),13,二、逻辑判断,再试C同学,让thisman=C; 代入到四句话中,思路:,A说:thisman!=A; C!=A 真,值为1。 B说:thisman=C; C=C 真,值为1。 C说:thisman=D; C=D 假,值为0。 D说:thisman!=D; C!=D 真,值为1。,显然,就是C做了好事(四个关系表达式值之和为3)这时,我们可以理出头绪,要用所谓枚举法,一个人一个人地去试,四句话

7、中有三句为真,该人即所求。,14,二、逻辑判断,2、从编写程序的角度看,实现枚举最好用循环结构for(k=1; k=4; k=k+1) / 循环体,开始thisman = 64+k; / 产生被试者,依次给/ thisman赋值为A,B,C,Dsum = (thisman!=A)+ / A的话是否为真(thisman=C)+ / B的话是否为真(thisman=D)+ / C的话是否为真(thisman!=D); / D的话是否为真 / 循环体,结束,15,二、逻辑判断,我们可以抽象画出下图来表示循环结构 for (表达式1;表达式2;表达式3) 循环体语句 表达式1初始化工作,只做一次 表达

8、式2进入循环体的条件,成立则进入 表达式3每次循环结束所做的工作,16,二、逻辑判断,17,二、逻辑判断,#include / 预编译命令,将标准输入/ 输出加到源文件中 void main( ) / 主函数 int i,sum; / 声明i, sum为整数变量sum=0; / 对求和变量sum清零for(i=1;i=100;i=i+1) / 循环sum=sum+i; / 累加求和printf(“sum=%dn”,sum); / 输出累加结果 ,举例:求自然数1100之和(s2_3.c),18,二、逻辑判断,可以改变表达式,看看运行结果。 比如: for (i=1; i=1000; i=i+2

9、)为了能够看清每一步,将程序改造为s2_4.c,19,二、逻辑判断,/ s2_4.c (110的和) for(i=1; i=10; i=i+1) / 控制变量i初值为1,终值为10 printf(“i=%d“,i); / 输出i的值sum=sum+i; / 累加 i 到 sum 中printf(“tsum=%dn“,sum);/ t跳到下一个Tab位置for(j=1;j=5500;j=j+1) / 延时for(k=1;k=1;i=i-1) / 控制变量i初值为10,终值为1 / 循环体开始printf(“i=%d“,i); / 输出i的值sum=sum*i; / 累乘i,放入sumprintf

10、(“tsum=%dn“,sum); / 输出累乘值for(j=1;j=5500;j=j+1) / 延时for(k=1;k=10000;k=k+1); / 延时printf(“sum=%dn”,sum); / 输出最终结果 ,例:计算10!(s2_5.c),21,二、逻辑判断,从以上这两个例子可以看出for循环是一种计数型循环,可以递增,也可以递减,使用起来很方便。一般用在已知循环次数的情况下使用。for循环的NS图,22,二、逻辑判断,if (sum = 3) printf(“This man is %cn“,thisman);g=1; 读作:如果sum真的为3时,做下面两件事 (1)输出做好

11、事的人; (2)将有解标志置1。 其中(sum=)为条件判断语句,根据其真假使程序分支。,分支语句,23,二、逻辑判断,NS图为,24,二、逻辑判断,一般格式1 if (表达式)语句1; / 语句1,只一句 如果表达式为真,执行语句1;否则什么都不做2 if (表达式)语句块1;如果表达式为真,做语句块1的内容;否则什么都不做;,25,二、逻辑判断,一般格式3 if (表达式) 语句1;else 语句2;如果表达式为真,执行语句1;否则执行语句24 if (表达式)语句块1;else语句块1;,26,二、逻辑判断,举例:实现如图函数,27,二、逻辑判断,/ s2_6.c #include /预

12、编译命令,将标准输入输出/函数作为头文件 void main( ) /主函数 /开始int x,y; /变量x,y为整数类型 printf(“x=“); /提示信息scanf(“%d“, /输出y的值 /结束,28,二、逻辑判断,NS图,29,NS图,有了上述了解之后,我们来看解“谁做的好事”的程序框图,根据上述框图写出的程序见s2_7.c,30,#include void main() / 主函数 int k,sum,g; / 声明变量为整数类型for(k=1;k=4;k=k+1) / 循环从k为1到4, / k取1,2,3,4分别代表A,B,C,D / 循环,开始sum=0; / 初始化,

13、置0if (k!=1) sum=sum+1; / A说的话,如为真,则令sum加1;if (k=3) sum=sum+1; / B说的话,如为真,则令sum加1;if (k=4) sum=sum+1; / C说的话,如为真,则令sum加1;if (k!=4) sum=sum+1; / D说的话,如为真,则令sum加1;if (sum=3) / 若有三句话为真话,则做下列两件事printf(“This man is %cn”,64+k); / 输出g=1; / 让有解标志置1if (g!=1) printf(“Cant found!”); / 如g不为1,则输出无解信息 ,讨论:下面这个程序行不

14、行,从思路上讨论,31,二、逻辑判断,上述程序可以简化为: #include void main( ) int k, g; / 声明变量为整数类型for (k=1; k=4; k=k+1) / 这里k既为循环控制变量, / 也表示第k个人if (k!=1)+(k=3)+(k=4)+(k!=4)=3) / 如果4句话有3句为真,则输出该人printf(“Thisman is %cn”,64+k);g=1;if (g!=1) printf(“Cant found!n”); / 输出无解信息 ,32,二、逻辑判断,大家参与讨论的题,五位跳水高手将参加十米高台跳水决赛,有好事者让五个人据实力预测比赛结果。A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错,请编程解出比赛的实际名次。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号