第02章程序控制结构

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第2章程序控制结构2.1顺序结构2.2选择结构2.3循环结构2.4控制转向语句2.5程序实例2按照语句出现的先后顺序依次执行。2.1顺序结构语句1语句2图2.1顺序结构流程图32.1.1定义语句说明语句在C++程序中,一个标识符(变量名、常量名、函数名、对象名等)在使用之前必须先定义,通知编译器为其分配存储空间,或告诉编译器它的存在及其特征。例如:intx=1,y=2;constdoublePI=3.14159;floatscore[30][3];42.1.2表达式语句形式:表达式;可以进行的操作通常包括赋值操作,复合赋值操作,增量、减量操作,函数调用操作和输入输出操作。例如:n++;--m;abs(x);cinxy;coutx+y;s=x+y;m=n=t;a=10,b=20;z*=w;52.1.3复合语句形式:{语句1语句2……语句n}作用:当程序中某个位置在语法上只允许一条语句,而在语义上要执行多条语句才能完成某个操作时,需要使用复合语句。例如:if(x==0){couta;coutb;}62.1.4空语句形式:;作用:当程序中某个位置在语法上需要一条语句,而在语义上又不要求执行任何动作时,可放上一条空语句。一般适用于在循环语句中做空循环体例如:for(m=0;m1000;m++);72.1.5基本输入输出在C++中,所有输入输出是通过输入输出流来实现的。在C++中,将数据从一个对象到另一个对象的流动抽象为“流”。在iostream库中包含一个标准输入流对象cin和一个标准输出流对象cout,分别用来实现从键盘读取数据,以及将数据在屏幕上输出。要使用cin和cout,需要在C++程序开头加上如下包含命令:#includeiostream//新标准中的头文件名usingnamespacestd;//引入std名字空间中的标识符81.标准输入流cincin负责从键盘读取数据,使用提取运算符“”就可以将键盘键入的数据读入到变量中。语法格式:cin变量1变量2…变量n;变量可以是任意数据类型,输入时各个数据之间用空格键、Tab键或Enter键分隔。例如:intx,y;cinxy;键盘上输入:58↙x5键盘y8键盘92.标准输出流cout负责将数据输出到屏幕上,使用插入运算符“”就可以将数据显示在屏幕上当前光标所在位置。语法格式:cout表达式1表达式2…表达式n;表达式可以是任意类型的,数据输出的格式由系统自动决定。10格式控制符说明示例语句结果endl输出换行符cout123endl456;123456dec整数按十进制输出coutdec18;18hex整数按十六进制输出couthex18;12oct整数按八进制输出coutoct18;22setw(intn)设置数据输出的宽度cout'a'setw(3)'b';ab(中间有2个空格)11格式控制符说明示例语句结果setfill(charc)设置填充字符coutsetfill('#')setw(6)123;###123setprecision(intn)设置浮点数的精度(有效数字位数或小数位数)coutsetprecision(5)63.3156;63.316setiosflags(ios::fixed)定点格式输出coutsetiosflags(ios::fixed)32.1456789;32.145679setiosflags(ios::scientific)指数格式输出coutsetiosflags(ios::scientific)72.3456789;7.234568e+00112【例2.1】cout应用示例#includeiostreamusingnamespacestd;intmain(){intx=12,y=83;doublepai_1=3.14159265;floatpai_2=3.141f;charch1='A',ch2='B';boolok=true;coutx=xendl;couty=yendl;coutpai_1=pai_1,pai_2=pai_2endl;coutch1=ch1,ch2=ch2endl;coutok=okendl;cout!ok=!okendl;return0;}x=12y=83pai_1=3.14159,pai_2=3.141ch1=A,ch2=Bok=1!ok=013【例2.2】使用格式控制符输出数据#includeiostream#includeiomanipusingnamespacestd;intmain(){inta=35;doubleb=21.3456789;cout1234567890123endl;coutdeca''hexa''octaendl;coutbendl;coutsetprecision(4)bendl;coutsetw(10)bendl;coutsetw(10)setfill('*')bendl;coutsetiosflags(ios::scientific)bendl;coutsetprecision(3)bendl;coutsetprecision(2)bendl;return0;}123456789012335234321.345721.3521.35*****21.352.1346e+0012.135e+0012.13e+001142.2选择结构按照给定条件有选择地执行程序中的语句C++中:if语句:实现n分支,要求n个表达式。switch语句:实现多分支,只用1个表达式。152.2.1if语句1.if语句(单分支)语法格式:if(表达式)语句说明:(1)表达式是任意的数值、字符、关系、逻辑表达式,它表示条件,以true(非0)表示真,false(0)表示假。表达式必须用圆括号括起来。(2)内嵌语句,可以是单条语句,或复合语句。执行顺序表达式语句falsetrue16bat73773【例2.3】输入两个整数a和b,按从小到大的顺序输出这两个数。分析若ab,则将a、b交换,否则不交换。两数交换可采用借助于第三个变量间接交换的方法if(ab){t=a;a=b;b=t;}17#includeiostreamusingnamespacestd;intmain(){inta,b,t;cout请输入两个整数a,b:endl;cinab;if(ab){t=a;a=b;b=t;}couta''bendl;return0;}{a=a+b;b=a-b;a=a-b;}请输入两个整数a,b:85404085{a=a^b;b=a^b;a=a^b;}182.if-else语句(双分支)if(表达式)语句1else语句2true表达式语句1false语句2双分支if语句流程图19【例2.4】输入一个年份,判断是否为闰年。分析闰年的年份可以被4整除而不能被100整除,或者能被400整除。#includeiostreamusingnamespacestd;intmain(){intyear;cout请输入年份:;cinyear;if((year%4==0&&year%100!=0)||(year%400==0))coutyear年是闰年endl;elsecoutyear年不是闰年endl;return0;}203.if-elseif语句(多分支)if(表达式1)语句1elseif(表达式2)语句2……elseif(表达式n)语句nelse语句n+1falsefalse…falsetruetrue表达式1表达式2表达式n语句n语句n+1语句2语句1true21【例2.5】根据x的值,计算分段函数y的值。y的计算公式为:5cos(79)lnxxexyxxx(x<0)(0≤x<15)(15≤x<30)(x≥30)22#includeiostream#includecmathusingnamespacestd;intmain(){doublex,y;cout请输入x:;cinx;if(x0)y=fabs(x);elseif(x15)y=exp(x)*cos(x);elseif(x30)y=pow(x,5);elsey=(7+9*x)*log(x);couty=yendl;return0;}请输入x:-5y=5请输入x:10y=-18481.8请输入x:27y=1.43489e+007请输入x:38y=1269.52234.if语句的嵌套形式if或else后面的内嵌语句本身又是一个if语句例如:if(表达式1)if(表达式2)语句1else语句2elseif(表达式3)语句3else语句424(1)为了增强程序的可读性,建议采用锯齿型的书写形式。(2)if语句嵌套时,else子句总是与在它前面、距它最近、且尚未匹配的if配对。(3)为明确匹配关系,避免匹配错误,建议将内嵌的if语句一律用“{}”括起来。if(x0)if(y0)coutx与y均大于0;elsecoutx大于0,y小于等于0;注意:如何使之与第一个if配对?25【例2.6】从键盘上输入两个字符,比较其大小,输出大于、等于和小于的判断结果。#includeiostreamusingnamespacestd;intmain(){charch1,ch2;cout请输入两个字符:;cinch1ch2;if(ch1!=ch2)if(ch1ch2)coutch1大于ch2endl;elsecoutch1小于ch2endl;elsecoutch1等于ch2endl;return0;}请输入两个字符:hdh大于d请输入两个字符:XYX小于Y请输入两个字符:&&&等于&262.2.2switch语句switch(表达式){case常量表达式1:语句1case常量表达式2:语句2…case常量表达式n:语句n[default:语句序列n+1]}注意:表达式只能是整型、字符型或枚举型注意:常量表达式1~n的值必须各不相同。27有无无false有无falsetrue计算表达式的值常量表达式1语句1break常量表达式2语句2break无有false常量表达式ntrue语句nbreakdefault语句n+1true有switch语句执行流程28【例2.7】将输入的百分制成绩按以下规定转换成相应的等级:成绩等级100~90优秀89~80良好79~70中等69~60及格59~0不及格29#includeiostreamusingnamespacestd;intmain(){floatscore;cout请输入成绩:;cinscore;if(score=0&&score=100)switch(int(score)/10){case10:case9:coutscore分:优秀endl;break;case8:coutscore分:良好endl;break;case7:coutscore分:中等endl;break;case6:coutscore分:及格endl;break;default:coutscore“分:不及格”endl;}elsecout输入数据有误!endl;return0;}共用同一个语句组思考:若省去break语句,情况会怎样

1 / 65
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功