资源预览内容
第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
第9页 / 共31页
第10页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
计算机程序设计基础第二讲 逻辑判断1二、逻辑判断清华附中有四位同学中的一位做了好事,不留名 ,表扬信来了之后,校长问这四位是谁做的好 事。 A说:不是我。 B说:是C。 C说:是D。 D说:他胡说。 已知三个人说的是真话,一个人说的是假话。现 在要根据这些信息,找出做了好事的人。问题:谁做的好事?问题:谁做的好事?2二、逻辑判断为了解这道题,我们要学习逻辑思维与判断 ,以及如何解这类问题的思路。1、关系运算符和关系表达式 大于 =大于等于 =等于 !=不等于3二、逻辑判断请大家看如下程序 / 程序s2_1.c #include void main( ) int b,c;/ 整型变量 b=3;c=2;/ 对变量赋值 printf(“3 2 是 %dn”,(bc); / 输出逻辑值 printf(“3=2 是 %dn”,(b=c); printf(“3=2 是 %dn”,(b=c); printf(“3 2 是 1 说明3 2是真 3=2 是 13=2是真 3=2 是 03=2是假 3 关系运算符 例 bc,测试bc这种关系是否成立,成立 为真,不成立为假。成 立 关系表达式的值为1;不成立 关系表达式的值为0。6二、逻辑判断这时在内存中系统找到一个字节。让“=”的含义为“是”让“!=”的含义为“不是”下面,我们把四个人说的四句话写成关 系表达式。在声明变量时,让thisman 表示要找的人,定义它是字符变量char char thismanthisman; ;thisman地址xxxx7二、逻辑判断A说:不是我。写成关系表达式为(thisman!=A )B说:是C。 写成关系表达式为(thisman=C )C说:是D。 写成关系表达式为(thisman=D )D说:他胡说。写成关系表达式为(thisman!=D )在C语言中字符也是有数值的,这个数值就是字符 的ASCII码值字符字符A AB BC CD DASCIIASCII码值码值65656666676768688二、逻辑判断字符存放在内存中是以ASCII码的形式存放 的,因此,用赋值语句 thisman = A; thisman = 65;两者是等效的,在内存中存的都是65。 可以做实验,如下例所示thisman65地址xxxx9二、逻辑判断 / 例 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编译链接后运行,编译链接后运行, 输出结果为:输出结果为:10二、逻辑判断1、如何找到该人,一定是“先假设该人是做好事者, 然后到每句话中去测试看有几句是真话”。“有三句 是真话就确定是该人,否则换下一人再试”。 比如,先假定是A同学,让 thisman=A;代入到四句话中思路:A A说:说:thismanthisman!=A;!=A;A!=AA!=A假,值为假,值为0 0。 B B说:说:thismanthisman=C;=C;A=CA=C假,值为假,值为0 0。 C C说:说:thismanthisman=D;=D;A=DA=D假,值为假,值为0 0。 D D说:说:thismanthisman!=D;!=D;A!=DA!=D真,值为真,值为1 1。显然,不是A做的好事(四个关系表达式值的和为1) 11二、逻辑判断再试B同学,让thisman=B; 代入到四句话中思路:A A说:说:thismanthisman!=A;!=A;B!=AB!=A真,值为真,值为1 1。 B B说:说:thismanthisman=C;=C;B=CB=C假,值为假,值为0 0。 C C说:说:thismanthisman=D;=D;B=DB=D假,值为假,值为0 0。 D D说:说:thismanthisman!=D;!=D;B!=DB!=D真,值为真,值为1 1。显然,不是B所为(四个关系表达式值的和为2)12二、逻辑判断再试C同学,让thisman=C; 代入到四句话中思路:A A说:说:thismanthisman!=A;!=A;C!=AC!=A真,值为真,值为1 1。 B B说:说:thismanthisman=C;=C;C=CC=C真,值为真,值为1 1。 C C说:说:thismanthisman=D;=D;C=DC=D假,值为假,值为0 0。 D D说:说:thismanthisman!=D;!=D;C!=DC!=D真,值为真,值为1 1。显然,就是C做了好事(四个关系表达式值之和为3 )这时,我们可以理出头绪,要用所谓枚举法,一个 人一个人地去试,四句话中有三句为真,该人即所求 。13二、逻辑判断2、从编写程序的角度看,实现枚举最好用循环结构for(k=1; k/ 预编译命令,将标准输入 / 输出加到源文件中 void main( )/ 主函数 int i,sum;/ 声明i, sum为整数变量 sum=0;/ 对求和变量sum清零 for(i=1;i/ 预编译命令,将标准输入输出加入源文件 void main( )/ 主函数 / 开始 int i,j,k;/ 声明i,j,k为整型变量 long sum;/ 声明sum为长整数 sum=1;/ 对sum赋初值 for(i=10;i=1;i=i-1)/ 控制变量i初值为10,终值为1 / 循环体开始 printf(“i=%d“,i);/ 输出i的值 sum=sum*i;/ 累乘i,放入sum printf(“tsum=%dn“,sum);/ 输出累乘值for(j=1;j/预编译命令,将标准输入输出 /函数作为头文件 void main( )/主函数 /开始 int x,y; /变量x,y为整数类型 printf(“x=“); /提示信息 scanf(“%d“, /键盘输入一个整数放入x中 if(x0)y=1; /如果x0,则将1赋给y else if(x=0) y=0;/否则,如果x=0,则将0赋给y else y=-1;/否则,将-1赋给y printf(“y=%dn“,y);/输出y的值 /结束27二、逻辑判断NS图28NS图有了上述了解之后,我们来看解“谁做的好事”的 程序框图根据上述框图写出的程序见s2_7.c29#include void main()/ 主函数 int k,sum,g;/ 声明变量为整数类型 for(k=1;k 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”);/ 输出无解信息 31
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号