资源预览内容
第1页 / 共75页
第2页 / 共75页
第3页 / 共75页
第4页 / 共75页
第5页 / 共75页
第6页 / 共75页
第7页 / 共75页
第8页 / 共75页
第9页 / 共75页
第10页 / 共75页
亲,该文档总共75页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,第2章 程序控制结构 2.1 顺序结构 2.2 选择结构 2.3 循环结构 2.4 控制转向语句 2.5 程序实例,2,按照语句出现的先后顺序依次执行。,2.1 顺序结构,3,2.1.1 定义语句,说明语句 在C+程序中,一个标识符(变量名、常量名、函数名、对象名等)在使用之前必须先定义,通知编译器为其分配存储空间,或告诉编译器它的存在及其特征。 例如: int a=0,b=3; const double pi=3.14159; int sum(int,int); float score 503;,4,2.1.2 表达式语句,形式: ; 可以进行的操作通常包括赋值操作,复合赋值操作,增量、减量操作,函数调用操作和输入输出操作。 例如:,i+; -j; abs(x); coutij;,sum=a+b; a=b=c; i=1,j=2; b*=c;,5,2.1.3 复合语句,形式: 作用:当程序中某个位置在语法上只允许一条语句,而在语义上要执行多条语句才能完成某个操作时,需要使用复合语句。,例如: if(x=0) couta; coutb; ,6,2.1.4 空语句,形式: ; 作用: 当程序中某个位置在语法上需要一条语句,而在语义上又不 要求执行任何动作时,可放上一条空语句。 一般适用于在循环语句中做空循环体 例如:,for (m = 0; m1000; m+) ;,7,输入和输出并不是C+语言中的正式组成成分。C和C+本身都没有为输入和输出提供专门的语句结构。输入输出不是由C+本身定义的,而是在编译系统提供的I/O库中定义的。 C+的输出和输入是用“流”(stream)的方式实现的。图3.2和图3.3表示C+通过流进行输入输出的过程。,2.1.5 基本输入输出,8,图3.2 图3.3,9,有关流对象cin、cout和流运算符的定义等信息是存放在C+的输入输出流库中的,因此如果在程序中使用cin、cout和流运算符,就必须使用预处理命令把头文件stream包含到本文件中: #include 尽管cin和cout不是C+本身提供的语句,但是在不致混淆的情况下,为了叙述方便,常常把由cin和流提取运算符“”实现输入的语句称为输入语句或cin语句,把由cout和流插入运算符“”实现输出的语句称为输出语句或cout语句。根据C+的语法,凡是能实现某种操作而且最后以分号结束的都是语句。,10,在C+中,所有输入输出是通过输入输出流来实现的。 在C+中,将数据从一个对象到另一个对象的流动抽象为“流”。在iostream库中包含一个标准输入流对象cin和一个标准输出流对象cout,分别用来实现从键盘读取数据,以及将数据在屏幕上输出。 要使用cin和cout,需要在C+程序开头加上如下包含命令: #include / 新标准中的头文件名 using namespace std; / 引入std名字空间中的标识符,11,1. 标准输入流cin,cin负责从键盘读取数据,使用提取运算符“”就可以将键盘键入的数据读入到变量中。 语法格式: cin变量1变量2变量n; 变量可以是任意数据类型,输入时各个数据之间用空格键、Tab键或Enter键分隔。 例如: int a,b; cinab; 键盘上输入:9 3,9,键盘,3,键盘,12,2. 标准输出流cout,负责将数据输出到屏幕上,使用插入运算符“”就可以将数据显示在屏幕上当前光标所在位置。 语法格式: cout表达式1表达式2表达式n; 表达式可以是任意类型的,数据输出的格式由系统自动决定。,13,14,浮点型默认精度为6,15,【例2.1】 cout应用示例,#include using namespace std; int main() int m=2,n=8; double pai_1=3.14159265; float pai_2=3.141f; char ch1=A,ch2=B; bool ok=true; cout“m=“mendl; cout“n=“nendl; cout“pai_1=“pai_1“ , pai_2=“pai_2endl; cout“ch1=“ch1“ , ch2=“ch2endl; cout“ok=“okendl; cout“!ok=“!okendl; return 0;,图2.2 cout应用示例,16,【例2.2】 使用格式控制符输出数据,#include #include using namespace std; int main() int a=35; double b=12.3456789; 1: cout“1234567890123“endl; 2: coutdeca hexa octaendl; /35 23 43 3: coutbendl; /12.3457 4: coutsetprecision(4)bendl; / 12.35 5: coutsetw(10)bendl; / 12.35 6: coutsetw(10)setfill(#)bendl; / #12.35 7: coutsetiosflags(ios:scientific)bendl; / 1.2346e+001 8: coutsetprecision(3)bendl; /1.235e+001 9: coutsetprecision(2)bendl; /1.23e+001 return 0; ,17,2.2 选择结构,按照给定条件有选择地执行程序中的语句 C+中: if语句:实现n分支,要求n个表达式。 switch语句:实现多分支,只用1个表达式。,18,2.2.1 if语句,1if语句(单分支) 语法格式: if(表达式) 语句 说明: (1)表达式是任意的数值、字符、关系、逻辑表达式,它表示条件,以true(非0)表示真,false(0)表示假。表达式必须用圆括号括起来。 (2)内嵌语句,可以是单条语句,或复合语句。,执行顺序,19,7,3,7,7,3,【例2.3】输入两个整数a和b,按从小到大的顺序输出这两个数。,分析 若ab,则将a、b交换,否则不交换。两数交换可采用借助于第三个变量间接交换的方法,if(ab) t=a;a=b;b=t;,20,#include using namespace std; int main() int a,b,t; coutab; if(ab) t=a;a=b;b=t; coutabendl; return 0; ,a=a+b;b=a-b;a=a-b;,21,2if- else语句(双分支),if(表达式) 语句1 else 语句2,22,【例2.4】输入一个年份,判断是否为闰年。,分析 闰年的年份可以被4整除而不能被100整除,或者能被400整除。,#include using namespace std; int main() int year; coutyear; if(year%4=0 ,23,3if- else if 语句(多分支),if(表达式1) 语句1 else if(表达式2) 语句2 else if (表达式n) 语句n else 语句n+1,24,【例2.5】根据x的值,计算分段函数y的值。y的计算公式为:,25,#include #include using namespace std; int main() double x,y; coutx; if(x0) y=fabs(x); else if(x10) y=exp(x)*sin(x); else if(x20) y=pow(x,3); else y=(3+2*x)*log(x); cout“y=“yendl; return 0; ,图2.10 计算分段函数,26,4if语句的嵌套形式,if或else后面的内嵌语句本身又是一个if语句 例如:,if (表达式1) if (表达式2) 语句1 else 语句2 else if (表达式3) 语句3 else 语句4,27,(1) 为了增强程序的可读性,建议采用锯齿型的书写形式。 (2) if语句嵌套时,else子句总是与在它前面、距它最近、且尚未匹配的if配对。 (3)为明确匹配关系,避免匹配错误,建议将内嵌的if语句一律用“ ”括起来。,if(x0) if(y0) cout“x与y均大于0“; else cout“x大于0,y小于等于0“;,注意:,如何使之与第一个if配对?,28,【例2.6】从键盘上输入两个字符,比较其大小,输出大于、等于和小于的判断结果。,#include using namespace std; int main() char ch1,ch2; coutch1ch2; if(ch1!=ch2) if(ch1ch2) coutch1“大于“ch2endl; else coutch1“小于“ch2endl; else coutch1“等于“ch2endl; return 0; ,29,2.2.2 switch语句,switch (表达式) case 常量表达式1: 语句1 case 常量表达式2: 语句2 case 常量表达式n: 语句n default: 语句序列n+1 ,注意:表达式只能是整型、字符型或枚举型,30,31,【例2.7】将输入的百分制成绩按以下规定转换成相应的等级:,成 绩 等级 10090 优秀 8980 良好 7970 中等 6960 及格 590 不及格,32,#include using namespace std; int main() float score; coutscore; if(score=0 ,共用同一个语句组,思考:若省去break语句,情况会怎样?,33,循环?,利用计算机重复处理某些实际问题,2.3 循环结构,34,循环的引出 示例1 求 1+2+3+4+5+.+100 =?,特点: 1. 步骤多,2. 工作雷同,s=0; s=s+1; s=s+2; s=s+3; . . . s=s+100;,s=s+i,i=i+1,35,2.3.1 while 语句,while (表达式) 语句,循环体,执行重复工 作的语句,循环判断条件,36,假,表达式,循环体,真,求 1+2+3+4+5+.+100 =?,s=0; s=s+1; s=s+2; s=s+3; . . . s=s+100;,i=100,s=s+i i=i+1,i是循环变量,37,【例2.8】求 1+2+3+100,#include using namespace std; int main() int i(1),sum(0); /定义变量,初始化 while(i=100) /构造循环 sum+=i; / 循环体,多次执行 i+; cout“sum=“sumendl; return 0; ,sum,i,第1次,初始值,0,1,1,2,第2次,3,3,. . .,第99次,4950,100,第100次,5050,101,38,2.3.2 do-while语句,do 语句 while (表达式);,39,【例2.10】 求自然数1100之和,要求用do-while语句实现。,#include using namespace std; int main() int i(1),sum(0); do sum+=i;
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号