当前位置:文档之家› 信息学奥赛NOIP第3单元分支结构程序设计

信息学奥赛NOIP第3单元分支结构程序设计


立,就去做A事情,否则去做B事情,但是,在做A事情(
或者B事情)时,还要根据条件2是否成立,决定是做A1( 或者B1)这件子事情,还是去做A2(或者B2)这件子事 情。在程序设计中,把这种情况称为分支结构的“嵌套” ,一般用来解决三种及以上的分支情况。
高等教育出版社
信息学奥赛课课通(C++)
例1、三个数的大小比较。
高等教育出版社
信息学奥赛课课通(C++)
2. 复合语句
例3、数据交换。 【问题描述】 输入 a、b 两个整数,如果 a 大于 b,则交换 a 与 b 的值, 再输出 a 和 b 的值。 【输入格式】 一行两个整数 a、b,int 范围以内。 【输出格式】 一行两个整数,a、b 最后的值,中间空一格。 【输入样例 1】 67 【输出样例 1】 67 【输入样例 2】 10 8 【输出样例 2】 8 10
高等教育出版社
信息学奥赛课课通(C++)
实践巩固
高等教育出版社
信息学奥赛课课通(C++)
第 2 课 逻辑运算符
学习目标 1. 熟练掌握 C++ 中的逻辑运算符。 2. 熟知逻辑运算符的优先级。 3. 学会正确书写逻辑表达式。
高等教育出版社
信息学奥赛课课通(C++)
逻辑运算符
C++ 提供了 &&(逻辑与)、|| (逻辑或)和!(逻辑 非)三种逻辑运算符。其中,&& 和 || 是双目运算符,而! 是单目运算符。
//p3-3-3 #include<iostream> using namespace std; int main(){ int a,b,c; cin >> a >> b; if(a > b){ c = a; a = b; b = c; } cout << a << ” ” << b << endl; return 0; }
高等教育出版社
信息学奥赛课课通(C++)
2、整型数据也可以参与逻辑运算
整型数据在参与逻辑运算时,根据其值是 0 或非 0,分 别当作逻辑值“假”或“真”进行处理。
例2、假设变量定义为“int a=0,b=0,c=1,d=1;”,
请写出表达式 a && b || c && d的结果。
高等教育出版社
信息学奥赛课课通(C++)
高等教育出版社
信息学奥赛课课通(C++)
3、逻辑表达式是“短路计算”
在逻辑表达式的计算过程中,一旦能够确定整个表达式 的值,就会立刻停止计算。 例 4、阅读程序,写出程序的运行结果。 //p3-2-4 #include<iostream> using namespace std; int main(){ int a,b,c,d; a = 2;b = 3;c = 0; d = (a > b) && (c = 4); cout << d << ” ” << c << endl; return 0; }
高等教育出版社
信息学奥赛课课通(C++)
逻辑运算符
高等教育出版社
信息学奥赛课课通(C++)
1、逻辑运算符的优先级问题
高等教育出版社
信息学奥赛课课通(C++)
例1、写出下列语义的 C++ 表达式。
(1) 一个 0~100 之间(不包括 0 和 100)的数 a。
(2) x 大于 y 且 x 大于 z。 (3) x 是英文字母。
高等教育出版社
信息学奥赛课课通(C++)
或换成另一种形式:
//p3-3-1b #include<iostream> using namespace std; int main(){ int n,ans; cin >> n; ans = n * 300; if(n > 5) ans = n * 280; cout << ans << endl; return 0; }
信息学奥赛(C++)
第 3 单元 分支结构程序设计
信息学奥赛课课通(C++)
第1课 关系运算符
学习目标 1. 熟练掌握 C++ 中的关系运算符。 2. 熟知关系运算符和数学运算符的优先级。 3. 学会正确书写关系表达式。
高等教育出版社
信息学奥赛课课通(C++)
1. 关系运算符
C++ 提供了六种关系运算符:>(大于)、<(小于)、 >=(大于或等于)、<=(小于或等于)、==(等于)、!= (不等于)。 关系表达式的结果为逻辑值真(非0值)或假(0)。
NO
高等教育出版社
信息学奥赛课课通(C++)
【问题分析】 如果逻辑表达式“x<=y && y<=z”为真,则输出“YES”;否则,输出 “NO”。 //p3-3-2 #include<iostream> using namespace std; int main(){ int x,y,z; cin >> x >> y >> z; if(x <= y && y <= z) cout << ” YES ” << endl; else cout << ” NO ” << endl; return 0; }
【问题分析】
前面已经介绍过用逻辑表达式“x<=y &&y<=z”来表示YES” 的条件,本题也可以用 if语句的嵌套来解决,如图:
高等教育出版社
信息学奥赛课课通(C++)
//p3-4-1 #include<iostream> using namespace std; int main(){ int x,y,z; cin >> x >> y >> z; if(x <= y) if(y <= z) cout << ” YES ” << endl; else cout << ” NO ” << endl; else cout << ” NO ” << endl; return 0; }
高等教育出版社
信息学奥赛课课通(C++)
【问题分析】 交换 a 与 b 的值需要用到 3 条语句。所
以,当判断条件“a>b”成立时,需要依
次执行完这 3 条语句,这时就需要用花 括号“{}”将这 3 条语句括起来,这
些括起来的语句组合称为“复合语句”,
流程图如右图。
高等教育出版社
信息学奥赛课课通(C++)
高等教育出版社
信息学奥赛课课通(ຫໍສະໝຸດ ++)实践巩固
高等教育出版社
信息学奥赛课课通(C++)
第 3 课 if 语句
学习目标 1. 掌握 if 语句的两种格式。
2. 理解分支结构和复合语句。
3. 熟练应用 if 语句解决一些实际问题。
高等教育出版社
信息学奥赛课课通(C++)
1. if 语句
if 语句有两种格式:
高等教育出版社
信息学奥赛课课通(C++)
例3、阅读程序,写出程序的运行结果。
//p3-1-3 #include<iostream> using namespace std; int main(){ char x,y; x = ‘ m ’; y = ‘ n ’; int n; n = x < y; cout << n << endl; n = x == y - 1; cout << n << endl; n = ( ‘ y ’ != ‘ Y ’ ) + (5 > 3) + (y - x == 1); cout << n << endl; return 0; }
例3、阅读程序,写出程序的运行结果。
//p3-2-3 #include<iostream> using namespace std; int main(){ int a,b,c,d; a = 2; b = 3; c = 0; d = (a + b || c); cout << d << endl; return 0; }
(4) (x < y) >(y <= z)
高等教育出版社
信息学奥赛课课通(C++)
例2、阅读程序,写出程序的运行结果。
//p3-1-2 #include<iostream> using namespace std; int main(){ int n1 = 4,n2 = 5,n3; n3 = (n1 > n2); cout << n3 << “ , ” ; n3 = (n1 < n2); cout << n3 << “ , ” ; n3 = (n1 == 4); cout << n3 << “ , ” ; n3 = (n1 == 5); cout << n3 << endl; return 0; }
相关主题