《《基本控制结构 》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《基本控制结构 》PPT课件.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章第三章 基本控制结构基本控制结构3.1 3.1 顺序结构程序设计顺序结构程序设计 3.2 3.2 选择结构程序设计选择结构程序设计 3.3 3.3 循环控制循环控制 第三章第三章 基本控制结构基本控制结构教学目标教学目标:1.掌握 C+语言常用的输入/输出方式 2.熟练掌握 if else 的两种语法 3.掌握 for、while、do-while 语句的用法教学重点教学重点:1.赋值语句、数据的输入输出及输入输出中常用的控制格式 2.程序设计中构成选择、循环的算法;教学难点教学难点:选择、循环的嵌套算法分析。3.1 3.1 顺序结构程序设计顺序结构程序设计 3.1.1 C+3.1.1
2、C+语句概述语句概述 3.1.2 3.1.2 顺序结构程序设计顺序结构程序设计3.1.3 3.1.3 数据输入与输出数据输入与输出 3.1.1 C+3.1.1 C+语句概述语句概述 在程序设计语言中,程序是按什么顺序执行在程序设计语言中,程序是按什么顺序执行的呢?默认按程序中语句顺序执行,语句是程序的呢?默认按程序中语句顺序执行,语句是程序的基本功能单元。当然也有分支选择,跳转,循的基本功能单元。当然也有分支选择,跳转,循环非顺序执行,正体现了计算机的环非顺序执行,正体现了计算机的“智能智能”。C+C+程序也不例外。分三种基本控制结构:程序也不例外。分三种基本控制结构:(1 1)顺序结构)顺序
3、结构(2 2)选择结构)选择结构(3 3)循环结构)循环结构 C+C+语句语句 声明语句声明语句 表达式语句表达式语句 选择语句选择语句 循环语句循环语句 跳转语句跳转语句 复合语句复合语句1 1、声明语句(说明语句)、声明语句(说明语句)程序中的实体标识符必须先声明后使用程序中的实体标识符必须先声明后使用实体标识符如:变量、常量、函数、结构、类、对象等。实体标识符如:变量、常量、函数、结构、类、对象等。声明的实质:告之实体类型声明的实质:告之实体类型(1 1)变量声明)变量声明(2 2)常量声明)常量声明(3 3)函数声明)函数声明(4 4)类型声明)类型声明声明语句其它功能:实体定义,变量
4、赋值声明语句其它功能:实体定义,变量赋值 2 2、表达式语句表达式语句格式:表达式;格式:表达式;类别:类别:(1 1)赋值语句)赋值语句(2 2)复合赋值语句)复合赋值语句 (3 3)增(减)量语句)增(减)量语句(4 4)函数调用语句)函数调用语句(5 5)输入输出语句)输入输出语句 表达式语句与表达式的区别:表达式语句与表达式的区别:表达式可以包含在其他表达式中,而语句不可。表达式可以包含在其他表达式中,而语句不可。例如:例如:if(a=b)0)t=a;if(a=b)0)t=a;不可写为:不可写为:if(a=b;)0)t=a;if(a=b;)0)t=a;将多个语句用一对大括号包围,便构成
5、一个复合语句,将多个语句用一对大括号包围,便构成一个复合语句,逻辑上的一条语句逻辑上的一条语句例如例如空语句形式空语句形式 ;不产生任何动作;不产生任何动作 sum=sum+i;sum=sum+i;i+;i+;sum=sum+i;i+;3.1.2 3.1.2 顺序结构程序设计顺序结构程序设计3.1.3 3.1.3 数据输入与输出数据输入与输出 简单的输入输出简单的输入输出向标准输出设备(显示器)输出向标准输出设备(显示器)输出例:例:intint x;x;coutcoutx=x;x=x;x;3.2 3.2 选择结构程序设计选择结构程序设计 3 32 21 if 1 if 语句语句 3 32 2
6、2 switch 2 switch 语句语句 3.2.1 3.2.1 选择结构程序设计选择结构程序设计 1、基本、基本if语句语句(一一)格式:格式:If()形式一:形式一:执行体为单条语句,带分号执行体为单条语句,带分号 if(a0)a-=5;a+=5;/if语句之外语句之外 为真为假a10?执行a减5执行a加52、基本、基本ifif语句语句(二二)格式:格式:If(If()形式二:形式二:执行体为复合语句,整个执行体为复合语句,整个if if 语句结束不带分号语句结束不带分号 if(ab)/if(ab)/若若ababint t=a;/int t=a;/则则a a与与b b交换交换 a=b;
7、a=b;b=t;b=t;/功能:保持变量功能:保持变量b b始终为最大值始终为最大值cout“The max is:”bn;/ifcout“The max is:”bn;/if语句之外语句之外3 3、Ifelse Ifelse语句(扩展语句(扩展ifif语句)语句)格式:格式:If(If()1elseelse 2 为真为假条件?语句语句1其它语句语句语句24、if if 语句语句嵌套嵌套 一般形式:一般形式:if()if()if()if()语句语句 1 1 else else 语句语句 2 2elseelse if()if()语句语句 3 3 else else 语句语句 4 4l特点:特点:
8、ifif子句或子句或elseelse子句又包含子句又包含ifelseifelse语句语句l注意注意:语句语句 1 1、2 2、3 3、4 4 可以是复合语句,每层的可以是复合语句,每层的 if if 与与 else else 配对,或用配对,或用 来确定层次关系。来确定层次关系。C+C+规定:规定:elseelse关键字总是与它前面最近的未配对的可见的那个关键字配对。关键字总是与它前面最近的未配对的可见的那个关键字配对。例如:例如:if()if()/第一个第一个ifif if()if()/第二个第二个ifif if()if()/第三个第三个ifif 1 elseelse 2l注意:复合语句内的
9、注意:复合语句内的 if if 对其外面的对其外面的else else 是不可见的是不可见的 嵌套嵌套if if 语句语句 之阶梯结构之阶梯结构 形式:形式:if(if(表达式表达式1)1)语句语句1 1 else if(else if(表达式表达式2)2)语句语句2 2 else if(else if(表达式表达式3)3)语句语句3 3 else else 语句语句 n nl执行流程:按顺序检测执行流程:按顺序检测 if if 条件,一旦满足则执行相应条件,一旦满足则执行相应l的的ifif子句,同时整个嵌套子句,同时整个嵌套if if 语句结束;否则执行最后一语句结束;否则执行最后一l个个e
10、lseelse子句子句.三种形式:三种形式:if(if(表达式表达式)语句语句例:例:if(xy)couty)couty)couty)coutx;else couty;else cout Grade;int Grade;cin Grade;if(=90)cout=90)cout=80)cout=80)cout=70)cout=70)cout=60)cout=60)cout“Dn”;else else cout“En”;cout“En”;3 32 22 switch 2 switch 语句语句格式:格式:switch(switch()case case 1:1case case 2:2case
11、case n:ndefault default:n+1 例:等级制转换为百分制例:等级制转换为百分制char grade;cingrade;char grade;cingrade;switch (grade)switch (grade)case A:Cout“100-99”endl;case A:Cout“100-99”endl;case B:Cout“89-80”endl;case B:Cout“89-80”endl;case C:Cout“79-60”endl;case C:Cout“79-60”endl;case D:case D:Cout“Less than 60”endl;Cout“
12、Less than 60”endl;Default:Default:Cout“Input error!n”;Cout“Input error!n”;/执行后不完全合意执行后不完全合意1 1、switchswitch开关语句开关语句特殊的多分支结构特殊的多分支结构switch(switch()case case 1:1 break;break;case case n:n break;break;default default:n+1 例:等级制转换为百分制例:等级制转换为百分制switch (grade)switch (grade)case A:cout“100-case A:cout“100-
13、99”endl;99”endl;break;break;case B:cout“89-case B:cout“89-80”endl;break;80”endl;break;case C:cout“79-case C:cout“79-60”endl;break;60”endl;break;case D:cout“Less than case D:cout“Less than 60”endl;60”endl;break;break;default:Cout“Input default:Cout“Input error!n”;error!n”;/执行执行2 2、SwitchSwitch与与break
14、break联用改进联用改进3 3、SwitchSwitch语句语句一般形式一般形式switch (switch (表达式表达式)case case 常量表达式常量表达式 1 1:语句:语句1 1 case case 常量表达式常量表达式 2 2:语句:语句2 2 case case 常量表达式常量表达式 n n:语句语句n n default:default:语句语句n+1n+1 执行顺序执行顺序以以casecase中的常量表达式值为入口标号,由此开始顺序执中的常量表达式值为入口标号,由此开始顺序执行。因此,每个行。因此,每个casecase分支最后应该加分支最后应该加breakbreak语句
15、语句。可以是多个语句,但不必用。可以是整型、字符型、枚举型每个常量表达式的值不能相同,次序不影响执行结果。4 4、breakbreak语句语句使程序从使程序从switchswitch语句内跳出语句内跳出(另还可从循环体跳出另还可从循环体跳出),继,继续执行逻辑上的下一条语句。不宜用在别处。续执行逻辑上的下一条语句。不宜用在别处。5 5、使用、使用switchswitch语句应注意的问题语句应注意的问题 casecase分支可包含多个语句,且不用分支可包含多个语句,且不用 。表达式、判断值都是表达式、判断值都是intint型或型或charchar型。型。若干分支执行内容相同可共用一组语句。若干分
16、支执行内容相同可共用一组语句。3.3 3.3 循环控制循环控制3 33 31 while 1 while 语句语句 3 33 32 do-while 2 do-while 语句语句 3 33 33 for 3 for 语句语句 3 33 31 while 1 while 语句语句求自然数求自然数1100之和之和”我们知道是一个和累加运算,是一个循环求和过程,同样可我们知道是一个和累加运算,是一个循环求和过程,同样可以用以用while循环语句实现。循环语句实现。形式形式while (表达式表达式)循环体语句循环体语句可以是复合语句,其中必须可以是复合语句,其中必须含有改变条件表达式值的语含有改变
17、条件表达式值的语句句。l 执行顺序执行顺序(四步四步)(1)计算表达式的值,若为)计算表达式的值,若为 true(非非0)时,则转步骤)时,则转步骤(2);若为);若为 false(0)时,时,则转步骤(则转步骤(4)。)。(2)执行一次循环体语句)执行一次循环体语句(3)转步骤()转步骤(1)(4)结束并退出)结束并退出while循环循环#includeusing namespace std;void main()int i=1,sum=0;while(i=100)sum+=i;/相当于相当于sum=sum+i;sum=sum+i;i+;coutsum=sum100,初始置1/记录累加和变量
18、sum初始置0控制变量 累加和 当条件 循环体 i=1 sum=0 i=1 sum=0-true true-sum+isum+i=sum=1 sum=1 i=2 sum=1 i=2 sum=1-true true-sum+isum+i=sum=3 sum=3 i=3 sum=3 i=3 sum=3-true true-sum+isum+i=sum=6 sum=6 i=4 sum=6 i=4 sum=6-true true-sum+isum+i=sum=10 sum=10 i=100sum=4950i=100sum=4950-true true-sum+isum+i=sum=5050 sum=5
19、050 i=101sum=5050i=101sum=5050-falsefalse-exit exit 循环体当条件问题:1+2+3+4+1003 33 32 Dowhile2 Dowhile循环语句循环语句适用:先执行循环体,后判断条件的情况适用:先执行循环体,后判断条件的情况例例:dowhile:dowhile语句语句输入一个整数,将各位数字反转后输出。输入一个整数,将各位数字反转后输出。#include include using namespace std;using namespace std;int main()int main()int n,right_digit;int n,r
20、ight_digit;cout Enter the number:;cout n;cin n;/n/n 保存输入的整数保存输入的整数cout The number in reverse cout The number in reverse order is ;order is ;dodo right_digit=n%10;right_digit=n%10;/对对n n求模取出当前个位数求模取出当前个位数cout right_digit;cout right_digit;n/=10;n/=10;/即即n=n/10n=n/10运算运算,相当于对相当于对n n右移一位,去掉已取出的个位数右移一位,去
21、掉已取出的个位数 while(n!=0)while(n!=0);coutendl;coutendl;运行结果:运行结果:Enter the number:365 Enter the number:365 The number in reverse order is 563 The number in reverse order is 563直到型循环结构与直到型循环结构与do-while do-while 语句语句一般形式一般形式do do 语句语句while(while(表达式表达式)执行顺序执行顺序先执行循环体语句,后判断条件。先执行循环体语句,后判断条件。表达式为表达式为 true tr
22、ue 时,继续执行循环体时,继续执行循环体*while*while语句与语句与do-whiledo-while语句的区别语句的区别:一般形式比较一般形式比较while (while (表达式表达式)do do 语句语句 语句语句while(while(表达式表达式)执行流程执行流程最大区别最大区别whilewhile先判断控制循环的条件,后执行循环体;先判断控制循环的条件,后执行循环体;dowhiledowhile先执行循环体,后判断控制循环的条件。先执行循环体,后判断控制循环的条件。结果比较:结果比较:WhileWhile语句的循环体可能有时一次也不做;语句的循环体可能有时一次也不做;Dow
23、hileDowhile语句的循环体任何情况下至少要做一次语句的循环体任何情况下至少要做一次。3 33 33 for 3 for 语句语句 求自然数求自然数1 1100100之和问题。之和问题。分析:本题需要用累加算法,累加过程是一个循环过程,分析:本题需要用累加算法,累加过程是一个循环过程,可以用可以用forfor语句实现。语句实现。语法形式语法形式for (for (表达式表达式1 1;表达式;表达式2 2;表达式;表达式3)3)语句语句执行流程(五步)执行流程(五步)循环前先求解循环前先求解为为truetrue时执行循环体时执行循环体每次执行完循环体后求解每次执行完循环体后求解#inclu
24、de#includeusing namespace std;using namespace std;int main()int main()int i,sum=0;int i,sum=0;/控制变量和记录累加和变量控制变量和记录累加和变量 for(i=1;i=100;i+)for(i=1;i=100;i+)sum+=i;sum+=i;/相当于相当于sum=sum+i;sum=sum+i;coutsum=sum coutsum=sumendl;endl;运行结果:运行结果:sum=5050无循环语句编程无循环语句编程(2*100条语句条语句)int i,sum=0;int i,sum=0;/i=
25、1;sum+=i;i=1;sum+=i;i=2;sum+=i;i=2;sum+=i;i=3;sum+=i;i=3;sum+=i;i=100;sum+=i;i=100;sum+=i;for 语句举例:编写程序输出以下图案 *#includeusing namespace std;void main()int i,j,n=4;for(i=1;i=n;i+)/输出前4行图案 for(j=1;j=30;j+)cout;/在图案左侧空30列 for(j=1;j=8-2*i;j+)cout;for(j=1;j=2*i-1;j+)cout*;coutendl;31 for(i=1;i=n-1;i+)/输出后3行图案 for(j=1;j=30;j+)cout;/在图案左侧空30列 for(j=1;j=7-2*i;j+)cout*;coutendl;32小结:掌握C+语言循环语句的三种形式及区别,能够选用基本循环语句编写简单的程序段。思考题:编写程序,求1000之内的所有“完全数”。所谓“完全数”是指一个数恰好等于其因子之和。例如,6是完全数,因为6=1+2+3作业题:1、分别计算整数1至10的平方并输出 2、编写程序,依次计算并输出当半径为5,4,3,2,1时的圆面积。