《C++ chapter 5》由会员分享,可在线阅读,更多相关《C++ chapter 5(28页珍藏版)》请在金锄头文库上搜索。
1、1)面向过程的程序设计面向过程的程序设计2)C+程序组成、语句类型、执行语句程序组成、语句类型、执行语句3)cout与与cin一般格式、智能识别、输出表达式一般格式、智能识别、输出表达式4)顺序结构,关键:处理逻辑转换为顺序结构,关键:处理逻辑转换为C+表示表示5)关系运算符、结合性、优先级关系运算符、结合性、优先级6)关系表达式的值、逻辑常量、数字特征关系表达式的值、逻辑常量、数字特征真:真:1、true;假:假:0、false7)算法框图:三角形、长方形、箭头线、算法框图:三角形、长方形、箭头线、Y/N1)3种逻辑运算符:种逻辑运算符: (1) & 逻辑与逻辑与 (相当于其他语言中的相当于
2、其他语言中的AND) (2) | 逻辑或逻辑或 (相当于其他语言中的相当于其他语言中的OR) (3) ! 逻辑非逻辑非 (相当于其他语言中的相当于其他语言中的NOT)例例1:假设假设a、b为逻辑变量为逻辑变量 a & b 若若a,b为真,则为真,则 a & b 为真,如:为真,如:5.0&2 a|b 若若a,b之一为真,则之一为真,则a|b为真,如:为真,如:5.0|0 !a 若若a为真,则为真,则!a为假,如:为假,如:!5.0书中书中P63表表3.2为逻辑运算的为逻辑运算的“真值表真值表”,要仔细理解与熟悉。,要仔细理解与熟悉。3.6.3 逻辑运算和逻辑表达式逻辑运算和逻辑表达式2)优先级
3、、左结合:)优先级、左结合: (1) !(非)(非) &(与)(与)|(或)(或) (2) “&”和和“|”低于关系运算符(当然低于算术运算符)低于关系运算符(当然低于算术运算符) (3)“!”高于算术运算符(当然高于关系运算符)高于算术运算符(当然高于关系运算符)例例2:假设假设a、b为逻辑变量为逻辑变量 (ab) & (xy) 可写成可写成 ab & xy (a=b) | (x=y) 可写成可写成 a=b | x=y (!a) | (ab) 可写成可写成 !a | ab3)逻辑表达式)逻辑表达式 两个关系表达式用逻辑运算符连接起来的表达式,两个关系表达式用逻辑运算符连接起来的表达式,即:即
4、: 表达式表达式 逻辑运算符逻辑运算符 表达式表达式 逻辑表达式的值逻辑表达式的值是逻辑量是逻辑量“真真”(1/true)或或“假假”(0/false)例例3:假设假设a=4,b=5.0、c=6,则,计算如下逻辑表达式的值则,计算如下逻辑表达式的值(1)!a;(;(2)a&b;(;(3)a-b|a+b;(;(4)!a|b(5) bac 与与 ba & ac 等价否等价否?解:解:(1) !a的值为的值为0;(2) a & b的值为的值为1。(3) a-b | a+b的值为的值为1;(4) !a | b的值为的值为1。(5) 不等价,结果不一样。又不等价,结果不一样。又 aby) coutxy)
5、 coutx; else couty) coutx; / 注意分号 else couty) coutx;else cout 500) tax = 0.70; amount += 2; else tax = 0.75; if (score=90) cout=80) cout= 70) cout = 60) cout “及格” else cout “不及格” endl; cout score b)?a:b;3.9 多分支选择结构和多分支选择结构和switch 语句语句3.8 条件运算符和条件表达式条件运算符和条件表达式if (ab) max = a;else max = b;switch语句是多分
6、支选择语句,用来实现多分支选择结构。语句是多分支选择语句,用来实现多分支选择结构。它的一般形式如下:它的一般形式如下:switch(表达式)表达式) case 常量表达式常量表达式1:语句:语句1 case 常量表达式常量表达式2:语句:语句2 . case 常量表达式常量表达式n:语句语句n default:语句语句n+1 switch(grade) case A: cout85100n; case B: cout7084n; case C: cout6069n; case D: cout60n; default : couterrorn; 说明:说明:(1) switch后面括号内的后面括
7、号内的“表达式表达式”,允许为任何类型。,允许为任何类型。(2) 当当switch表达式的值与某一个表达式的值与某一个case子句中的常量表达式的子句中的常量表达式的值相匹配时,就执行此值相匹配时,就执行此case子句中的内嵌语句,若所有的子句中的内嵌语句,若所有的case子句中的常量表达式的值都不能与子句中的常量表达式的值都不能与switch表达式的值匹表达式的值匹配,就执行配,就执行default子句的内嵌语句。子句的内嵌语句。(3) 每一个每一个case表达式的值必须互不相同。表达式的值必须互不相同。(4) 各个各个case和和default的出现次序不影响执行结果。的出现次序不影响执行
8、结果。(5) 执行完一个执行完一个case子句后,流程控制转移到下一个子句后,流程控制转移到下一个case子句子句继续执行。继续执行。“case常量表达式常量表达式”只是起语句标号作用,并只是起语句标号作用,并不是在该处进行条件判断。例如,上面的例子中,若不是在该处进行条件判断。例如,上面的例子中,若grade的值等于的值等于A,则将连续输出:则将连续输出: 85100 7084 6069 60 error因此,应该在执行一个因此,应该在执行一个case子句后,使流程跳子句后,使流程跳出出switch结构,即终止结构,即终止switch语句的执行。语句的执行。可以用一个可以用一个break语句
9、来达到此目的。将上语句来达到此目的。将上面的面的switch结构改写如下:结构改写如下:switch(grade) case A: cout85100n;break; case B: cout7084n;break; case C: cout6069n;break; case D: cout60n;break; default : couterrorn;break; 在在case子句中虽然包含一个以上执行语句,但可以子句中虽然包含一个以上执行语句,但可以不必用花括号括起来,会自动顺序执行本不必用花括号括起来,会自动顺序执行本case子句子句中所有的执行语句。中所有的执行语句。(6) 多个多个c
10、ase可以共用一组执行语句,如可以共用一组执行语句,如 . case A: case B: case C: cout60n; .当当grade的值为的值为A、B或或C时都执行同一时都执行同一组语句。组语句。3.10 编写选择结构的程序编写选择结构的程序例例3.9 运输公司根据货物重量运输公司根据货物重量w计费,标准如下:计费,标准如下: w100kg 或或 w 3000kg 15%折扣折扣100w1000 5折扣折扣1000w2000 8折扣折扣2000w3000 10折扣折扣设每吨货物的基本运费为设每吨货物的基本运费为p,货物重为,货物重为w,折扣为,折扣为d,则总运费则总运费f的计算公式为
11、的计算公式为: f = p * w * (1 - d)int main( ) float p,w,d,f; coutpw; if (w = 3000) d=0.15; else if (w = 100 & w= 1000 & w = 2000 & w 3000) d =0.10; f=p*w*(1-d); / 如果与上句对齐? coutfreight=fendl; return 0;int main( ) float p,w,d,f; coutpw; if (w = 3000) d=0.15; else if (w 1000) d=0.05; else if(w 2000) d = 0.08;
12、 else if(w 3000) d =0.10; f=p*w*(1-d); coutfreight=fendl; return 0;3.11.1 用用while语句构成循环语句构成循环一般形式如下(一般形式如下(当型循环当型循环):):while (表达式表达式) 语句语句;其作用是:其作用是: 当指定的条件为真当指定的条件为真(表达式为非表达式为非0)时,执行时,执行while语语句中的内嵌语句(一条语句或句中的内嵌语句(一条语句或复合语句)。复合语句)。1)特点:特点:先判断表达式是否成立,后执行语句;先判断表达式是否成立,后执行语句;2)括号:括号:表达式必须在括号内;表达式必须在括号
13、内;3)复合句:复合句:循环内多条语句时用循环内多条语句时用包含包含复合语句,且复合语句,且 右花括号右花括号后没有分号后没有分号3.11 循环结构和循环语句循环结构和循环语句例例3.10 求求1+2+3+100。1)用流程图表示算法图)用流程图表示算法图2)根据流程图写出程序)根据流程图写出程序#include using namespace std;int main( ) int i=1, sum=0; / 初始值初始值 while (i=100) / 循环结束判断循环结束判断 sum=sum+i; / sum += i; i+; / 循环控制变量增加语句循环控制变量增加语句 / 一般不写
14、分号一般不写分号 coutsum=sumendl; return 0;运行结果为:运行结果为:sum=5050说明:1)和的初始值 sum 为 02)循环控制变量 i 的初始值为13)要有循环变量增加及循环结束语句4)复合语句用实现问题:sum初始值为1,改语句sum +=i 为sum *= i, 其结果如何?do-while语句其一般形式(语句其一般形式(do循环循环)do 语句语句; while (表达式表达式);1)特点:特点:是先执行循环体,然后是先执行循环体,然后判断循环条件是否成立。判断循环条件是否成立。2)执行顺序:执行顺序:先执行一次指定的先执行一次指定的语句语句(即循环体即循
15、环体),然后判别表达式,然后判别表达式,当表达式的值为非零当表达式的值为非零(“真真”) 时,返时,返回重新执行循环体语句,如此反复,直到表达式的值等回重新执行循环体语句,如此反复,直到表达式的值等于于0(为假)为止,此时循环结束(为假)为止,此时循环结束。3.11.2 用用do-while语句构成循环语句构成循环例例3.11 用用do-while语句求语句求1+2+3+100。1)先画出流程图)先画出流程图2)编写出下面的程序)编写出下面的程序#include using namespace std;int main( ) int i=1, sum=0; / 给出初始值给出初始值 do su
16、m=sum+i; / sum += i; i+; while (i=100); / 结束判断结束判断 coutsum=sumendl; return 0;说明:1)和的初始值 sum 为 02)循环控制变量 i 的初始值为13)要有循环变量增加及循环结束语句4)复合语句用实现for语句的一般格式为语句的一般格式为for(表达式表达式1;表达式;表达式2;表达式;表达式3) 语句语句;1)特点:特点:可以用于循环次数确定的情况,可以用于循环次数确定的情况,可以用于循环次数不确定而只给出循环结可以用于循环次数不确定而只给出循环结束条件的情况,完全可以代替束条件的情况,完全可以代替while语句。语
17、句。2)执行过程:)执行过程:(1) 求解表达式求解表达式1;(2) 求解表达式求解表达式2,若其值为真,若其值为真(值为非值为非0),则执,则执 行行for语句中指定的内嵌语句,然后执行下语句中指定的内嵌语句,然后执行下 面第面第(3)步。若为假步。若为假(值为值为0),则结束循环,转到第,则结束循环,转到第(5)步;步;(3) 求解表达式求解表达式3;(4) 转回上面第转回上面第(2)步骤继续执行;步骤继续执行;(5) 循环结束,执行循环结束,执行for语句下面的一个语句。语句下面的一个语句。3.11.3 用用for语句构成循环语句构成循环for语句的常用格式如下:语句的常用格式如下: f
18、or(循环变量赋初值;循环条件;循环变量增值循环变量赋初值;循环条件;循环变量增值) 语句语句; 例如:用例如:用for循环计算循环计算1+2+100for语句常见格式的说明:语句常见格式的说明:1)循环初始值:循环初始值:表达式表达式1一般是设置循环变量初值的赋值表达一般是设置循环变量初值的赋值表达式。省略式。省略“表达式表达式1”,此时应在,此时应在for语句之前给循环变量赋语句之前给循环变量赋初值。初值。2)永真表达式:永真表达式:省略表达式省略表达式2,即不判断循环条件,也就是认,即不判断循环条件,也就是认为表达式为表达式2始终为真。循环无终止地进行下去。始终为真。循环无终止地进行下去
19、。 3)循环条件:循环条件:省略表达式省略表达式1和表达式和表达式3,只有表达式,只有表达式2,此时只,此时只给循环条件。给循环条件。int i, sum=1;for(i=1; i=100; i+) / c风格 sum=sum+i;int i, sum=1;for(i=1; i=100; +i) / c+风格 sum=sum+i; 3.11.4 循环的说明与比较循环的说明与比较1)while和do-while循环:在while后面指定循环条件的,在循环体中应包含使循环趋于结束的语句(如i+,或i=i+1等)。do-while 不常用。2)for循环:可以在表达式3中包含使循环趋于结束的操作,甚
20、至可以将循环体中的操作全部放到表达式3中。因此for语句的功能更强,凡用while循环能完成的,用for循环都能实现。3)用while和do-while循环时:循环变量初始化的操作应在while和do-while语句之前完成。而for语句可以在表达式1中实现循环变量的初始化。循环嵌套:循环嵌套:一个循环体内又包含另一个完整的循环结构,称一个循环体内又包含另一个完整的循环结构,称为循环的嵌套,从而构成多层循环。为循环的嵌套,从而构成多层循环。3.12 循环的嵌套循环的嵌套(1) while( ) while( ) (2) do do while( );while( );(3) for(;) fo
21、r(;) (4) while( ) do while( );(5) for(; ) while( ) (6) do for (;) while( );1)break语句的一般格式为:语句的一般格式为:break;作用:作用:使流程从循环体内跳出,即提前结束循环,接着使流程从循环体内跳出,即提前结束循环,接着执行循环体下面的语句。执行循环体下面的语句。break语句只能用于循环语句和语句只能用于循环语句和switch语句内,不能单独使用或用于其他语句中。语句内,不能单独使用或用于其他语句中。2)continue语句的一般格式为:语句的一般格式为:continue;作用:作用:结束本次循环执行步,
22、即跳过循环体中下面尚未结束本次循环执行步,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。执行的语句,接着进行下一次是否执行循环的判定。3)continue语句和语句和break语句的语句的区别区别:continue语句只结束语句只结束本次本次循环,而不是终止循环,而不是终止整个整个循环的执循环的执行。而行。而break语句则是语句则是结束整个结束整个循环过程,不再判断执行循环过程,不再判断执行循环的条件是否成立。循环的条件是否成立。 见如下代码段和图表示见如下代码段和图表示3.13 break语句和语句和continue语句语句 循环语句段1 :while(表达式1) i
23、f (表达式2) break; 循环语句段2: while(表达式1 ) if (表达式2) continue; 循环语句段循环语句段1循环语句段循环语句段2例例3.12 用下面公式求用下面公式求的近似值直到最后一项的近似值直到最后一项的绝对值小于的绝对值小于10-7为止。为止。/41-1/3+1/5-1/7+。注意:注意: 1)如何算法?)如何算法?2)不要)不要把把n定义为整型变量。定义为整型变量。问题:有其它算法否?用问题:有其它算法否?用for做?做?3.14 编写循环结构的程序编写循环结构的程序#include #include using namespace std;int main( ) int s=1; double n=1,t=1,pi=0; while(fabs(t)1e-7) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; cout“pi=“piendl; return 0;