1、C+大学基础教程大学基础教程第第3 3章章 过程化语句过程化语句北京科技大学计算机系北京科技大学计算机系2022-10-141用计算机解决实际问题,首先要分析问题,设计合适的算法,然后编程实现算法。2022-10-142第第3 3章章 过程化语句过程化语句3.1 算法的基本控制结构3.2 if选择语句3.3 switch选择语句3.4 循环语句3.5 循环嵌套3.6 应用举例2022-10-1433.1 3.1 算法的基本控制结构算法的基本控制结构2022-10-1443.1 3.1 算法的基本控制结构算法的基本控制结构算法 1、计算机执行的操作 2、这些操作的顺序伪码 采用类似计算机语言的分
2、句格式,以自然语言描述算法。2022-10-1453.1 3.1 算法的基本控制结构算法的基本控制结构流程图 开始/结束 执行 判断 联系2022-10-1463.1 3.1 算法的基本控制结构算法的基本控制结构程序的三种基本控制结构 (1)顺序结构 (2)选择结构 (3)循环结构2022-10-1473.1 3.1 算法的基本控制结构算法的基本控制结构流程控制语句 选择语句:if.else、switch 循环语句:while、for、do.while 转向语句:break、continue2022-10-1483.2 3.2 if选择语句选择语句2022-10-1493.2 3.2 if选择
3、语句选择语句if_else 1、没有else分支 2、双分支 3、多分支 4、if 语句的嵌套2022-10-14103.2 3.2 if选择语句选择语句1、没有else分支 例如:比较x和y的大小,如果x大则输出x的值if(表达式)语句;if(xy)coutxy)coutxendl;else coutyendl;2022-10-1412例子 任意输入一个4位整数的年份,判断该年是否是润年?是指年份能被4整除的那些年,但不包括能被100整除而不能被400整除的年2022-10-1413#include using namespace std;void main()int year;cinyea
4、r;if(year%4=0)&!(year%100=0)&(year%400!=0)cout润年endl;else cout不是润年endl;2022-10-14143.2 3.2 if选择语句选择语句3 3、多分支、多分支if(表达式1)语句1;else if (表达式2)语句2;else if (表达式3)语句3;else 语句n;2022-10-14152022-10-1416例子:输出学生的成绩#include using namespace std;void main()int x;cinx;if(x=90)cout“优秀”=80)cout“良好”=60)cout“合格”endl;e
5、lse cout“不及格”endl;2022-10-14173.2 3.2 if选择语句选择语句4、if 语句的嵌套if(表达式1)if(表达式2)语句1 else 语句2else if(表达式3)语句3 else 语句42022-10-14182022-10-1419例子:输出a,b,c中较大的数#include using namespace std;void main()int a,b,c;cinabc;if(ab)if(ac)coutaendl;else coutcc)coutbendl;else coutcendl;coutb?(ac?a:c):(bc?b:c);2022-10-14
6、203.2 3.2 if选择语句选择语句注意:二义性int x=-1;if(x0)if(x50)cout“x is 50”endl;else cout“x is=0”x;switch(x/10)case 10:case 9:cout“优秀”endl;break;case 8:cout“良好”endl;break;case 7:case 6:cout“合格”endl;break;default:cout“不及格”endl;2022-10-14253.4 3.4 循环循环语句语句2022-10-14263.4 循环语句循环语句三种基本语法1、while 语句2、dowhile 语句3、for 语句
7、2022-10-1427#include#include using namespace std;void main()coutsetfill(*)setw(2)n setw(3)n setw(4)n setw(5)n setw(6)n setw(7)n setw(8)n;*2022-10-1428思路:寻找思路:寻找*按行增加的规律按行增加的规律 域宽域宽 从从2变到变到8,第一行打印,第一行打印1个个*,第二行,第二行打印打印2个个*,-。每增加一行,打印。每增加一行,打印的的*增加一个。考虑设置一个变量增加一个。考虑设置一个变量i表表示域宽,每增加一行使示域宽,每增加一行使i增增1,直到
8、,直到i的的值超过值超过8。的的设为设为2。2022-10-1429#include#include using namespace std;void main()int i=2;coutsetfill(*);while(i=8)coutsetw(i)n;i+;*循环变量循环体循环控制条件2022-10-14303.4 循环语句循环语句主要包括3个部分:1、循环控制条件:判断循环操作是否进行的条件;2、循环体:重复进行的操作;3、循环控制变量:记录循环体执行的次数,或控制循环的结束条件。2022-10-14313.4 循环语句循环语句while循环语句循环语句while(表达式)循环体语句;2
9、022-10-1432例1:编程循环输出1-9这9个数字?#include using namespace std;void main()int i=1;while(i9)coutiendl;i+;cout“循环结束”endl;运行结果:123456789循环结束2022-10-1433例2:编程计算1+2+3+.+10的值#include using namespace std;void main()int sum=0,i=0;while(i=10)sum+=i;i+;coutsumendl;55 while(i=10)while(i=10)i+;i+;sum=sum+i;sum=sum+i
10、;2022-10-1434例3:打印可视字符#includeusing namespace std;void main()unsigned char ch=32;while(ch128)cout(int)chtcht;ch+;2022-10-1435例4:编程计算 的值#include using namespace std;void main()int k=1,sum=0,n;cout0):;cinn;while(k0)coutsum/nendl;else coutn不能=0endl;2022-10-14363.4 循环语句循环语句do.while循环语句循环语句 do 循环体语句;whil
11、e(表达式);2022-10-1437#include#include using namespace std;void main()int i=2;coutsetfill(*);while(i=8)coutsetw(i)n;i+;*do coutsetw(i)n;i+;while(i=8);2022-10-1438例子:编程计算 的值#include using namespace std;void main()int k=1,sum=0,n;cout0):;cinn;while(k0)coutsum/nendl;else coutn不能=0endl;do sum=sum+k*k;k+;wh
12、ile(k=n);2022-10-14393.4 循环语句循环语句for循环语句 循环结构 1、表达式1 循环变量初始化;2、表达式2 循环控制条件;3、表达式3 循环变量的变化;for(表达式1;表达式2;表达式3)循环体;2022-10-1440例1:编程循环输出1-9这9个数字?#include using namespace std;void main()for(int i=1;i10;i+)coutiendl;cout“循环结束”endl;运行结果:123456789循环结束2022-10-1441例2:编程计算1+2+3+.+10的值#include using namespce
13、std;void main()int sum=0;for(int i=1;i=10;i+)sum+=i;coutsumendl;运行结果:552022-10-1442#include#include using namespace std;void main()coutsetfill(*);*例3for(int i=2;i=8;i+)coutsetw(i)n;2022-10-14433.4 循环语句循环语句for语句语句1、可以省略 for(int i=1;i=9;i+)循环体;int i=1;for(;i=9;i+)循环体;2022-10-14443.4 循环语句循环语句for语句语句2、可
14、以省略 for(int i=1;i=9;i+)循环体;for(int i=1;i+)if(i=9)循环体;else break;/跳转语句,用来跳出循环 2022-10-14453.4 循环语句循环语句for语句语句3、可以省略 for(int i=1;i=9;i+)循环体;for(int i=1;i=9;)循环体;i+;2022-10-14463.4 循环语句循环语句for语句语句3、同时省略 for(int i=1;i=9;i+)循环体;int i=1;for(;i=9;)循环体;i+;2022-10-14473.4 循环语句循环语句for语句语句5、极端情况,可实现无限循环 for(;)
15、循环体;2022-10-1448例4:判断输出结果?#include using namespace std;void main()for(int i=0,j=10,k=0;ij;i+,j-)k+=i*j;coutkendl;分析:i j k0 10 01 9 92 8 253 7 464 6 705 5 跳出2022-10-14493.4 循环语句循环语句1、for:最适合循环次数固定,循环规律非常明显程序。2、while:使用最多最频繁的循环结构,具有普适性。3、do_while:最适合至少循环一次的循环结构。2022-10-14503.4.4 转向语句转向语句1、break语句2、con
16、tinue语句2022-10-14513.4.4 转向语句转向语句break用途:用途:常用在while、do-while、for和switch语句中,用来跳出循环或switch语句。2022-10-1452后续语句后续语句语句语句后续语句后续语句语句语句3.4.4 循环中break的应用后续语句后续语句2022-10-1453例1:判断输出结果?#include using namespace std;void main()int sum=0;for(int i=1;i10;i+)if(i%3=0)break;sum+=i;coutsumendl;分析i sum1 12 33 跳出2022-
17、10-14543.4.4 转向语句转向语句continue用途 用于循环语句中,结束本次循环,进行下一次循环;即跳过循环体中尚未执行的部分。2022-10-1455后续语句后续语句语句语句后续语句后续语句语句语句3.4.4 continue语句及应用 后续语句后续语句2022-10-1456例1:判断输出结果?#include using namespace std;void main()int sum=0;for(int i=1;i10;i+)if(i%3=0)continue;sum+=i;coutsumendl;分析i sum1 12 33 34 75 126 127 198 279 2
18、710 跳出2022-10-14573.5 3.5 循环循环嵌套嵌套2022-10-1458whilewhile、do-whiledo-while、forfor循环语句可以并列,也循环语句可以并列,也可以相互嵌套,但可以相互嵌套,但要层次清楚,不能出现交叉。要层次清楚,不能出现交叉。多重循环程序执行时,外层循环每执行一次,多重循环程序执行时,外层循环每执行一次,内层循环都需要循环执行多次。内层循环都需要循环执行多次。例如:例如:2022-10-14593.5 3.5 循环嵌套循环嵌套编程输出国际象棋棋盘#include using namespace std;void main()for(in
19、t i=0;i8;i+)for(int j=0;j8;j+)if(i+j)%2=0)cout;else cout ;coutn;2022-10-1460思考题目题目:使用使用For循环输出如下图形:循环输出如下图形:*2022-10-1461#include using namespace std;void main()for(int i=1;ii;j-)cout;for(j=1;j=i;j+)cout*;coutendl;2022-10-14623.6 3.6 应用举例应用举例2022-10-14633.6 3.6 应用举例应用举例1 1任意输入一个整数,判断是否是素数?问题:什么是素数?2
20、022-10-1464#include using namespace std;void main()int n,i;cinn;for(i=2;in;i+)if(n%i=0)break;if(in)coutn不是素数!n;elsecoutn是素数n;2022-10-1465改进:输出2-100之间的素数#include#include using namespace std;void main()for(int k=2;k100;k+)int n=sqrt(k);for(int i=2;in)coutkt;2022-10-14663.6 3.6 应用举例应用举例2 2题目 任意输入一个整数,按
21、位翻转输出。例如输入124,输出421。2022-10-1467#include using namespace std;void main()int i,n,result=0;coutn;cout按位翻转的结果为:;while(n!=0)i=n%10;result=result*10+i;n/=10;coutresultendl;2022-10-14683.6 3.6 应用举例应用举例3 3题目 一球从100米高度落下,每次落地后反弹回原高度的一半,再落下。编程求解它在第n次落地时,共经过多少米?2022-10-1469#include using namespace std;void ma
22、in()double height=100;double sum=height;for(int i=1;i10;i+)sum+=height;height/=2;coutsumendl;2022-10-14703.6 3.6 应用举例应用举例4 4题目 若一头小母牛,从出生起第四个年头开始每年开始生一头小母牛,按此规律,第n年时有多少头母牛?f(1)=1;f(2)=1;f(3)=1;f(n)=f(n-1)+f(n-3);2022-10-1471#include using namespace std;void main()int n;long a=1,b=1,c=1,temp;cout n;f
23、or(int i=4;i=n;i+)temp=a+c;a=b;b=c;c=temp;cout c endl;2022-10-1472总结三种基本结构:顺序、选择和循环流程图和伪码,帮助我们设计算法、完善算法,增强算法的可读性2022-10-1473实验:实验一、实验二的实验一、实验二的1 1,2 2。一个工作空间可包括几个工程,但一个工程文一个工作空间可包括几个工程,但一个工程文件只能有一个件只能有一个mainmain函数。函数。C+C+源程序的后缀名:源程序的后缀名:.CPP.CPP,编译后:,编译后:.OBJ.OBJ;链接后,链接后,.EXE.EXE。#include#include 和和#include#include using namespace using namespace std;std;使用效果一样。使用效果一样。注意看出错信息。注意看出错信息。2022-10-1474
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。