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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一种格式为:
if (表达式) 语句1; else 语句2;
第二种格式为: if (表达式) 语句 ;
高等教育出版社
信息学奥赛课课通(C++)
例1、旅游费用。
【问题描述】 风华公司“南京一日游”的收费标准为:5 人以内(含 5 人) 按散客标准,每人 300 元;超过 5 人,按团体标准,每人 280 元。请根据输入的人数,输出其旅游费用。 【输入格式】 一行一个正整数 n,表示人数,1≤n≤5000000。 【输出格式】 一行一个正整数,表示需要的总旅游费用。 【输入样例】 9 【输出样例】 2520
(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; }
【问题分析】
前面已经介绍过用逻辑表达式“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++)
例5、写出判断某一年份 x 是否是“闰年”的表达 式。
【问题分析】 判断“闰年”的口诀是:四年一闰,百年不闰,四百 年又闰。2016 年是闰年,因为 2016 能被 4整除;2100 年 不是闰年,因为它能被 100 整除;但 2000 年是闰年,因为 它能被 400 整除。 所以,判断某一年份是否是闰年有两种情况:一种是能 被 400 整除;另一种是能被 4 整除但不能被 100 整除。所 以,可以表示成: (x % 400==0) || ((x % 4==0)&& (x % 100 !=0))
高等教育出版社
信息学奥赛课课通(C++)
实践巩固
高等教育出版社
信息学奥赛课课通(C++)
第 2 课 逻辑运算符
学习目标 1. 熟练掌握 C++ 中的逻辑运算符。 2. 熟知逻辑运算符的优先级。 3. 学会正确书写逻辑表达式。
高等教育出版社
信息学奥赛课课通(C++)
逻辑运算符
C++ 提供了 &&(逻辑与)、|| (逻辑或)和!(逻辑 非)三种逻辑运算符。其中,&& 和 || 是双目运算符,而! 是单目运算符。
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; }
高等教育出版社
信息学奥赛课课通(C++)
实践巩固
高等教育出版社
信息学奥赛课课通(C++)
第 4 课 iBiblioteka Baidu 语句的嵌套
学习目标
1. 理解 if 语句嵌套的含义。
2. 熟练应用 if 语句及其嵌套解决一些实际问题。
高等教育出版社
信息学奥赛课课通(C++)
if 语句的嵌套
在分支结构中经常会遇到这样的情况:如果条件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++)
1、逻辑运算符的优先级问题
高等教育出版社
信息学奥赛课课通(C++)
例1、写出下列语义的 C++ 表达式。
(1) 一个 0~100 之间(不包括 0 和 100)的数 a。
(2) x 大于 y 且 x 大于 z。 (3) x 是英文字母。
高等教育出版社
信息学奥赛课课通(C++)
使用关系运算符需要注意的问题
(1)“等于”与“赋值”的区别; (2)实型数据(浮点数)的关系运算; (3)运算符的优先级,如下表:
高等教育出版社
信息学奥赛课课通(C++)
2. 关系运算符的应用举例
例1、假设变量定义为“int x=6,y=4,z=5;”,请分别写出下列 表达式的值。 (1 ) x + y > y + z (3) x == x >= y (2 ) ‘ x ’ < ‘ z ’
高等教育出版社
信息学奥赛课课通(C++)
例2、三个数的大小比较。
【问题描述】 输入三个整数 x、y 和 z,判断是否满足 x ≤ y ≤ z。若满足,则输出 “YES”;否则,输出“NO”。 【输入格式】 一行三个整数 x、y 和 z,int 范围以内。 【输出格式】 一行一个单词,表示答案。 【输入样例 1】 367 【输出样例 1】 YES 【输入样例 2】 376 【输出样例 2】
高等教育出版社
信息学奥赛课课通(C++)
实践巩固
高等教育出版社
信息学奥赛课课通(C++)
第 3 课 if 语句
学习目标 1. 掌握 if 语句的两种格式。
2. 理解分支结构和复合语句。
3. 熟练应用 if 语句解决一些实际问题。
高等教育出版社
信息学奥赛课课通(C++)
1. if 语句
if 语句有两种格式:
例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; }
高等教育出版社
信息学奥赛课课通(C++)
【问题分析】 交换 a 与 b 的值需要用到 3 条语句。所
以,当判断条件“a>b”成立时,需要依
次执行完这 3 条语句,这时就需要用花 括号“{}”将这 3 条语句括起来,这
些括起来的语句组合称为“复合语句”,
流程图如右图。
高等教育出版社
信息学奥赛课课通(C++)
【问题描述】 输入三个整数 x、y、z,判断其是否满足 x≤y≤z。若满足 ,输出“YES”;否则,输出“NO”。 【输入格式】 一行三个整数 x、y、z,int 范围以内。 【输出格式】 一行一个单词,表示答案。 【输入样例】 367 【输出样例】 YES
高等教育出版社
信息学奥赛课课通(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++)
使用 if 语句的嵌套需注意的问题
(1)分支结构可以嵌套很多层;
(2)if 与 else 的配对关系;
(3)编程要形成良好的代码风格;
高等教育出版社
信息学奥赛课课通(C++)
例2、阅读程序,写出程序的运行结果。
//p3-4-2a #include<iostream> using namespace std; int main(){ int x = 4, y = 3, z = 2; if(x <= y) if(y <= z) cout << "YES" << endl; else cout << "NO" << endl; return 0; }
高等教育出版社
信息学奥赛课课通(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、阅读程序,写出程序的运行结果。
//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; }
立,就去做A事情,否则去做B事情,但是,在做A事情(
或者B事情)时,还要根据条件2是否成立,决定是做A1( 或者B1)这件子事情,还是去做A2(或者B2)这件子事 情。在程序设计中,把这种情况称为分支结构的“嵌套” ,一般用来解决三种及以上的分支情况。
高等教育出版社
信息学奥赛课课通(C++)
例1、三个数的大小比较。
高等教育出版社
信息学奥赛课课通(C++)
2、整型数据也可以参与逻辑运算
整型数据在参与逻辑运算时,根据其值是 0 或非 0,分 别当作逻辑值“假”或“真”进行处理。
例2、假设变量定义为“int a=0,b=0,c=1,d=1;”,
请写出表达式 a && b || c && d的结果。
高等教育出版社
信息学奥赛课课通(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++)
【问题分析】
这是一个“选择性”问题,根据人数 n 来选择不同的收 费标准。条件就是 n≤5,如果成立,那么收费为 n×300;否 则,收费为 n×280。 //p3-3-1a #include<iostream> using namespace std; int main(){ int n; cin >> n; if(n <= 5) cout << n * 300 << endl; else cout << n * 280 << endl; return 0; }
信息学奥赛(C++)
第 3 单元 分支结构程序设计
信息学奥赛课课通(C++)
第1课 关系运算符
学习目标 1. 熟练掌握 C++ 中的关系运算符。 2. 熟知关系运算符和数学运算符的优先级。 3. 学会正确书写关系表达式。
高等教育出版社
信息学奥赛课课通(C++)
1. 关系运算符
C++ 提供了六种关系运算符:>(大于)、<(小于)、 >=(大于或等于)、<=(小于或等于)、==(等于)、!= (不等于)。 关系表达式的结果为逻辑值真(非0值)或假(0)。
相关文档
最新文档