NOIP信奥入门初阶第4课

NOIP信奥入门初阶第4课

01 逻辑值、逻辑运算

在学习分支结构 if 语句前,我们先来做点准备工作,认识一下什么是逻辑值,逻辑值是如何来的,逻辑值要如何运算。

在C++程序中,逻辑值有两个:真(true/1)和假(false/0),那么这个真假是如何得来的呢?

举个生活中简单的例子:小明半期数学考试得了100分,小红只得到80分。那么

问题1:小明半期数学分数比小红高(很显然,这个问题是对的,所以逻辑值就是真(true/1))

问题2:小明半期数学分数和小红一样(很显然,这个问题是错的,所以逻辑值就是假(false/0))

问题3:小明半期数学分数比小红低(很显然,这个问题是错的,所以逻辑值就是假(true/1))

其实逻辑就是人们对客观事件发生的思维规律,只有对错,即真假。

练习题

假设整型变量a=3,b=3,c=10;请计算下列表达式的逻辑值

(1)a>b (2)b<c

(3)c<20 (4)b>c-a

(5)c>a+b (6)c-b>a-c

答案:0 1 1 0 1 1

除了表达式的值,C++还有一种类型的变量是用来存放逻辑值的,它就是布尔变量(bool)。

布尔变量可以直接存放 1 , 0,也可以存放 true 和 false .

例如:

bool x , y ; // 定义两个布尔变量 x 和 y

x=1 ; y=false ; // 赋值 x 为真,赋值 y 为假

在生活中往往也会遇到对于某个时间的判断必须依靠两个条件或者多个条件来确定的。例如:

半期考试前韩梅梅妈妈告诉韩梅梅:如果本次考试你能数学,英语都上90分,就奖励一台笔记本电脑;如果只有一门上90分,就奖励一台IPOD;如果都没上90分,就没有奖励。对于这个问题最后的逻辑怎么判断呢?这就要用到逻辑运算了。

很显然,要想判断韩梅梅最后能得到什么样的奖励,必须依靠数学和英语成绩两个条件来综合考量

第一种可能结果:

数学上90分,英语也上90分<获得笔记本电脑>

第二种可能结果:

数学没上90分,英语上90分<获得IPOD>

第三种可能结果:

数学上90分,英语没上90分<获得IPOD>

第四种可能结果:

数学没上90分,英语没上90分<没有奖励>

逻辑运算包括三种:非运算(!),与运算(&&)和或运算(||)

非运算规则:单目运算,参与运算量为真,结果为假;参与运算量为假,结果为真;

与运算规则:双目运算,参与运算的两个量都为真时,结果才为真,否则为假;

或运算规则:双目运算,参与运算的两个量只要有一个为真,结果就为真,两个量都为假时,结果也为假。

请根据上述规则完成下表:

NOIP信奥入门初阶第4课

NOIP信奥入门初阶第4课

在做逻辑运算时要注意运算的优先级别:

算术运算 > 关系运算 > 逻辑运算 > 赋值运算

特别的,逻辑运算中优先级:

非运算 > 与运算 > 或运算

练习题

a1、a2、a3的布尔值分别是:true、false、false

(1)!a1 && ! a2 逻辑值是:

(2)a1 || a2 && a3 逻辑值是:

(3)( ! a1 || a2 ) && ( a2 || a3 ) 逻辑值是:

答案:0 1 0

综合练习

若a=true , b=false , x=7 , y=12 , m=3 , n=35 , 求下列表达式的值

(1)a && ! ( m>n ) && ( x<y-m ) || ( a || b )

逻辑值:_________ ;

(2)b || a && m>n || ( x-y>n ) && ! a || ( y==x)

逻辑值:_________ ;

答案:1 0

02 if 语句

单分支 if 语句

格式:

if (条件表达式)

语句1;

流程图:

NOIP信奥入门初阶第4课

执行过程:

如果条件表达式的值为真,即条件成立,语句1将被执行 。

否则,语句1将被忽略(不被执行),程序将按顺序执行if语句的下一条语句 。

【特别注意】

1) 若条件成立时,要执行多条语句,我们必须把这些语句括在一对括号内,我们称这种形式为语句块或符合语句 。

2) 程序书写时,左右花括号要对齐,组成的复合语句块各语句要相对花括号 缩进一层并对齐 。

课堂练习

读入一个整数,如果该整数是奇数,请在屏幕上输出“no”

NOIP信奥入门初阶第4课

NOIP信奥入门初阶第4课

特别注意:

1. 在表达式中表示逻辑“等于”,用“==”表示

2. 注意上述两个程序的第 7 行,两种逻辑表达式都是可以的。

课堂练习

读入一个整数,如果该整数小于1,或者大于100,请输出“no”

NOIP信奥入门初阶第4课

上机练习:

一本通题库 1039 1040 1041 1043 1044

双分支 if-else 语句

格式:

if (条件表达式)

语句1;

else

语句2;

流程图:

NOIP信奥入门初阶第4课

执行过程:

如果(条件表达式)的值为真,即条件成立,则执行语句1;

如果(条件表达式)的值为假,即条件不成立,那么跳过语句1,选择则执行语句2;

【特别注意】

1. 如果双分支结构中每一个分支都是复合语句,需要使用一对花括号括起来。

2. 程序书写风格上,if和else要对齐,而分支的语句部分要缩进两格。

例题1

输入一个整数,判断其是否能整除5,如果可以输出“yes”,否则输出“no”

NOIP信奥入门初阶第4课

注意第 7 行和第 9 行,要对齐。每个分支执行的语句要往里缩进

例题2

输入两个整数,请输出其中较大的数

NOIP信奥入门初阶第4课

特别说明:相等时,输出 a 和 b 均可,所以上述程序能正确输出结果。

上机练习:一本通题库 1045 1046 1047 1048

03 第3课上机练习参考代码

NOIP信奥入门初阶第4课

NOIP信奥入门初阶第4课

NOIP信奥入门初阶第4课

NOIP信奥入门初阶第4课

NOIP信奥入门初阶第4课

NOIP信奥入门初阶第4课

NOIP信奥入门初阶第4课

NOIP信奥入门初阶第4课

NOIP信奥入门初阶第4课

编者语

信奥需要长期的学习过程,即使现在不太明白,随着年纪的增加,一定有拨云见日的时候。请一定要坚持,不要半途而废。

【本人学疏才浅】

【如有谬误之处还望读者不吝留言批评指正】