程序的控制结构概述.pptx
《程序的控制结构概述.pptx》由会员分享,可在线阅读,更多相关《程序的控制结构概述.pptx(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 程序的控制结构程序的控制结构4.1 语句及程序框架语句及程序框架4.1.1 4.1.1 语句的基本分类语句的基本分类 语句语句是程序的基本组成部分,一段程序或者一个函数是程序的基本组成部分,一段程序或者一个函数就是由若干语句按照算法规定的逻辑关系组成的。各种表就是由若干语句按照算法规定的逻辑关系组成的。各种表达式都要以语句的形式出现在程序中。达式都要以语句的形式出现在程序中。C C语言中的语句有语言中的语句有如下类型:如下类型: (1)(1)变量定义语句;变量定义语句; (2)(2)表达式语句;表达式语句; (3)(3)复合语句;复合语句; (4)(4)函数调用语句;函数调用语句;
2、 (5)(5)控制语句;控制语句;1.1.变量定义语句变量定义语句 语法格式如下:语法格式如下: ; 其含义是:告诉系统,变量表中列出的一个或多个变量的其含义是:告诉系统,变量表中列出的一个或多个变量的存在,同时要求系统为每个变量分配存储空间,其大小和类存在,同时要求系统为每个变量分配存储空间,其大小和类型与型与 所规定的一致。所规定的一致。变量定义语句不需要与操变量定义语句不需要与操作步骤对应。作步骤对应。例如:例如: char aChar; int total = 0; /用于累计素数的总数用于累计素数的总数 int score; double x, y;2.2.表达式语句表达式语句 语法
3、格式如下:语法格式如下: ; 从上述语法格式可以看出,表达式语句是由前面章节提从上述语法格式可以看出,表达式语句是由前面章节提及的各种表达式及后缀的分号构成。其作用是:一旦表达式及的各种表达式及后缀的分号构成。其作用是:一旦表达式语句被执行时,就要按照表达式的求值顺序计算出表达式的语句被执行时,就要按照表达式的求值顺序计算出表达式的值。值。例如:例如: i+; i+; 3. 3. 复合语句复合语句 语法格式如下:语法格式如下: n 其作用是:告诉编译系统,将多个语句看成是一个整体,在语其作用是:告诉编译系统,将多个语句看成是一个整体,在语法要求上相当于一个语句。因此,在分支和循环结构中经常使法
4、要求上相当于一个语句。因此,在分支和循环结构中经常使用,函数的定义体也是一个复合语句。用,函数的定义体也是一个复合语句。例如:例如: int x, y = 20; int x, y = 20; x = y + 10; x = y + 10; printf( “%d; %d”, x, y ); printf( “%d; %d”, x, y ); 4. 4. 函数调用语句函数调用语句 语法格式如下:语法格式如下: ( ( ); ); 函数调用语句的作用是:将执行控制流程转移到与此语函数调用语句的作用是:将执行控制流程转移到与此语句完全匹配的函数定义体的第一条语句处,开始执行;函数句完全匹配的函数定
5、义体的第一条语句处,开始执行;函数体执行结束后,返回到此语句的下一条语句处继续执行。执体执行结束后,返回到此语句的下一条语句处继续执行。执行流程如教材图行流程如教材图4-1.4-1.5. 5. 控制语句控制语句 就是用于控制程序执行路径的相关语句,可以实现程序的就是用于控制程序执行路径的相关语句,可以实现程序的各种控制结构。语言中包含有九种控制语句。分成三类介各种控制结构。语言中包含有九种控制语句。分成三类介绍如下:绍如下:(1 1)分支语句分支语句:ifif语句、语句、switchswitch语句;语句; (2 2)循环语句循环语句:do-whiledo-while语句、语句、whilewh
6、ile语句、语句、forfor语句;语句; (3 3)跳转语句跳转语句:breakbreak语句、语句、continuecontinue语句、语句、gotogoto语句、语句、 returnreturn语句。语句。 分支和循环语句是程序中经常使用的,灵活熟练掌握其用分支和循环语句是程序中经常使用的,灵活熟练掌握其用法是本章的主要任务,后面会详细讲解。法是本章的主要任务,后面会详细讲解。4.1.2 C4.1.2 C程序框架程序框架 一个一个C C程序由程序由若干源文件若干源文件和和头文件头文件组成,称之为一个工组成,称之为一个工程。头文件包括用户自定义的和系统定义的,这两种都是由程。头文件包括用
7、户自定义的和系统定义的,这两种都是由若干函数及全局量的声明和编译预处理组成,文件名一般是若干函数及全局量的声明和编译预处理组成,文件名一般是* *.h.h。系统定义的如。系统定义的如stdio.h, stdlib.h, string.h, math.h,stdio.h, stdlib.h, string.h, math.h, limits.h limits.h等,其内容可以在本地安装有等,其内容可以在本地安装有C C编译器的机器中找编译器的机器中找到。一般在安装路径的包含文件夹内,如:到。一般在安装路径的包含文件夹内,如:Program FilesMicrosoft Visual Studio
8、VC98IncludeProgram FilesMicrosoft Visual StudioVC98Include。 4.2 分支结构分支结构 分支结构与顺序结构相对应,可以称之为分支结构与顺序结构相对应,可以称之为判断结构判断结构或或选选择结构择结构,也就是有选择地执行某些语句,改变了完全顺序执,也就是有选择地执行某些语句,改变了完全顺序执行的程序结构。在日常生活中的表达方式是:如果行的程序结构。在日常生活中的表达方式是:如果;那;那么么。在计算机领域的基本表达方式是:如果条件成立,则。在计算机领域的基本表达方式是:如果条件成立,则执行操作执行操作1 1;否则条件不成立,则执行操作;否则条
9、件不成立,则执行操作2 2。其中,操作。其中,操作1 1,操作,操作2 2可以是一条或多条语句。可以是一条或多条语句。 分支结构包含分支结构包含ifif和和switchswitch两个语句两个语句. . 4.2.1 if4.2.1 if语句的基本格式语句的基本格式 语法格式如下:语法格式如下: if ( if ( ) ) 复合语句复合语句1 1 else else 复合语句复合语句2 2 if if 语句基本格式的语义是:如果条件表达式的值为真,语句基本格式的语义是:如果条件表达式的值为真,则执行复合语句则执行复合语句1 1,否则,即条件表达式的值不为真,则执,否则,即条件表达式的值不为真,则
10、执行复合语句行复合语句2 2。格式中。格式中“( ( )” )”写法与写法与“( ( != 0 )” != 0 )”写法写法等价等价。【例例4.1】 任意输入两个不同的整数,输出其中较大的一个。任意输入两个不同的整数,输出其中较大的一个。 #includevoid main( ) c4: int x, y; c5: printf( n Input two numbers: n ); c6 : scanf( %d%d, &x, &y ); c7 : if ( x y ) c8 : printf( max = %d n, x ); else c10: printf( max = %d n, y )
11、; return ; 使用使用ifif语句需要注意如下内容:语句需要注意如下内容:(1)(1)从从if if 关键词开始到复合语句关键词开始到复合语句2 2结束,在语法上就是一条结束,在语法上就是一条语句,虽然其中包含着两个复合语句,这并不矛盾。语句,虽然其中包含着两个复合语句,这并不矛盾。(2) if(2) if语句中的两个复合语句都可以由语句中的两个复合语句都可以由空语句空语句,一个语句或,一个语句或者多个语句构成。仅包含空语句或一个语句时,一对大括号者多个语句构成。仅包含空语句或一个语句时,一对大括号可以可以省略省略。此处增加大括号的好处是可以减少不必要的语法。此处增加大括号的好处是可以
12、减少不必要的语法错误。错误。(3) if(3) if语句中的条件表达式必需使用一对匹配的圆括号括起语句中的条件表达式必需使用一对匹配的圆括号括起来。来。(4) (4) 条件表达式条件表达式可以是逻辑表达式,关系表达式,算术表达可以是逻辑表达式,关系表达式,算术表达式及赋值表达式等式及赋值表达式等, ,单个变量构成的表达式也是正确的。只单个变量构成的表达式也是正确的。只要表达式的值不是要表达式的值不是0 0值,条件即为成立。值,条件即为成立。【例例4.24.2】 判断某年份是否是闰年。判断某年份是否是闰年。 满足以下两个条件之一的年份均是闰年:一是年份能够被满足以下两个条件之一的年份均是闰年:一
13、是年份能够被4 4整除,但不能被整除,但不能被100100整除;二是能被整除;二是能被400400整除的年份。整除的年份。 4.2.2 if4.2.2 if语句的第二种格式语句的第二种格式 语法格式如下:语法格式如下: if ( if ( ) ) 复合语句复合语句 if if 语句第二种格式的语义是:如果条件表达式的值不为语句第二种格式的语义是:如果条件表达式的值不为真,则直接执行此真,则直接执行此ifif语句的下一条语句,否则,条件表达式语句的下一条语句,否则,条件表达式的值为真,则执行其后的复合语句,复合语句执行完成后同的值为真,则执行其后的复合语句,复合语句执行完成后同样要执行样要执行i
14、fif语句的下一条语句。语句的下一条语句。 【例例4.34.3】 任意输入两个不同的整数,输出其中较大的一个。任意输入两个不同的整数,输出其中较大的一个。 #include void main( ) c4: int x, y, max; c5: printf( n Input two numbers: n ); c6: scanf( %d%d, &x, &y ); c7: max = x;c8: if ( y x ) c9: max = y; c10: printf( max = %d n, max );c11: return ; 4.2.3 if4.2.3 if语句的嵌套形式语句的嵌套形式可
15、以写出如下几种嵌套形式的可以写出如下几种嵌套形式的ifif语句:语句:(1 1)在第二种格式的复合语句处嵌套第二种格式,形如:)在第二种格式的复合语句处嵌套第二种格式,形如: if ( if ( ) 1 ) 其它语句其它语句1 1 if ( if ( ) 2 ) 复合语句复合语句2 2 其它语句其它语句2 2 (2 2) 第二种格式嵌套第一种格式,形如:第二种格式嵌套第一种格式,形如: if ( if ( ) 1 ) if ( if ( ) 2 ) 复合语句复合语句2121 else else 复合语句复合语句2222 (3 3) 第一种格式嵌套第二种格式,形如:第一种格式嵌套第二种格式,形如
16、: if ( if ( ) 1 ) if ( if ( ) 2 ) 复合语句复合语句2 2 else else if ( if ( ) 3 ) 复合语句复合语句3 3 (4 4) 第一种格式嵌套第一种格式,形如:第一种格式嵌套第一种格式,形如: if ( if ( ) 1 ) if ( if ( ) 2 ) 复合语句复合语句2121 else else 复合语句复合语句2222 else else if ( if ( ) 3 ) 复合语句复合语句3131 else else 复合语句复合语句3232 【例例4.44.4】 要求按任意顺序从键盘输入三个整数,编写程序要求按任意顺序从键盘输入三个整
17、数,编写程序完成输出最大值和最小值的算法。完成输出最大值和最小值的算法。 基本思路:首先任取其中两个数,判断最大和最小;使基本思路:首先任取其中两个数,判断最大和最小;使用例用例4.34.3的方法。其次,用第三个数分别与刚刚得到的最大的方法。其次,用第三个数分别与刚刚得到的最大和最小数再次比较,就可以得到三个数中的最大和最小。和最小数再次比较,就可以得到三个数中的最大和最小。4.2.4 if4.2.4 if语句的第三种格式语句的第三种格式其语法格式如下:其语法格式如下:if ( if ( ) 1 ) 复合语句复合语句1 1else if else if ( ( )2 ) 复合语句复合语句2 2
18、else if ( else if ( )3 ) 复合语句复合语句3 3else if ( else if ( )m ) 复合语句复合语句m melse else 复合语句复合语句m+1m+1【例例4.5】设计程序完成将百分制成绩转换成五分制表示。设计程序完成将百分制成绩转换成五分制表示。 #include void main( ) char chscore;int nscore; printf( n please input Score ( 0 100 ): n ); scanf( %d, &nscore ); if ( nscore 60 ) chscore = E; else if (
19、nscore 70 ) chscore = D; else if ( nscore 80 ) chscore = C; else if ( nscore 90 ) chscore = B; else chscore = A; printf( n Your Score is %c ! ! ! n, chscore ); return ; 【例例4.64.6】从键盘读取一个字符数据,判断其类型是:控制从键盘读取一个字符数据,判断其类型是:控制类字符,数字字符,大写字符,小写字符,其他字符等类别类字符,数字字符,大写字符,小写字符,其他字符等类别中的哪一类?设计程序完成。中的哪一类?设计程序完成。
20、基本思路:读入字符数据,依据字符的基本思路:读入字符数据,依据字符的ASCIIASCII值判断所属值判断所属范围。范围。4.2.5 switch语句及语句及break语句语句 switch语句的语法格式:语句的语法格式: switch ( ) case : 复合语句复合语句1 case : 复合语句复合语句2 case : 复合语句复合语句n default: default: 复合语句复合语句n+1 下面使用下面使用switch语句改写例题语句改写例题【例例4. 5】。【例例4.7】设计程序完成将百分制成绩转换成五分制表示。设计程序完成将百分制成绩转换成五分制表示。 #include voi
21、d main( ) c4: int nscore;c5: char chscore;c6: printf( n input Score ( 0 100 ): n ); c7: scanf( %d, &nscore ); c8: nscore /= 10; / 变换后,变换后,nscore 的值是的值是010之间的整数之间的整数c9: switch ( nscore ) c10: c11: case 0:c12: case 1:c13: case 2:c14: case 3:c15: case 4:c16: case 5: chscore = E; c17: case 6: chscore =
22、D; c18: case 7: chscore = C; c19: case 8: chscore = B; c20: case 9:c21: case 10: chscore = A; c23: printf( n Your Score is %c ! ! ! n, chscore );c24: return ; c23 c23句输出句输出chscorechscore变量的当前值。编译运行此段程序应变量的当前值。编译运行此段程序应该是正确的。但是程序运行后,不管百分制成绩是多少,输该是正确的。但是程序运行后,不管百分制成绩是多少,输出结果总是如下:出结果总是如下:Your Score is
23、A ! ! !Your Score is A ! ! !程序一定是存在问题。程序一定是存在问题。 n这里说的流程控制语句,就是指跳转语句这里说的流程控制语句,就是指跳转语句breakbreak。breakbreak语语句的作用之一就是从某个句的作用之一就是从某个casecase子句处跳出子句处跳出switchswitch语句,继语句,继续执行续执行switchswitch的下一条的下一条语句。语句。breakbreak语句还用于循环语句语句还用于循环语句当中,后面介绍。当中,后面介绍。n例例4.74.7的正确写法需要的正确写法需要breakbreak与与switchswitch语句配合使用,程
24、序语句配合使用,程序如下:如下: #include void main( ) c4: int nscore;c5: char chscore;c6: printf( n input Score ( 0 100 ): n ); c7: scanf( %d, &nscore ); c8: nscore /= 10; / 变换后,变换后,nscore 的值是的值是010之间的整数之间的整数c9: switch ( nscore ) c10: c11: case 0:c12: case 1:c13: case 2:c14: case 3:c15: case 4:c16: case 5: chscore
25、 = E; c16_1: break;c17: case 6: chscore = D; c17_1: break;c18: case 7: chscore = C; c18_1: break;c19: case 8: chscore = B; c19_1: break;c20: case 9:c21: case 10: chscore = A; c21_1: break; c23: printf( n Your Score is %c ! ! ! n, chscore ); return ; n【例例4.8】设计能够完成单步四则运算的简易运算器,输设计能够完成单步四则运算的简易运算器,输出运
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 控制 结构 概述
限制150内