【文档说明】C++大学基础教程第三章课件.ppt,共(74)页,383.000 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44708.html
以下为本文档部分文字说明:
2022/11/24精选课件-1-C++大学基础教程第3章过程化语句北京科技大学计算机系2022/11/24精选课件-2-用计算机解决实际问题,首先要分析问题,设计合适的算法,然后编程实现算法。2022/11/24精选课件-3-第3章过程化语句3.1算法的基本控制结构3.2if选择语句3.3swi
tch选择语句3.4循环语句3.5循环嵌套3.6应用举例2022/11/24精选课件-4-3.1算法的基本控制结构2022/11/24精选课件-5-3.1算法的基本控制结构算法1、计算机执行的操作2、这些操作的顺序伪码采用类似计算机语言的分句格式,以自然语
言描述算法。2022/11/24精选课件-6-3.1算法的基本控制结构流程图开始/结束执行判断联系2022/11/24精选课件-7-3.1算法的基本控制结构程序的三种基本控制结构(1)顺序结构(2)选择结构(3)循环结构2022/11/24精选课件-8-3.1算法的基本控制结构
流程控制语句选择语句:if..else、switch循环语句:while、for、do..while转向语句:break、continue2022/11/24精选课件-9-3.2if选择语句2022/11/24精选课件-10-3.2if选择语句if
_else1、没有else分支2、双分支3、多分支4、if语句的嵌套2022/11/24精选课件-11-3.2if选择语句1、没有else分支例如:比较x和y的大小,如果x大则输出x的值if(表达式)语句;if(x>y)cout<<x<<endl;2022/1
1/24精选课件-12-3.2if选择语句2、双分支例如:比较x,y的大小,将较大的数输出if(表达式)语句1;else语句2;if(x>y)cout<<x<<endl;elsecout<<y<<endl;2022/11/24精选课件-
13-例子任意输入一个4位整数的年份,判断该年是否是润年?是指年份能被4整除的那些年,但不包括能被100整除而不能被400整除的年2022/11/24精选课件-14-#include<iostream>us
ingnamespacestd;voidmain(){intyear;cin>>year;if((year%4==0)&&!((year%100==0)&&(year%400!=0)))cout<<"润年"<<endl;else
cout<<"不是润年"<<endl;}2022/11/24精选课件-15-3.2if选择语句3、多分支if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;…else语句n;2022/
11/24精选课件-16-2022/11/24精选课件-17-例子:输出学生的成绩#include<iostream>usingnamespacestd;voidmain(){intx;cin>>x;if(x>=90)cout<<“优秀”<<endl;else
if(x>=80)cout<<“良好”<<endl;elseif(x>=60)cout<<“合格”<<endl;elsecout<<“不及格”<<endl;}2022/11/24精选课件-18-3.2if选择语句4、if语句的嵌套if(表达式1)i
f(表达式2)语句1else语句2elseif(表达式3)语句3else语句42022/11/24精选课件-19-2022/11/24精选课件-20-例子:输出a,b,c中较大的数#include<iostream>usingnamespacestd;voidm
ain(){inta,b,c;cin>>a>>b>>c;if(a>b){if(a>c)cout<<a<<endl;elsecout<<c<<endl;}else{if(b>c)cout<<b<<endl;elsecout<<c<<endl;}}cout<<(a>b?(a>c?a:c):
(b>c?b:c));2022/11/24精选课件-21-3.2if选择语句注意:二义性intx=-1;if(x>0)if(x<50)cout<<“xis<50”endl;elsecout<<“xis<=0”<<endl;if
和else的对应关系,else总是与离它最近的if匹配。{}2022/11/24精选课件-22-3.3switch选择语句2022/11/24精选课件-23-3.3switch选择语句switch(表达式){case常量表达式1:语句1break;case常量
表达式2:语句2break;┇case常量表达式n:语句nbreak;default:语句n+1}跳出switch语句2022/11/24精选课件-24-2022/11/24精选课件-25-例子:输出学生的成绩intx;cin>
>x;switch(x/10){case10:case9:cout<<“优秀”<<endl;break;case8:cout<<“良好”<<endl;break;case7:case6:cout<<“合格”<<end
l;break;default:cout<<“不及格”<<endl;}2022/11/24精选课件-26-3.4循环语句2022/11/24精选课件-27-3.4循环语句三种基本语法1、while语句2、do…w
hile语句3、for语句2022/11/24精选课件-28-#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){cout<<setfill('*')<<setw(
2)<<'\n'<<setw(3)<<'\n'<<setw(4)<<'\n'<<setw(5)<<'\n'<<setw(6)<<'\n'<<setw(7)<<'\n'<<setw(8)<<'\n';}****************************2022/1
1/24精选课件-29-思路:寻找*按行增加的规律域宽i——从2变到8,第一行打印1个*,第二行打印2个*,------。每增加一行,打印的*增加一个。考虑设置一个变量i表示域宽,每增加一行使i增1,直到i的值
超过8。i的初值设为2。2022/11/24精选课件-30-#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){inti=2;cout<<setfill('*
');while(i<=8){cout<<setw(i)<<'\n';i++;}}****************************循环变量循环体循环控制条件2022/11/24精选课件-31-3.4循环语句主要包括3个部分:1、循环控制条件:判断循环操作是否进行的条件;2
、循环体:重复进行的操作;3、循环控制变量:记录循环体执行的次数,或控制循环的结束条件。2022/11/24精选课件-32-3.4循环语句while循环语句while(表达式)循环体语句;2022/11/24精选课件-3
3-例1:编程循环输出1-9这9个数字?#include<iostream>usingnamespacestd;voidmain(){inti=1;while(i<9){cout<<i<<endl;i++;}cout<<“
循环结束”<<endl;}运行结果:123456789循环结束2022/11/24精选课件-34-例2:编程计算1+2+3+….+10的值#include<iostream>usingnamespacestd
;voidmain(){intsum=0,i=0;while(i<=10){sum+=i;i++;}cout<<sum<<endl;}55思考程序段的输出?……while(i<=10){i++;sum=sum+i;}2022/11/24精选课件-35-例3:打印可视字符#include<iostr
eam>usingnamespacestd;voidmain(){unsignedcharch=32;while(ch<128){cout<<(int)ch<<'\t'<<ch<<'\t';ch++;}}2
022/11/24精选课件-36-例4:编程计算的值#include<iostream>usingnamespacestd;voidmain(){intk=1,sum=0,n;cout<<"inputn(n>0):";cin>>n;while(k<=n){sum=sum+
k*k;k++;}if(n>0)cout<<sum/n<<endl;elsecout<<"n不能<=0"<<endl;}2022/11/24精选课件-37-3.4循环语句do..while循环语句do{循环体语句;}while(表达式);2022/11/24精选课件-38-#inc
lude<iostream>#include<iomanip>usingnamespacestd;voidmain(){inti=2;cout<<setfill('*');while(i<=8){cout<<setw(i)<<'\n';i++;}}***
*************************do{cout<<setw(i)<<'\n';i++;}while(i<=8);2022/11/24精选课件-39-例子:编程计算的值#include<iostrea
m>usingnamespacestd;voidmain(){intk=1,sum=0,n;cout<<"inputn(n>0):";cin>>n;while(k<=n){sum=sum+k*k;k++;}if(n
>0)cout<<sum/n<<endl;elsecout<<"n不能<=0"<<endl;}do{sum=sum+k*k;k++;}while(k<=n);2022/11/24精选课件-40-3.4循环语句for循环语句循环结构1、表达式1循环变量初始化;2、表达
式2循环控制条件;3、表达式3循环变量的变化;for(表达式1;表达式2;表达式3)循环体;2022/11/24精选课件-41-例1:编程循环输出1-9这9个数字?#include<iostream>usingn
amespacestd;voidmain(){for(inti=1;i<10;i++)cout<<i<<endl;cout<<“循环结束”<<endl;}运行结果:123456789循环结束2022/11/24精选课件-42-例2:编程计算1+2+3
+….+10的值#include<iostream.>usingnamespcestd;voidmain(){intsum=0;for(inti=1;i<=10;i++)sum+=i;cout<<sum<<endl;}运行
结果:552022/11/24精选课件-43-#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){cout<<setfill('*');}****************************例3for(inti=
2;i<=8;i++)cout<<setw(i)<<'\n';2022/11/24精选课件-44-3.4循环语句——for语句1、<表达式1>可以省略for(inti=1;i<=9;i++)循环体;inti=1;for(;i<=9;i++)循环体;2022/11/
24精选课件-45-3.4循环语句——for语句2、<表达式2>可以省略for(inti=1;i<=9;i++)循环体;for(inti=1;;i++){if(i<=9)循环体;elsebreak;//跳转语句,用来跳出循环}2022/11/24精选课件-46-3.4循环语句——fo
r语句3、<表达式3>可以省略for(inti=1;i<=9;i++)循环体;for(inti=1;i<=9;){循环体;i++;}2022/11/24精选课件-47-3.4循环语句——for语句3、<表达式1><表达式3>同时省略for(inti=1;
i<=9;i++)循环体;inti=1;for(;i<=9;){循环体;i++;}2022/11/24精选课件-48-3.4循环语句——for语句5、极端情况,可实现无限循环for(;;){循环体;}2022/11/24精选课件-49-例4:判断输出结果?#inclu
de<iostream>usingnamespacestd;voidmain(){for(inti=0,j=10,k=0;i<j;i++,j--)k+=i*j;cout<<k<<endl;}分析:ijk010019928253746467055跳出2022/11
/24精选课件-50-3.4循环语句1、for:最适合循环次数固定,循环规律非常明显程序。2、while:使用最多最频繁的循环结构,具有普适性。3、do_while:最适合至少循环一次的循环结构。2022/11/24精选课件-51-有关实验:一个工作空间可包括几个工程,但一个工程文件只能有一个ma
in函数。C++源程序的后缀名:.CPP,编译后:.OBJ;链接后,.EXE。#include<iostream.h>和#include<iostream>usingnamespacestd;使用效果一样。注意看出错信息。2022/11/24精选课件-52-3.4.4转向语句1、
break语句2、continue语句2022/11/24精选课件-53-3.4.4转向语句——break用途:常用在while、do-while、for和switch语句中,用来跳出循环或switch语句。2022/11/24精选课件-54-后续语句…语句…YN表达式?后续语句…语句…表
达式?YN3.4.4循环中break的应用break;while语句break;do-while语句后续语句计算表达式3计算表达式1…语句…表达式2?YNbreak;for语句2022/11/24精选课件-55-例1:判断输出结果?#include<iostream>usingnamesp
acestd;voidmain(){intsum=0;for(inti=1;i<10;i++){if(i%3==0)break;sum+=i;}cout<<sum<<endl;}分析isum11233跳出2022/11/24精选课件-56-3.4.4转向语句——contin
ue用途用于循环语句中,结束本次循环,进行下一次循环;即跳过循环体中尚未执行的部分。2022/11/24精选课件-57-后续语句…语句…YN表达式?后续语句…语句…表达式?YN3.4.4continue语句及应用continue;
while语句continue;do-while语句后续语句计算表达式3计算表达式1…语句…表达式2?YNcontinue;for语句2022/11/24精选课件-58-例1:判断输出结果?#include<iostream>usingnamespacestd
;voidmain(){intsum=0;for(inti=1;i<10;i++){if(i%3==0)continue;sum+=i;}cout<<sum<<endl;}分析isum11233347512612
71982792710跳出2022/11/24精选课件-59-3.5循环嵌套2022/11/24精选课件-60-while、do-while、for循环语句可以并列,也可以相互嵌套,但要层次清楚,不能出现交叉。多重循环程序执行时,外层循环每执行
一次,内层循环都需要循环执行多次。例如:for(a=1;a<=10;a++){for(b=0;b<=5;b++)……}外循环执行了10次,内循环执行6次循环正常结束时,内循环执行了10×6=60次2022/11/24精选课件-61-3
.5循环嵌套编程输出国际象棋棋盘#include<iostream>usingnamespacestd;voidmain(){for(inti=0;i<8;i++){for(intj=0;j<8;j++){if((i+j)%2==0)cout<<"■";elsecout<<"";}cout<<"\
n";}}■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■2022/11/24精选课件-62-思考题目:使用For循环输出如下图形:****************************2022/11/24精选课件-63-#include<iostream>
usingnamespacestd;voidmain(){for(inti=1;i<=7;i++){for(intj=7;j>i;j--)cout<<'';for(j=1;j<=i;j++)cout<<'*';cout<<endl;}}2022/11/24精选课件-64-3.6应用举例202
2/11/24精选课件-65-3.6应用举例1任意输入一个整数,判断是否是素数?问题:什么是素数?2022/11/24精选课件-66-#include<iostream>usingnamespacestd;vo
idmain(){intn,i;cin>>n;for(i=2;i<n;i++)if(n%i==0)break;if(i<n)cout<<n<<"不是素数!\n";elsecout<<n<<"是素数\n";}2022/11/24精选课件-67-改进:输出2-100之间
的素数#include<iostream>#include<cmath>usingnamespacestd;voidmain(){for(intk=2;k<100;k++){intn=sqrt(k);for(inti=2;i<=n;i++)if(k%i==0)brea
k;if(i>n)cout<<k<<'\t';}}2022/11/24精选课件-68-3.6应用举例2题目任意输入一个整数,按位翻转输出。例如输入124,输出421。2022/11/24精选课件-69-#in
clude<iostream>usingnamespacestd;voidmain(){inti,n,result=0;cout<<"请输入任意一个整数:";cin>>n;cout<<"按位翻转的结果为:";while(n!=0){i=n%10;result=result
*10+i;n/=10;}cout<<result<<endl;}2022/11/24精选课件-70-3.6应用举例3题目一球从100米高度落下,每次落地后反弹回原高度的一半,再落下。编程求解它在第n次落地时,共经过多少米?2022/11/24精
选课件-71-#include<iostream>usingnamespacestd;voidmain(){doubleheight=100;doublesum=height;for(inti=1;i<10;i++){sum+=height;height/=2;}cout<<su
m<<endl;}2022/11/24精选课件-72-3.6应用举例4题目若一头小母牛,从出生起第四个年头开始每年开始生一头小母牛,按此规律,第n年时有多少头母牛?f(1)=1;f(2)=1;f(3)=1;f(n)=f(n-1)+f(n-3);202
2/11/24精选课件-73-#include<iostream>usingnamespacestd;voidmain(){intn;longa=1,b=1,c=1,temp;cout<<"pleaseinputavalue:\n";cin>>n;for(inti=4;i<=n;i++){te
mp=a+c;a=b;b=c;c=temp;}cout<<c<<endl;}2022/11/24精选课件-74-总结三种基本结构:顺序、选择和循环流程图和伪码,帮助我们设计算法、完善算法,增强算法的可读性