




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章VC+程序结构顺序、选择、循环第1页,共50页。程序的三种基本结构 顺序结构a块b块AB分支选择结构a块b块成立不成立条件AB条件a 块成立不成立AB 循环结构第2页,共50页。赋值表达式深入“再谈”变量占位符拥有内存空间的标识符变量的输入,即将值存入对应内存对变量的赋值,用新值覆盖性地改写原来存储的值变量的引用即将对应内存中的值代换变量int a;acina;a=10;2int b=a;10b10?如何理解语句a=a+1;?如何交换变量a、b的值第3页,共50页。赋值表达式深入赋值表达式:左结合,所赋之值为表达式的值。可作为操作数参与其他运算。b=c=d=a+5a=(b=4)+(c=6
2、)复合赋值表达式+=、-=、*=、/=a+=3 等价于 a=a+3赋值表达式加“;”即可称为赋值语句第4页,共50页。赋值表达式深入赋值时的类型转换整型实型 :去掉小数赋值,注意溢出实型整型 :加 .0整型unsigned char :按字节赋值,高八位补0整型signed char :按字节赋值,扩展符号位整型unsigned int 或 long int : 注意溢出强制的类型转换溢出:超出可表示范围,结果出错,系统不报错第5页,共50页。赋值表达式深入赋值时的类型转换int a=258,b;unsigned char c;b=c=a;b=?int a=254,b;char c;b=c=a
3、;b=?第6页,共50页。特殊的算术运算自增运算()int p1;p+; /等价于p=p+1;只有变量有自增运算自增运算分前置自增(+p)和后置自增(p+)前置自增:先自增、再取值后置自增:先取值、再自增int p=1,a;a=+p; /和a=p+;结果比较自减()第7页,共50页。选择语句第8页,共50页。选择结构之条件语句条件语句利用关键字if选择执行两个分支中的一个分支,因此通常也称为“if语句”。分支选择结构a块b块成立不成立条件AB当(如果)条件成立时执行a块if (条件成立)a块语句;如何表达?第9页,共50页。关系运算符与关系表达式 关系运算是对两个操作数进行的比较运算: = =
4、 !=关系表达式的运算结果是一个整数当关系成立时,结果为1当关系不成立时,结果为0。关系表达式多用于条件的判断第10页,共50页。选择结构之条件语句引例:已知,当x1时,y=x,其中x、y均为整数,请编程实现根据x的值输出y的值。分析:主要问题当(如果)x1时,y=x转换代码if (x=1)y=x;补充代码块内只有一条语句时,可省第11页,共50页。例:当x1时,y=x,其中x、y均为整数。#includevoid main()int x,y;coutx;if(x=1)y=x;couty=yendl;单选条件语句条件表达式”x=1”要用圆括号括起来if所在行末尾没有分号!为什么?第12页,共5
5、0页。二中选一条件语句#includevoid main()int x,y;coutx;if(x1)y=2*x-1;couty=y1可简化为:if(x1非此即彼第13页,共50页。嵌套条件语句#includevoid main()int x,y;coutx;if(x1 & x=10)y=3*x+11;couty=yn;分段函数y=x 当x1y=2x-1 当1x1 & x10是何意?为何不写成1x0 & y0 成立;x & y0 成立; x & y 成立。x0 | y0 成立;x | y 成立。!(x0) 不成立;!(x!=1) 成立;!x 不成立。如果x=0,y=-1,则 x0 & y0 不成
6、立;x & y0 不成立; x & y 不成立。x0 | y0 不成立;x | y 成立。!(x0) 成立;!(x!=1) 不成立;!x 成立。第16页,共50页。课内练习:?数学中xa或xb, 在c+中应如何表示?数学中axb , 在c+中应如何表示第17页,共50页。回到嵌套条件语句#includevoid main()int x,y;coutx;if(x1 & x=10)y=3*x+11;couty=yn;分段函数y=x 当x1y=2x-1 当1x10y=3x+11 当x10可简化为:if(x=1)y=x;else if(x1 & x1代表条件 x=10第18页,共50页。条件运算符”?
7、:”条件运算符“? :”为三目运算符,要求有三个操作对象,使用格式为: ? : 计算条件表达式值的具体过程如下:先计算,若其值不等于0,则计算,并将计算的值作为该条件表达式的值;否则求解的值,并将该值作为条件表达式的值。条件条件成立条件不成立第19页,共50页。例:求两个整数中的较大数#includevoid main()int a,b,max;couta;coutb;if(a=b)max=b;elsemax=a;coutmax=maxn;可简化为:max=(a=b) ? b : a;第20页,共50页。例:输入两个整数,按从小到大的顺序输出这两个数。#includevoid main()in
8、t a,b;couta;coutb;if(a=b)couta,bn;elsecoutb,an;一行可以写多条语句。另一种方法:如果a比b大,则将a、b的值交换后再输出。第21页,共50页。第一个算法:交换两个变量的值#includevoid main()int a,b,t;couta;coutb;if(ab)t=a;a=b;b=t;couta,bendl;可不可以写成:a=b;b=a;if分支语句如果不止一条,则须把这些语句用花括号括起来。用花括号括起来的语句称之为复合语句。第22页,共50页。if(条件)语句小结单选条件:if () 嵌套条件(多条件):if () else if() els
9、e if else 二选一条件:if () else 第23页,共50页。条件语句小结上述三种形式中的可以是一般的表达式,也可为一个变量。表达式的值用来表示“条件”,必须放在括号中。if和else后的部分如果有多个语句,则必须用大括号 括起来,构成复合语句;对于单个语句,则可以不用大括号。第24页,共50页。条件语句小结if和else后的还可以是if语句。如: if ( ) if ( ) 语句1 else ( ) 语句2 else if ( ) 语句3 else ( ) 语句4else不能单独使用,必须与最近的if配对。(语句行缩进)第25页,共50页。switch语句(开关语句)与嵌套语句类
10、似,用于多条件选择switch() case : 语句序列1 break; case : 语句序列n break; default: 控制表达式(整型、字符型)情况常数(整型、字符型)第26页,共50页。switch语句(开关语句) switch语句的执行过程为先计算switch控制表达式的值然后,将该值与每个case分支中的常量表达式的值进行比较如果相等,则执行该分支后面的语句序列,直到遇到一个break为止,结束switch结构;如果没有一个相等,则执行default分支中的语句序列;如果既没有匹配的case,又没有default分支,则不执行该switch结构中的任何语句。第27页,共5
11、0页。课堂练习,找出语法错误 #define m 4/宏定义const int n=3;float x; int a,b;a=3; b=4;switch(2*x) /A case 3.5: /B case a+b: /C case 1,2,3: /D case 3*m: /E case m+n: /F 第28页,共50页。switch语句(开关语句)“break”语句称为跳转语句用于跳出switch语句,终止switch语句的执行在一个case分支中,如果没有break语句,则switch在执行完一个case分支之后,会继续执行下一个case分支语句在一个case分支的语句序列中,break语
12、句通常都为最后一条语句。“default”为缺省分支相当于嵌套条件语句中的else它的作用是匹配“除上述case之外的一切情况”default分支语句可以放在switch语句中的任何位置,但通常为最后一个分支,因为在它之后的case分支不起任何作用第29页,共50页。例:要求按照考试成绩的等级打印出分数段 switch(grade) case a: cout“85-100n”; case b: cout“70-84n”; case c: cout“60-69n”; case d: cout“60n”; default: cout“errorn”; ?如果grade的值为c,输出结果是什么60-
13、6960error多余输出?每个case语句序列后缺少break语句!第30页,共50页。switch(grade) case a: cout“85-100n”;break; case b: cout“70-84n”; break; case c: cout“60-69n”; break; case d: cout“60n”; break; default: cout“errorn”; 为了只输出对应标号对应的结果,可在语句后加上break语句! 第31页,共50页。多个case可以共用一组执行语句,例: case a: case b: case c: cout60n”; break;在swi
14、tch结构中,case的多个执行语句不需要用花括号括起来.需要缺省break语句情况又例,教材P45第32页,共50页。使用switch语句的注意点每个case常量表达式值必须互不相同,否则就会出现编译错误 。 switch后控制表达式必须是整数、字符或枚举类型的变量或常量,同样,每一个case分支后的常量表达式必须是由字面常量、宏定义的常量、const常量构成的表达式,其值也必须是整数、字符或枚举类型的常量。且每一个case分支只能判别一个常量。(书例P46) switch结构的执行部分为由多个case分支及可缺省的default分支组成的复合语句,switch语句下面的大括号不能省。 sw
15、itch语句允许嵌套。第33页,共50页。循环结构语句第34页,共50页。循环结构 循环结构一般由两部分组成: 进入或退出循环的条件:该条件决定是否继续下一轮循环。当该条件满足时,进入下一轮循环,否则退出循环。 循环体:为每一轮循环所进行的操作,通常由一个语句序列构成。 条件a 块成立不成立AB 循环结构第35页,共50页。 while()语句 while( )语句属于当型循环结构: while() while( )语句的执行流程为先计算循环条件表达式的值若不等于0,则执行循环体中的语句循环体执行完毕后,再计算循环条件表达式的值,重复以上过程,直到条件循环表达式的值等于0时,退出循环。条件a
16、块成立不成立AB 循环结构第36页,共50页。应用while()语句的注意点while后的“条件表达式”一定要用一对圆括弧“( )”括起来。如果循环体中的语句多于一条时,应该用大括号“”括起来。在循环体中必须有改变“循环条件表达式”值的语句。否则,如果不采用其它方法退出循环,将不能退出循环,成为死循环。 while循环可以嵌套。留心边界值(循环次数)。第37页,共50页。试编程计算1+2+3+4+100的值。void main() int i=1,sum=0; while(i=100) sum=sum+i; i+; coutsum ; 和变量,初值为0!第38页,共50页。dowhile()语
17、句 dowhile()语句的结构属于直到型循环结构,其一般格式为: do while(); dowhile()语句的执行流程为当程序运行到do时,立即执行循环体然后计算循环条件表达式如果循环条件表达式的值不为0,则继续执行循环体如此反复,直到循环条件表达式的值为0,结束循环。 第39页,共50页。应用dowhile()语句的注意点在while()中要注意的地方同样也适用于dowhile()语句对dowhile()还要特别注意一点,即while()后的分号不能少 在一般情况下,用while()语句和dowhile()语句处理同一个问题时,如果两者的循环体和条件表达式都相同,则他们的结果也一样。但
18、是当while后面的条件表达式一开始就为0时,两种循环的结果是不一样的。第40页,共50页。试编程计算1+2+3+4+100的值。void main() int i=1,sum=0; do sum=sum+i; i+; while(i=100) ; coutsum ; 与while循环的区别: 先执行循环体语句,再判断条件表达式,因此do/while循环至少循环一次,而while循环有可能一次循环都不执行!第41页,共50页。例:用迭代法求a0的平方根。其迭代公式为:x0=a/2,xn+1=(xn+a/xn)/2。要求前后两次求出的x的差的绝对值小于10-7。#include #include
19、 void main() float x0,x1,a; cina; if(a0) couta1e-5) x0=x1; x1=(x0+a/x0)/2; couta“的平方根为:”x1n;第42页,共50页。for语句for(;) 非00求解表达式1表达式2循环体求解表达式3for()语句的后继语句for()语句的流程图控制表达式赋初值表达式修正表达式定义循环变量或对循环变量进行初始化改变表达式2中循环变量的值第43页,共50页。试用for循环编程求1+2+3+100的值void main() int i,sum=0; for(i=1;i=100;i+) sum=sum+i; cout“SUM i
20、s”sum;表达式1可以省略,但应写在for循环之前,如下:i=1;for(;i=100;i+) sum=sum+i;表达式3可以省略,但应写在for循环体内,如下:i=1;for(; i=100; ) sum=sum+i; i+;两个“;”永不可缺省!第44页,共50页。试编程输出100200之间的能被3整除的数#includevoid main()int i;for(i=100;i=200;i+)if(i%3=0) coutit;求解“在指定范围找某种特征值”的问题:1.范围可作为循环控制变量的计数范围。2.循环体中用“特征公式”对循环变量的每次取值进行特征筛选。?求解能被11整除的三位数第45页,共50页。 break语句与 continue语句break语句的一般格式为: break; 立即结束整个循环过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沟渠隧道开挖施工方案
- 砂岩沉积盆地施工方案
- 混凝土挡土坝施工方案
- 墙体管道美化施工方案
- 水泥稳定土施工方案
- 二零二五年度保密技术合作保密费及保密期限协议
- 二零二五年度养老服务业劳动合同违约赔偿及服务质量标准合同
- 2025年度购房合同签订及后续房产增值服务协议
- 2025年法拍房屋拍卖议价及成交保障合同
- 二零二五年度大型光伏发电站项目设备安装合同
- GB/T 30797-2014食品用洗涤剂试验方法总砷的测定
- GB/T 20057-2012滚动轴承圆柱滚子轴承平挡圈和套圈无挡边端倒角尺寸
- GB/T 19808-2005塑料管材和管件公称外径大于或等于90mm的聚乙烯电熔组件的拉伸剥离试验
- GB/T 10051.1-2010起重吊钩第1部分:力学性能、起重量、应力及材料
- 2022年人民交通出版社股份有限公司招聘笔试试题及答案解析
- 班组建设工作体系课件
- 第章交通调查与数据分析课件
- 2022年江西制造职业技术学院单招语文试题及答案解析
- 穆斯林太巴热咳庆念词文
- 软硬结合板的设计制作与品质要求课件
- 中医院情志养生共64张课件
评论
0/150
提交评论