版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序设计 cs.sjtu 2011.9程序设计 - 1关系表达式关系表达式逻辑表达式逻辑表达式If 语句语句Switch语句语句程序设计 cs.sjtu 2011.9程序设计 - 2v关系表达式用来实现比较关系表达式用来实现比较v关系运算符关系运算符 v , =, =, =, , =, =, =, , != v 优先级:高于赋值运算符,低于算术运算符。优先级:高于赋值运算符,低于算术运算符。v 关系运算符内部:关系运算符内部:=和和 != =较低较低v 结合性:左结合结合性:左结合v关系表达式关系表达式 v 用关系运算符将二个表达式衔接起来称为关系表达用关系运算符将二个表达式衔接起来称为关系表
2、达式式 v 关系表达式的结果是:关系表达式的结果是: true true 或或 false falseeg. x y a b = c d a b = c d 都是合法的关系表达式都是合法的关系表达式留意:留意:-2 -1 0 -2 -1 6 - 2 (5 + 3) (6 2) 程序设计 cs.sjtu 2011.9程序设计 - 4关系表达式关系表达式逻辑表达式逻辑表达式If语句语句Switch语句语句程序设计 cs.sjtu 2011.9程序设计 - 5v逻辑表达是用于实现更复杂的判别逻辑表达是用于实现更复杂的判别v逻辑运算符逻辑运算符 v & (and) | (or) ! (not) v 优
3、先级:优先级: ! 关系运算符关系运算符 & |v逻辑表达式逻辑表达式 v 由逻辑运算符衔接起来的表达式由逻辑运算符衔接起来的表达式,其结果为其结果为“真真(true)或或“假假(false)程序设计 cs.sjtu 2011.9程序设计 - 6vC+C+中,参与逻辑运算的对象可为恣意类型的数据,中,参与逻辑运算的对象可为恣意类型的数据,0 0为假,非为假,非0 0 为真。为真。v 5 % 2 & p p 5 % 2 & p pv 5 3 & 2 | 8 3 & 2 | 8 b) & (n = c d) a = 1, b = 2, c = 2, d = 4, m = 1, n = 1. 问执行
4、后问执行后m,n的值分别为多少?的值分别为多少? m=0, n=1 程序设计 cs.sjtu 2011.9程序设计 - 8关系表达式关系表达式逻辑表达式逻辑表达式If语句语句Switch语句语句程序设计 cs.sjtu 2011.9程序设计 - 9vif语句的格式语句的格式v if 条件测试条件测试 语句语句v if 条件测试条件测试 语句语句1 else 语句语句2v条件测试为条件测试为true时所执行的程序块叫做时所执行的程序块叫做then子子句,条件为句,条件为false时执行的语句叫做时执行的语句叫做else子句。子句。 v eg. if (grade = 60) v cout = 6
5、0)v cout “passed;v elsev cout “failed; 程序设计 cs.sjtu 2011.9程序设计 - 10v条件的结果值应该是条件的结果值应该是 true true 或或 false false,它们,它们是是C+C+中中boolbool类型的值类型的值v现实上,条件可为恣意表达式,不一定是关现实上,条件可为恣意表达式,不一定是关系表达式。系表达式。0 0 为为falsefalse,非,非 0 0 为为truetrue。v常见的错误:条件测试是比较相等时,用一常见的错误:条件测试是比较相等时,用一个等号个等号, ,v合理的缩排,使程序构造更加明晰合理的缩排,使程序构
6、造更加明晰程序设计 cs.sjtu 2011.9程序设计 - 11#include using namespace std;int main() int year; bool result; cout year; result = (year % 4 = 0 & year % 100 !=0)| year % 400 = 0; if (result) cout year 是闰年是闰年 endl; else cout year 不是闰年不是闰年 endl; return 0; 程序设计 cs.sjtu 2011.9程序设计 - 12vif语句的语句的then子句或子句或else子句是子句是if语
7、句,称语句,称为为if语句的嵌套语句的嵌套v歧义性:歧义性:if 语句可以没有语句可以没有else子句,如子句,如vif (x 100) if (x 90) 语句语句1 else if (x80) 语句语句2 else 语句语句3 else 语句语句4;v配对原那么:每个配对原那么:每个else子句是和在它之前子句是和在它之前最近的一个没有最近的一个没有else子句的子句的if语句配对。语句配对。 程序设计 cs.sjtu 2011.9程序设计 - 13v可以明晰地表示出层次可以明晰地表示出层次 ,便于程序员阅读,便于程序员阅读if (x 100) if (x 90) 语句1 else if
8、(x y) ? x : y;v?:运算符用于输出。例如,想输出一个布尔变量?:运算符用于输出。例如,想输出一个布尔变量flag的值,的值,假设直接用假设直接用 cout flag;v 那么当那么当flag为为“真真时,输出为时,输出为1;当;当flag为为“假假时,输时,输出为出为0。v 假设我们想让假设我们想让flag为为“真真时输出时输出true,为,为“假假时输出时输出false,可以用,可以用if 语句语句v if (flag) cout “true;v else cout “false;v 看上去太罗嗦。但假设用?:运算符只需求一行看上去太罗嗦。但假设用?:运算符只需求一行v cou
9、t ( flag ? true : false ) =90 A90score=80 B80score=70 C70score=60 Dscore= 90: cout = 80: cout = 70: cout = 60: cout D; break; default: cout =90 A90score=80 B80score=70 C70score=60 Dscore60 E表达式表达式=成果成果/10 switch(score / 10) case 10: case 9: cout A; break; case 8: cout B; break; case 7: cout C; break
10、; case 6: cout D; break; default: cout E; 程序设计 cs.sjtu 2011.9程序设计 - 22生成标题生成标题switch(标题类型标题类型) case 加法:显示标题,输入和的值,判别正确与否加法:显示标题,输入和的值,判别正确与否 case 减法:显示标题,输入差的值,判别正确与否减法:显示标题,输入差的值,判别正确与否 case 乘法:显示标题,输入积的值,判别正确与否乘法:显示标题,输入积的值,判别正确与否 case 除法:显示标题,输入商和余数的值,判别正确与否除法:显示标题,输入商和余数的值,判别正确与否要求自动出要求自动出0 - 90
11、 - 9之间的四那么运算题,并修正结果之间的四那么运算题,并修正结果程序设计 cs.sjtu 2011.9程序设计 - 23v如何让程序每次执行的时候都出不同的标题?如何让程序每次执行的时候都出不同的标题?v随机数生成器随机数生成器rand():能随机生成:能随机生成0到到RAND_MAX之间的整型数之间的整型数 v将生成的随机数映射到将生成的随机数映射到0 - 9之间:之间:vRand() % 10vrand() * 10 / (RAND_MAX + 1)。 v运算符的生成:用编码运算符的生成:用编码0 - 3表示四个运算符。表示四个运算符。因此标题的生成就是生成因此标题的生成就是生成0 -
12、 3之间的随机数。之间的随机数。程序设计 cs.sjtu 2011.9程序设计 - 24v计算机产生的随机数称为伪随机数,它是根据一计算机产生的随机数称为伪随机数,它是根据一个算法计算出来的。个算法计算出来的。v系统为每个程序、每次执行指定的随机数的种子系统为每个程序、每次执行指定的随机数的种子都是一样的,因此程序每次执行生成的随机数序都是一样的,因此程序每次执行生成的随机数序列都是一样的。列都是一样的。 rand()种子种子1234812348程序设计 cs.sjtu 2011.9程序设计 - 25v设置种子的函数设置种子的函数srand : srand 种子种子v如何让程序每次执行时选择的
13、种子都不一如何让程序每次执行时选择的种子都不一样呢样呢?v选择系统时间为种子:选择系统时间为种子:time(NULL) 取当取当前的系统时间。前的系统时间。 程序设计 cs.sjtu 2011.9程序设计 - 26#include /包含伪随机数生成函数包含伪随机数生成函数#include /包含取系统时间的函数包含取系统时间的函数#include using namespace std;int main() int num1, num2, op, result1, result2; /num1,num2:操作数,操作数,op:运算符,运算符,result1,result2: 结果结果 sra
14、nd(time(NULL); /随机数种子初始化随机数种子初始化 num1=rand() * 10 / (RAND_MAX + 1); / 生成运算数生成运算数 num2=rand() * 10 / (RAND_MAX + 1); /生成运算数生成运算数 op=rand() * 4 / (RAND_MAX + 1); / 生成运算符生成运算符 0-+, 1- -, 2-*,3- / 自动出题程序程序设计 cs.sjtu 2011.9程序设计 - 27switch (op) /最容易忘的是最容易忘的是switch下的大括号下的大括号! case 0: cout num1 + num2 resul
15、t1; if (num1 + num2 = result1) cout you are rightn; else cout you are wrongn; break; case 1: cout num1 - num2 result1; if (num1 - num2 = result1) cout you are rightn; else cout you are wrongn; break; case 2: cout num1 * num2 result1; if (num1 * num2 = result1) cout you are rightn;else cout you are wrongn; break; 程序设计 cs.sjtu 2011.9程序设计 - 28case 3: cout num1 / num2 result1; cout result2; if (num1 / num2 = result1) & (num1 % num2 = result2) cout you are rightn; else cout you are wrongn; break; return 0;程序设计 cs.sjtu 2011.9程序设计 - 29v每次执行只能出一道题每次执行只能出一道题v减法能够出现负值减法能够出现负值v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47377-2026载人航天器组合体空气环境综合试验方法
- 晋教版七年级地理下册-第八章-认识亚洲-单元检测试题
- 农业技术推广体系效率评价研究意义
- 雹灾救援要落实受伤人员救治安全防范措施
- 家庭洗衣机槽清洗指南
- SJG 229-2026 内掺自修复防水混凝土应用技术规程
- 2026年天津市宁河区部分学校中考英语二模试卷(含详细答案解析)
- 2026年上半年教师资格考试小学教育教学知识与能力测试试卷与参考答案
- 2026年机动车智能钥匙系统维修技术考试题库
- 2026年海南省纪委监委机关公开遴选公务员考试(职位业务水平测试)全真冲刺试题及答案
- GJB827B--2020军事设施建设费用定额
- -2025年浙江省衢州市开化县重点高中自主招生 数学 试卷 (学生版+解析版)
- 导演思维基础知识培训课件
- 走出奥米勒斯城的人
- 泌尿系统常见疾病科普讲座
- 碳排放核算员模拟考试题及答案(五)
- 2024-2025学年辽宁省大连市甘井子区八年级下学期期末数学检测试卷
- 2025年小学科学教师招聘考试测试卷及参考答案(共三套)
- soap病历培训课件
- 塔吊安装、顶升、附着及拆卸培训讲义培训课件
- T/CCS 032-2023矿井智能化通风系统建设技术规范
评论
0/150
提交评论