版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章选择结构4.1if4.2if-else4.3嵌套4.4条件运算符4.5switch1114.1if22if语句的语法结构如下:If(表达式){语句序列;}表达式语句块真假选择是否执行一条路径使用单独的if语句。33例:根据输入值输出是否不低于60,若不低于60则输出“Pass”。01#include<iostream>02usingnamespacestd;03intmain()04{05intscore;06cin>>score;07if(score>=60)08{09cout<<"Pass"<<endl;10}11cout<<"========"<<endl;12return0;13}444.2if-else从两个可选路径中选择一条执行采用if-else语句结构。if-else的语法结构如下:if(表达式){语句序列1;}else{语句序列2;}表达式语句块1真假语句块255例:根据输入值和60的比较,若不低于60则输出“Pass”,否则输出“Fail”。01#include<iostream>02usingnamespacestd;03intmain()04{05intscore;06cin>>score;07if(score>=60)08{09cout<<"Pass"<<endl;10cout<<"Exceedingthequalifiedline:"<<score-60<<endl;11}12else13{14cout<<"Fail"<<endl;15cout<<"Belowthequalifiedline:"<<60-score<<endl;16}17cout<<"========"<<endl;18return0;19}664.3嵌套当从多个可执行路径中选择一个执行的时候,就需要将if语句进行有机嵌套组合可以在一个外围if-else语句内嵌套if-else语句,既可以嵌套在外围if-else语句内的if语句块部分,也可以嵌套在外围if-else语句内的else语句块部分。77嵌入在外围if-else语句else部分的代码如下:if(表达式1){语句序列1;}else{if(布尔表达式2){
语句序列2;}else{
语句序列3;}}表达式1真假表达式2语句块1语句块2语句块3真假88判断条件与执行路径对应关系布尔表达式1布尔表达式2执行路径true/语句序列1falsetrue语句序列2falsefalse语句序列399例:根据分数输出”Good“,”Pass“,”Fail“,规则为:80分以上为Good,60分以上80分以下为Pass,60分以下为Fail。01#include<iostream>02usingnamespacestd;03intmain()04{05intscore;06cin>>score;07if(score>=80)08{09cout<<"Good"<<endl;10}11else12{13if(score>=60)14{15cout<<"Pass"<<endl;16}17else18{19cout<<"Fail"<<endl;20}21}22return0;23}1010内部if-else也可以嵌入到外围if-else语句的if分支中。if(布尔表达式1){if(布尔表达式2){
语句序列1;}else{
语句序列2;}}else{语句序列3;}表达式1真假表达式2语句块1语句块2语句块3真假11判断条件与执行路径对应关系布尔表达式1布尔表达式2执行路径truetrue语句序列1truefalse语句序列2false/语句序列31212可以将例4.3的求解用这种结构的if语句来实现。01#include<iostream>02usingnamespacestd;03intmain()04{05intscore;06cin>>score;07if(score>=60)08{09if(score>=80)10{11cout<<"Good"<<endl;12}13else14{15cout<<"Pass"<<endl;16}17}18else19{20cout<<"Fail"<<endl;21}22return0;23}134.4条件运算符某些情况下,可以用条件运算符”?:”来简化if的运算,其语法规则为:(布尔表达式1)?表达式2:表达式3;表达式1表达式2真假表达式314例:根据输入的两个数输出较大的数程序代码(一):01#include<iostream>02usingnamespacestd;03intmain()04{05inta,b;06cin>>a>>b;07cout<<"Thelargernumberof"<<a<<"and"<<b<<":";08if(a>b)09{10cout<<a<<endl;11}12else13{14cout<<b<<endl;15}16return0;17}1515程序代码(二):01#include<iostream>02usingnamespacestd;03intmain()04{05inta,b;06cin>>a>>b;07cout<<"Thelargernumberof"<<a<<"and"<<b<<":";08intc=(a>b)?a:b;09cout<<c<<endl;10return0;11}164.5switch从多个可选路径中选择一条路径执行可以使用if-else的嵌套结构实现,在某些情况下,使用switch语句实现更简洁。switch语句语法如下:switch(表达式){case常量1:
语句序列1; break;case常量2:
语句序列2; break;…case常量n:
语句序列n; break;default:
语句序列n+1; break;}==常量1表达式语句序列1break==常量2语句序列2break==常量n语句序列nbreak==default语句序列n+1break17例:根据输入的数值判断等级,60分以下为Fail,60~69为Pass,70~79为Medium,80~89为Good,90~100为Excellent。程序代码(一):01#include<iostream>02usingnamespacestd;03intmain()04{05intscore;06cout<<"Pleaseinputascore(0~100):";07cin>>score;08inttype=score/10;09switch(type)10{11case10:12cout<<"Excellent"<<endl;13break;14case9:15cout<<"Excellent"<<endl;16break;17case8:18cout<<"Good"<<endl;19break;20case7:21cout<<"Medium"<<endl;22break;23case6:24cout<<"Pass"<<endl;25break;26default:27cout<<"Fail"<<endl;28break;29}30return0;31}1819程序代码(二):01#include<iostream>02usingnamespacestd;03intmain()04{05intscore;06cout<<"Pleaseinputascore(0~100):";07cin>>score;08inttype=score/10;09switch(type)10{11case10:12case9:13cout<<"Excellent"<<endl;14break;15case8:16cout<<"Good"<<endl;17break;18case7:19cout<<"Medium"<<endl;20break;21case6:22cout<<"Pass"<<endl;23break;24default:25cout<<"Fail"<<endl;26break;27}28return0;29}C++程序设计及项目实践20224.5应用例4.6
三角形求面积
C++程序设计及项目实践212301#include<iostream>02#include<cmath>03#include<iomanip>04usingnamespacestd;05intmain()06{07inta,b,c;08cin>>a>>b>>c;09if(a+b>c&&a+c>b&&b+c>a)10{11doubles=(a+b+c)/2.0;12doublearea=sqrt(s*(s-a)*(s-b)*(s-c));13cout<<setiosflags(ios::fixed)<<setprecision(2)<<area<<endl;14}15else16{17cout<<"itisnotatriangle"<<endl;18}19return0;20}C++程序设计及项目实践24例4.7
判断闰年思路:闰年的判断满足一条规则即可:一是整除400,二是整除4但不能整除100。程序代码:01#include<iostream>02usingnamespacestd;03intmain()04{05intyear;06cin>>year;07boolisLeap1=(year%4==0)&&(year%100!=0);08boolisLeap2=year%400==0;09boolisLeap=isLeap1||isLeap2;10if(isLeap)11{12cout<<"Theyear"<<year<<"isaleapyear"<<endl;13}14else15{16cout<<"Theyear"<<year<<"isnotaleapyear"<<endl;17}18return0;19}C++程序设计及项目实践25C++程序设计及项目实践27例4.8
分段函数求解
思路:根据x的取值范围,选择不同的函数来定义y。这里需要分三种情况讨论,所以可以理解成从三个可执行路径中选择一个执行,由于每一个执行路径的判断条件不是简单的常量,所以这里不能采用switch语句,只能用支持多个路径选择一个执行的嵌套if语句来实现。C++程序设计及项目实践2801#include<iostream>02#include<iomanip>03#include<cmath>04usingnamespacestd;05intmain()06{07doublex,y;08cin>>x;09if(x<0)10{11y=x;12}13else14{15if(x<=1)16{17y=x*x;18}19else20{21y=sqrt(x);22}23}24cout<<setiosflags(ios::fixed)<<setprecision(4)<<y<<endl;25return0;26}C++程序设计及项目实践29C++程序设计及项目实践25思考题输入1-7之间的整数,要求输出周一到周日。C++程序设计及项目实践第5章 循环结构
15.1while5.2do-while5.3for5.4嵌套5.5break5.6continue5.7应用5.8本章小结C++程序设计及项目实践2第5章 循环结构
顺序结构和选择结构的程序执行时候的特点是从从前向后执行,可以选择不执行某些语句,或者从多个可执行路径中选择一个执行,但它们均不会回头执行之前已经执行过的语句。在某些情况下,程序可能会需要重复执行以前执行过的语句,这就需要循环结构的程序了。C++程序设计及项目实践35.1whilewhile语句的语法如下:while(表达式){
语句序列;}
程序执行while语句时,首先判断while(布尔表达式)中布尔表达式值的真假,若为假(false),则跳过while语句,执行while语句的下一条语句;布尔表达式若为真(true),则进入while语句内部,执行其中的语句序列,执行完后,再回到while(布尔表达式)的布尔表达式的判断,然后重复该流程。
一般来说,循环结构的程序都蕴涵内在的重复执行的操作,因此,再设计循环结构程序时,首先需要回答两个问题:(1)重复的操作是什么?(2)控制重复的因素是什么?
通过这两个要点可以提炼出循环的三个要素:(1)循环重复执行的动作;(2)循环的起止条件;(3)循环条件的改变规则。当找到了这三个要素之后,就比较容易编写循环结构的程序了。表达式假真语句块C++程序设计及项目实践4例
输出5遍“HelloC++”(只用while循环书写)思路:通过分析这个问题,可以发现:(1)重复的操作是输出”HelloC++”;(2)控制重复的因素是输出次数,只要次数不超过5次就重复执行输出,否则就不再操作。因此,可以提炼出循环的三个要素:(1)循环重复执行的操作为输出”HelloC++”;(2)循环次数从第1次开始,到第5次完成结束;(3)循环计次每完成1次输出增加1次。由此,可以顺利地写出正确的程序。C++程序设计及项目实践5例
输出5遍“HelloC++”(只用while循环书写)01#include<iostream>02usingnamespacestd;03intmain()04{05introw=1;06while(row<=5)07{08cout<<"HelloC++"<<endl;09row++;10}11cout<<"row="<<row<<endl;12return0;13}C++程序设计及项目实践6例5.3从1到100求和思路:通过分析这个问题,可以发现:(1)重复的操作是求和,求和必须是将值要保存到唯一的变量空间。(2)控制重复的因素是求和数值范围:从1到100,若该数不在该范围内,则不能再重复操作。处理的一些求和技术的小技巧:sum=0;//开始时初始化sumsum=sum+1;sum=sum+2;…sum=sum+n;也就是求和可以用sum=sum+i来表示,然后改变(求和数值)i依次为1,2,..,n加入到sum中,实现了汇总,也就是控制i的范围,就控制了可以求和的范围。可以提炼出该循环的三个要素:(1)循环重复执行的操作为sum=sum+i;(2)循环从求和数值i=1开始,到i=100完成求和结束;(3)求和数值每完成1次求和增加1。C++程序设计及项目实践7例5.3从1到100求和01#include<iostream>02usingnamespacestd;03intmain()04{05intn=1,sum=0;06while(n<=100)07{08sum=sum+n;09n++;10}11cout<<sum<<endl;12return0;13}C++程序设计及项目实践85.2do-whiledo-while语句如下:do{语句序列;}while(表达式);表达式假真语句块语句执行到do-while语句时,先进入大括号内部执行语句序列,执行完以后再进行while(布尔表达式)的执行,判断布尔表达式是否为真,若为真(true),则返回重复执行之前已经执行过的语句序列,若布尔表达式为假(false),则结束do-while语句,进入到下一条语句。C++程序设计及项目实践9例
从1到100求和思路:通过分析这个问题,可以发现:(1)重复的操作是求和,求和必须是将值要保存到唯一的变量空间。(2)控制重复的因素是求和数值范围:从1到100,若该数不在该范围内,则不能再重复操作。处理的一些求和技术的小技巧:sum=0;//开始时初始化sumsum=sum+1;sum=sum+2;…sum=sum+n;也就是求和可以用sum=sum+i来表示,然后改变(求和数值)i依次为1,2,..,n加入到sum中,实现了汇总,也就是控制i的范围,就控制了可以求和的范围。可以提炼出该循环的三个要素:(1)循环重复执行的操作为sum=sum+i;(2)循环从求和数值i=1开始,到i=100完成求和结束;(3)求和数值每完成1次求和增加1。C++程序设计及项目实践10例
从1到100求和01#include<iostream>02usingnamespacestd;03intmain()04{05intn=1,sum=0;06do07{08sum+=n;09n++;10}while(n<=100);11cout<<sum<<endl;12return0;13}C++程序设计及项目实践115.3forfor语句的语句如下:for(表达式1;表达式2;表达式3){语句序列;}for语句小括号中包括3个表达式,并用分号隔开。程序执行的时候首先执行表达式1,然后判断表达式2是否为真(true,非0值),若为真,则执行大括号内部的语句序列,执行完后,执行for语句小括号中表达式3,然后再判断表达式2是否为真,若成立,则循环,若表达式2为假(false,0值),则for语句结束,进入for语句的下一条语句。表达式2语句块真假表达式1表达式3C++程序设计及项目实践12例
从1到100求和思路:通过分析这个问题,可以发现:(1)重复的操作是求和,求和必须是将值要保存到唯一的变量空间。(2)控制重复的因素是求和数值范围:从1到100,若该数不在该范围内,则不能再重复操作。处理的一些求和技术的小技巧:sum=0;//开始时初始化sumsum=sum+1;sum=sum+2;…sum=sum+n;也就是求和可以用sum=sum+i来表示,然后改变(求和数值)i依次为1,2,..,n加入到sum中,实现了汇总,也就是控制i的范围,就控制了可以求和的范围。可以提炼出该循环的三个要素:(1)循环重复执行的操作为sum=sum+i;(2)循环从求和数值i=1开始,到i=100完成求和结束;(3)求和数值每完成1次求和增加1。C++程序设计及项目实践13例
从1到100求和01#include<iostream>02usingnamespacestd;03intmain()04{05intsum=0;06for(intn=1;n<=100;n++)07{08sum+=n;09}10cout<<sum<<endl;11return0;12}C++程序设计及项目实践145.4嵌套选择结构中if-else,switch等可以相互嵌套,从而可以构造功能更强的程序,循环结构和选择结构之间,循环结构和循环结构之间也可以构成嵌套结构的程序,从而增强程序的功能。C++程序设计及项目实践155.4嵌套5.4.1嵌套选择5.4.2嵌套判断C++程序设计及项目实践16例
从1到100之间奇数求和思路:直接对从1到100之间的所有整数求和的问题之前已经求解过了,使用循环结构即可以容易求解。从1到100之间的数包含奇数,也包括偶数,所以可以在汇总的程序中,对每个数字进行检查,若为奇数则汇总,若为偶数忽略即可。5.4.1嵌套选择C++程序设计及项目实践175.4.1嵌套选择例
从1到100之间奇数求和01#include<iostream>02usingnamespacestd;03intmain()04{05intsum=0;06for(intn=1;n<=100;n++)07{08if(n%2==1)09{10sum+=n;11}12}13cout<<sum<<endl;14return0;15}C++程序设计及项目实践18例
求解阶乘和S(n)=1!+2!+3!+…+n!思路:分析该计算式,可以发现S(n)需要对从1到n之间的每一个整数i分别求阶乘,所以需要一个循环来控制整数i的范围,而对于该范围内的每个整数i而言,需要计算其阶乘i!,阶乘可以表示成从1累乘到i,所以这又可以用一个循环实现,后一个循环嵌入在前一个循环中。5.4.2嵌套循环C++程序设计及项目实践195.4.2嵌套循环例
求解阶乘和S(n)=1!+2!+3!+…+n!01#include<iostream>02usingnamespacestd;03intmain()04{05intn,sum=0;06cin>>n;07for(inti=1;i<=n;i++)08{09inttmp=1;10for(intj=1;j<=i;j++)11{12tmp*=j;13}14sum+=tmp;15}16cout<<sum<<endl;17return0;18}C++程序设计及项目实践205.5break在循环语句执行过程中,若需要提前结束循环,则可以使用break语句。无论在while,do-while,for循环结构的哪一种语句中,均可以使用break语句提前结束循环。(a)while中的break(b)do-while中的break(c)for中的break表达式…break;…真假表达式…break;…真假表达式2…break;…真假表达式1表达式3C++程序设计及项目实践21例
判断某数是否为素数思路:素数n只能被1和n自己整除。那这需要检测从2开始到n-1期间所有数能否被n整除,只要有一个能被整除,则n就不是素数,只有所有数都不能被整除,才能最终确定该数为素数。5.5breakC++程序设计及项目实践22例
判断某数是否为素数01#include<iostream>02usingnamespacestd;03intmain()04{05intn;06cin>>n;07boolis=true;08for(inti=2;i<=n/2;i++)09{10if(n%i==0)11{12is=false;13break;14}15}16if(is==true)17{18cout<<"Yes"<<endl;19}20else21{22cout<<"No"<<endl;23}24return0;25}C++程序设计及项目实践235.6continue在循环结构中,可以用continue语句提前结束本轮循环,直接进入到下一次的循环。(a)while中的continue(b)do-while中的continue(c)for中的continue表达式…continue;…真假表达式…continue;…真假表达式2…continue;…真假表达式1表达式3C++程序设计及项目实践24例
对输入5个正数求和,若输入为负数,则重新输入。01#include<iostream>02usingnamespacestd;03intmain()04{05intn,sum=0;06for(inti=1;i<=5;i++)07{08cin>>n;09if(n<0)10{11i--;12cout<<"Pleasereinput!"<<endl;13continue;14}15sum+=n;16}17cout<<sum<<endl;18return0;19}C++程序设计及项目实践255.7应用例1统计输入字符各类字符个数,分别统计小写字符,大写字符,数字字符,其他字符。01#include<iostream>02#include<cstdio>03usingnamespacestd;04intmain()05{06intln(0),un(0),dn(0),on(0);07charc;08while((c=getchar())!='\n')09{10if(c>='a'&&c<='z')11{12ln++;13continue;14}if(c>='A'&&c<='Z')16{17un++;18continue;19}20if(c>='0'&&c<='9')21{22dn++;23continue;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC TS 23220-6:2025 EN Cards and security devices for personal identification - Building blocks for identity management via mobile devices - Part 6: Mechanism for use of
- 公司光敏电阻器制造工岗位职业健康技术规程
- 海绵胸杯行业深度研究报告
- 2025基层党建应知应会知识测试题及答案
- 中国涂装整厂设备项目投资可行性研究报告
- 中国水彩项目投资可行性研究报告
- 中国吹针项目投资可行性研究报告
- 中国无纺布卫生用品项目投资可行性研究报告
- 六一主题新颖活动策划方案
- 中国电力输配电铁附件项目投资可行性研究报告
- 《城市道路水下隧道设计规范》
- 酒店客房服务与卫生标准
- 《卖火柴的小女孩》课本剧剧本:带你感受冷暖人生(6篇)
- 材料科学与工程专业职业生涯规划
- 环保设施除尘器维护应急预案
- 北京市矢量地图-可改颜色
- 天津市南开区2023-2024学年八上期中数学试题(原卷版)
- DBJ41T 262-2021 影响城市轨道交通外部作业技术标准 河南省工程建设标准(住建厅版)
- 期中试卷(试题)2024-2025学年人教版数学五年级上册
- 基于通信运营商IT系统场景的AI大模型应用实践
- 监控系统设备现场安装检查记录表
评论
0/150
提交评论