【文档说明】计算机系面向对象程序设计(C汇总课件.ppt,共(39)页,419.001 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-77520.html
以下为本文档部分文字说明:
台州学院·计算机系·面向对象程序设计(C++)1第三讲:基本编程语句3.1选择语句3.2循环语句3.3转向语句台州学院·计算机系·面向对象程序设计(C++)23.1选择语句如果今天是春季的周末,我会去登山如果今天是夏季的周末,我会去游泳如果今天是秋季的周末,我会去钓鱼如果今天是冬季的周末,我会
去滑雪……可惜啊,今天不是周末,我在这里上课……台州学院·计算机系·面向对象程序设计(C++)3•if语句形式1:例:if(a>b)cout<<a<<endl;false(0)true(非0)表达式语句if(表达式)语句;台州学院·计算机系·面向对象程序设计(C++)4例:输入
三个整数,按从小到大顺序输出。a752bca>b:aba572bca275bc27a>c:ac2b>c:bca257bca<ba<b,a<ca<b&&b<c台州学院·计算机系·面向对象程序设计(C++)5#includ
e<iostream>usingnamespacestd;voidmain(){inta,b,c,t;cout<<"Pleaseinputthreeintegernumbers:";cin>>a>>b>>c;if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}cout<<a<<""<<b<<""<<c<<endl;}台州学院·计算机系·面向对象程序设计(C++)6•if语句形式2:if(表达式)语句1;else语句2;false(0)true(非0)表达式语句1
语句2例:if(a==b)cout<<a<<endl;elsecout<<b<<endl;台州学院·计算机系·面向对象程序设计(C++)7•if语句的嵌套–if语句中的执行语句又是另一个if语句,称为嵌套if语句–if与else的
配对关系:else总是与它接近的if配对–使用复合语句,可以改变条件语句的执行流程台州学院·计算机系·面向对象程序设计(C++)8例:编写程序计算货物运费。设货物运费每吨单价p(元)与运输距离s(公里)之间有如下
关系:400204003005.22300200252001005.2710030sssssp=输入要托运的货物重量为w吨,托运距离s公里,计算总运费t:t=p*w*s台州学院·计算机系·面向对象程序设计(C++)9truefalsetr
uetruetruefalsefalsefalseS<100?S<200?S<300?S<400?P=30P=20P=22.5P=25P=27.5t=p*w*s台州学院·计算机系·面向对象程序设计(C++)10#include<iostream>u
singnamespacestd;voidmain(){doublet,p,w,s;cout<<"Pleaseinputweight(ton):";cin>>w;cout<<"Pleaseinputdistsnce(kilometre):";cin>>s;if(s<100)p=30
;elseif(s<200)p=27.5;elseif(s<300)p=25;elseif(s<400)p=22.5;elsep=20;t=p*w*s;cout<<"Thecostis:"<<t<<endl;}次序改变会怎样?cin>>s;if(s<300)p=25;elsei
f(s<100)p=30;elseif(s<400)p=22.5;elseif(s<200)p=27.5;elsep=20;t=p*w*s;若输入s:150输出t值等于多少?为什么?台州学院·计算机系·面向对象程序设计(C++)11例:输入三个整数,按从小到大顺序输出3个数的6种可能排列方式
:•1.a<b<ca<b&&b<c•2.a<c<ba<c&&c<b•3.b<a<cb<a&&a<c•4.b<c<ab<c&&c<a•5.c<a<bc<a&&a<b•6.c<b<ac<b&&b<a可以直接用6个if语句写出程序最坏情况:6(9个关系运算和3个逻辑运算)最
好情况:1(2个关系运算和1个逻辑运算)改进分析:首先分析a,b的顺序然后分析c的情况台州学院·计算机系·面向对象程序设计(C++)12truefalsetruetruetruefalsefalsefalsefalsetruea<b?b<c?a<c?c,a,
ba,c,ba,b,ca<c?b<c?b,a,cb,c,ac,b,abaab最坏情况:1,2,5,6(做3次关系运算)最好情况:3,4(做2次关系运算)123456台州学院·计算机系·面向对象程序设计(C++)13t
ruefalsetruetruetruefalsefalsefalsefalsetruea<b?b<c?a<c?c,a,ba,c,ba,b,ca<c?b<c?b,a,cb,c,ac,b,abaab#include<iostream>usingnamespace
std;voidmain(){inta,b,c;cout<<"Pleaseinputthreeintegernumbers:";cin>>a>>b>>c;if(a<b)if(b<c)cout<<a<<b<<c<<endl;
elseif(a<c)cout<<a<<c<<b<<endl;elsecout<<c<<a<<b<<endl;elseif(a<c)cout<<b<<a<<c<<endl;elseif(b<c)cout<<b<<c<<a<<endl;elsecout<<c<<
b<<a<<endl;}注意if-else的搭配台州学院·计算机系·面向对象程序设计(C++)14错综复杂时,必须注意两义性:if(x>0)if(x<50)cout<<”xisok.\n”;elsecout<<”xisnotok.\n”;正解:else从属于
紧挨的ifif(x>0){if(x<50)cout<<”OK\n”;elsecout<<”NOTOK\n”;}误解:else从属于外面的ifif(x>0){if(x<50)cout<<”OK\n”;}elsecout<<”NOTOK\n”;台州学院·计算机系·面向对象程序设计
(C++)15if(E1)if(E2)S1elseS2if(E1){if(E2)S1}elseS2分析S1和S2的执行条件:E1&&E2执行S1E1&&!E2执行S2E1&&E2执行S1!E1执行S2注
意括号的作用台州学院·计算机系·面向对象程序设计(C++)16•switch语句根据一个整型表达式的值决定程序分支一般形式:switch(表达式){case常量表达式1:语句1case常量表达式2:语句2…case常量表达
式n:语句ndefault:语句n+1}注:表达式类型为非浮点型各常量表达式类型要与之匹配各常量表达式要求各不相等default子句可选。缺省时,没有匹配值switch语句为空语句标号台州学院·计算机系·面向对象程序设计(C++)17表达
式语句1语句2语句3语句n语句n+1=常量1=常量2=常量3=常量n=常量n+1台州学院·计算机系·面向对象程序设计(C++)18•switch语句与if语句的互换//switch多分支语句:switch(整数表达式){casevalue1:语句1;break;c
asevalue2:语句2;break;…default:语句n;}if(整数表达式==value1)语句1;elseif(整数表达式==value2)语句2;…else语句n;}等价于break:无条件结束switch语句台州学院·计算机系·面向对象程序设计(C+
+)19•小结:选择语句有if语句和switch语句–if语句适用于条件判断比较复杂的分支结构。嵌套if语句采用就近匹配的原则。用括号{}改变复合语句结构,可以改变if与else的匹配关系。–switch语句根据一个表达式的不同可能
值决定选择执行,适用于条件判断比较简单的多路选择。台州学院·计算机系·面向对象程序设计(C++)203.2循环语句•while语句当型循环循环体的算法是什么?循环的条件、循环结束条件是什么?如何修改循环条件?while(条件表达式)循环体;循环变量初始化循环体改变循环变量继
续条件truefalse台州学院·计算机系·面向对象程序设计(C++)21例:一个简单的循环:求1001iisum#include<iostream>usingnamespacestd;voidmain(){inti=1,sum=0;while(i<=100){sum=sum+i;i++
;}cout<<"sum="<<sum<<endl;}i=1,sum=0;sum=sum+i;i++;i<=100truefalse台州学院·计算机系·面向对象程序设计(C++)22•do…while语句直到型循环do循环体while(表达式);循环变量初始化循环体改变循
环变量继续条件truefalse#include<iostream>usingnamespacestd;voidmain(){inti=1,sum=0;do{sum+=i;i++;}while(i<=100);cout<<"sum="<<sum<<
endl;}台州学院·计算机系·面向对象程序设计(C++)23•for语句for(表达式1;表达式2;表达式3)循环体;循环初始状态继续条件(条件表达式)改变循环变量表达式2循环体truefalse表达式1表达式3台州学院·计算机系·面向对象程序设计(C++)24#inclu
de<iostream>usingnamespacestd;voidmain(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;cout<<"sum="<<sum<<endl;}i<=100sum+=itruefalsei=1i++sum=0co
ut<<sum台州学院·计算机系·面向对象程序设计(C++)25不同形式的for语句结构(1)i=1;//缺省表达式1for(;i<=n;i++){sum=sum+i;}(2)for(i=1;;i++){sum=sum+i;ifi>nbreak;}
//缺省表达式2(3)for(i=1;i<=n;){sum=sum+i;i++;}//缺省表达式3(4)for(i=1;i<=n;sum+=i++);//缺省循环体(5)for(i=1;sum+=i++,i<=n;
);//缺省表达式3和循环体(6)i=1;for(;;){sum+=i++;if(i>n)break;}//缺省全部for的表达式注意逗号表达式break:终止循环台州学院·计算机系·面向对象程序设计(C++)26•循环的嵌套–一个循环语句的循环体内又包含循环语句,称为嵌套循环–各种循环语
句都可以互相嵌套//测试循环执行次数#include<iostream>usingnamespacestd;voidmain(){cout<<"i\tj\n";for(inti=1;i<=3;i++)//外循环{cout<<i;for(intj=1;j<=3;j+
+)//内循环{cout<<'\t'<<j<<endl;}}}ij112321233123台州学院·计算机系·面向对象程序设计(C++)27•判断表达式的使用–表达式的值等于非0,是逻辑真;表达式的值等于0,是逻辑假–算术表达式用于判
断if(expression!=0)if(expression)if(expression==0)if(!expression)输出1~100之间的奇数for(inti=1;i<=100;i++)if(i%2)cout<<
i<<'\t';i%2!=0x!=0&&y==0X坐标轴上不在原点的坐标值while(x&&!y)……台州学院·计算机系·面向对象程序设计(C++)28–赋值表达式用于判断if(c=a-b)…else…c=a-b;if(c!=0)台州学院·计算机系·
面向对象程序设计(C++)29•小结:while,do…while,for的区别–for通常用于固定步长的循环–while通常用于循环条件要在一开始就进行判断的循环–do…while用于循环体至少要执行一次的循环台州学院·计算机系·面向对象程序设计
(C++)303.3转向语句•break语句–无条件地结束switch语句,–循环语句,转向执行语句块的后续语句•continue语句–用于循环体中,终止当前一次循环台州学院·计算机系·面向对象程序设计(C++)31•bre
ak除了用在switch之外,主要的是用在终结本次循环for(inti;;){for(;;){//...if(i==1)break;//...}a=1;//...}break跳到此处台州学院·计算机系·面
向对象程序设计(C++)32•continue一般是用条件判断执行的,通过反条件,可以免去continue的使用,所以,它用来构筑良好的程序风格for(intn=100;n<=200;++n){if(n%3==0)continue;cout<<n<<endl;}•免去continue的情形:fo
r(intn=100;n<=200;++n)if(n%3!=0)cout<<n<<endl;台州学院·计算机系·面向对象程序设计(C++)33•goto的程序段除了系统跟踪和架构困难外,阅读也相对复杂inta;gotoInit;Forw
ard:a=a+1;Print:cout<<a<<endl;gotoDown;Init:a=1;gotoPrint;Down:if(a<100)gotoForward;等价于:for(inti=1;i<=100;++i)cout<<i<<"\n";台州
学院·计算机系·面向对象程序设计(C++)343.4应用实例•练习4.8.1#include<iostream>usingnamespacestd;voidmain(){for(inti=1;i<=10;i++){for(intj=1;j<=10-i;j++)cout<
<"";for(intk=1;k<=2*i-1;k++)cout<<"#";cout<<endl;}}台州学院·计算机系·面向对象程序设计(C++)35•练习4.8.2#include<iostream>usingnamespacestd;voidmain(){fo
r(inti=1;i<=8;i++){for(intj=1;j<=i;j++)cout<<"";for(intk=1;k<=18-i;k++)cout<<"#";cout<<endl;}}台州学院·计算机系·面向对象程序设计(C++)36•练习4.9.1#in
clude<iostream>#include<iomanip>usingnamespacestd;voidmain(){cout<<"*";for(inti=1;i<=9;i++)cout<<setw(4)<<i;cout<<"\n----------
-------------------------------\n";for(intj=1;j<=9;j++){cout<<setw(3)<<j;for(intk=1;k<=9;k++)cout<<setw(4)<<j*k;cout<<endl;}}台州学院·计算机系·面向对象程序设计(C+
+)37•练习4.9.2#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){cout<<"*";for(inti=1;i<=9;i++)cout<<setw(4)<<i;cout<<"\n------
-----------------------------------\n";for(intj=1;j<=9;j++){cout<<setw(3)<<j;for(intk=1;k<=j;k++)cout<<setw(4)<<j*k;cout<<endl;}}台州学
院·计算机系·面向对象程序设计(C++)38•练习4.9.3#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){cout<<"*
";for(inti=1;i<=9;i++)cout<<setw(4)<<i;cout<<"\n-----------------------------------------\n";for(intj=1;j<=9;j++){cout<<setw(3)<<j;if
(j!=1)cout<<setw(4*j-4)<<"";for(intk=j;k<=9;k++)cout<<setw(4)<<j*k;cout<<endl;}}台州学院·计算机系·面向对象程序设计(C++)39再谈C++学习if(你觉得理解书本内容有问题){多看几本其他的参考书();多
上机练习();}elseif(课堂上有内容不懂||跟不上讲课进度)做好课前预习和课后复习();随时举手提问();else{继续往后自学();帮助一下有困难的同学();}