程序控制结构优秀课件.ppt
《程序控制结构优秀课件.ppt》由会员分享,可在线阅读,更多相关《程序控制结构优秀课件.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、程序控制结构第1页,本讲稿共40页3.1 C 语言结构化程序设计基础 程序的控制结构(黑箱)程序的控制结构(黑箱)程序的控制结构(黑箱)程序的控制结构(黑箱)单入口单出口的控制结构易于理解单入口单出口的控制结构易于理解单入口单出口的控制结构易于理解单入口单出口的控制结构易于理解 三种基本控制结构:顺序、分支、循环三种基本控制结构:顺序、分支、循环三种基本控制结构:顺序、分支、循环三种基本控制结构:顺序、分支、循环 控制结构可以嵌套,以构成更复杂的控制结构控制结构可以嵌套,以构成更复杂的控制结构控制结构可以嵌套,以构成更复杂的控制结构控制结构可以嵌套,以构成更复杂的控制结构 程序的结构化程序的结
2、构化程序的结构化程序的结构化 三种基本控制结构可以构造任何复杂的结构化算法三种基本控制结构可以构造任何复杂的结构化算法三种基本控制结构可以构造任何复杂的结构化算法三种基本控制结构可以构造任何复杂的结构化算法 结构化程序设计原则:结构化程序设计原则:结构化程序设计原则:结构化程序设计原则:自顶向下自顶向下自顶向下自顶向下,逐步求精逐步求精逐步求精逐步求精 结构化程序设计过程:首先对任务进行功能分解,然后使用结构结构化程序设计过程:首先对任务进行功能分解,然后使用结构结构化程序设计过程:首先对任务进行功能分解,然后使用结构结构化程序设计过程:首先对任务进行功能分解,然后使用结构化程序设计思想逐一解
3、决各个子问题,最后构造原始问题的解化程序设计思想逐一解决各个子问题,最后构造原始问题的解化程序设计思想逐一解决各个子问题,最后构造原始问题的解化程序设计思想逐一解决各个子问题,最后构造原始问题的解 好处:逻辑性强,可读性好,维护方便好处:逻辑性强,可读性好,维护方便好处:逻辑性强,可读性好,维护方便好处:逻辑性强,可读性好,维护方便第2页,本讲稿共40页3.2 顺序结构 顺序结构的含义顺序结构的含义顺序结构的含义顺序结构的含义 由一组顺序执行的处理块组成,每个处理块可能包含一条或由一组顺序执行的处理块组成,每个处理块可能包含一条或由一组顺序执行的处理块组成,每个处理块可能包含一条或由一组顺序执
4、行的处理块组成,每个处理块可能包含一条或一组语句,完成一项任务一组语句,完成一项任务一组语句,完成一项任务一组语句,完成一项任务 顺序结构是最基本的算法结构顺序结构是最基本的算法结构顺序结构是最基本的算法结构顺序结构是最基本的算法结构 语句与复合语句(语句块)语句与复合语句(语句块)语句与复合语句(语句块)语句与复合语句(语句块)三种语句结构:单语句(三种语句结构:单语句(三种语句结构:单语句(三种语句结构:单语句(表达式表达式表达式表达式;)、空语句()、空语句()、空语句()、空语句(;)、复合)、复合)、复合)、复合语句(语句(语句(语句(语句序列语句序列语句序列语句序列)第3页,本讲稿
5、共40页顺序结构程序示例 分别输入两个复数的实部与虚部,计算两个复数的和、分别输入两个复数的实部与虚部,计算两个复数的和、分别输入两个复数的实部与虚部,计算两个复数的和、分别输入两个复数的实部与虚部,计算两个复数的和、差、积、商并输出结果差、积、商并输出结果差、积、商并输出结果差、积、商并输出结果#include include int int mainmain()()float float a a,b b,c c,d d,realreal,imaginaryimaginary;printf printf(“Input reals and imaginaries of two complexe
6、s(“Input reals and imaginaries of two complexesn n”);”);scanfscanf(“%(“%f f,%,%f f,%,%f f,%,%f f”,&”,&a a,&,&b b,&,&c c,&,&d d););printf printf(“Sum:%(“Sum:%f f+%+%f fi in n”,”,a a+c c,b b+d d););printf printf(“Difference:%(“Difference:%f f+%+%f fi in n”,”,a a c c,b b d d););realreal=a a*c c b b*d d
7、;imaginaryimaginary=a a*d d+b b*c c;printf printf(“Product:%(“Product:%f f+%+%f fi in n”,”,realreal,imaginaryimaginary););realreal=(=(a a*c c+b b*d)d)/(/(c c*c c+d d*d d););imaginaryimaginary=(=(b b*c c a a*d)d)/(/(c c*c c+d d*d d););printf printf(“Quotient:%(“Quotient:%f f+%+%f fi in n”,”,realreal,
8、imaginaryimaginary););return 0;return 0;实际需要输入实际需要输入实际需要输入实际需要输入4 4 4 4个实数个实数个实数个实数第4页,本讲稿共40页3.3 分支结构 分支结构(选择结构)的含义分支结构(选择结构)的含义分支结构(选择结构)的含义分支结构(选择结构)的含义 根据某一条件的判断结果,确定程序的流程,即选择哪一个根据某一条件的判断结果,确定程序的流程,即选择哪一个根据某一条件的判断结果,确定程序的流程,即选择哪一个根据某一条件的判断结果,确定程序的流程,即选择哪一个程序分支中的处理块去执行程序分支中的处理块去执行程序分支中的处理块去执行程序分支
9、中的处理块去执行 最基本的分支结构是二路分支结构最基本的分支结构是二路分支结构最基本的分支结构是二路分支结构最基本的分支结构是二路分支结构 以条件判断为起点,如果判断结果为真,则执行以条件判断为起点,如果判断结果为真,则执行以条件判断为起点,如果判断结果为真,则执行以条件判断为起点,如果判断结果为真,则执行A A处理块处理块处理块处理块的操作,否则执行的操作,否则执行的操作,否则执行的操作,否则执行B B处理块的操作处理块的操作处理块的操作处理块的操作第5页,本讲稿共40页if-else 语句 语句格式:语句格式:语句格式:语句格式:if(if(表达式表达式表达式表达式)语句语句语句语句1 e
10、lse 1 else 语句语句语句语句2 2 表达式必须位于括号内,一般为关系或逻辑表达式表达式必须位于括号内,一般为关系或逻辑表达式表达式必须位于括号内,一般为关系或逻辑表达式表达式必须位于括号内,一般为关系或逻辑表达式 先计算表达式值,若为真则执行语句先计算表达式值,若为真则执行语句先计算表达式值,若为真则执行语句先计算表达式值,若为真则执行语句1 1 1 1,否则执行语句,否则执行语句,否则执行语句,否则执行语句2 2 2 2 语句语句语句语句1 1 1 1与语句与语句与语句与语句2 2 2 2可以为复合语句可以为复合语句可以为复合语句可以为复合语句 语句语句语句语句1 1 1 1与语句
11、与语句与语句与语句2 2 2 2只能有一个被执行只能有一个被执行只能有一个被执行只能有一个被执行 如果仅仅用于确定某条语句是否执行,如果仅仅用于确定某条语句是否执行,如果仅仅用于确定某条语句是否执行,如果仅仅用于确定某条语句是否执行,elseelseelseelse分支可以省略分支可以省略分支可以省略分支可以省略第6页,本讲稿共40页if-else 语句示例一 输入一个字符,判断它是否为输入一个字符,判断它是否为输入一个字符,判断它是否为输入一个字符,判断它是否为09090909之间的数字之间的数字之间的数字之间的数字#include include int int mainmain()()c
12、har char c c;printf printf(“Input a character:”);(“Input a character:”);c c=getchargetchar();();if if(c c=48&=48&c c=57)=57)printf printf(“It is a number.(“It is a number.n n”);”);elseelse printf printf(“No,it is not a number.(“No,it is not a number.n n”);”);return 0;return 0;因:字符以因:字符以因:字符以因:字符以ASC
13、IIASCIIASCIIASCII码值存储码值存储码值存储码值存储且数字的且数字的且数字的且数字的ASCIIASCIIASCIIASCII码值码值码值码值4857485748574857故:比较故:比较故:比较故:比较ASCIIASCIIASCIIASCII码值码值码值码值第7页,本讲稿共40页if-else 语句示例二 输入一个整数,输出其绝对值输入一个整数,输出其绝对值输入一个整数,输出其绝对值输入一个整数,输出其绝对值#include include int int mainmain()()int int n n,absabs;printf printf(“Enter integer:”
14、);(“Enter integer:”);scanfscanf(“%(“%d d”,&”,&n n););absabs=n n;if if(absabs 0)0)abs abs=absabs;printf printf(“Original integer:%(“Original integer:%d d,absolute value:%,absolute value:%d d n n”,”,n n,absabs););return 0;return 0;第8页,本讲稿共40页if-else if-else 语句语句格式语句格式 if(if(表达式表达式表达式表达式1)1)语句语句语句语句1 e
15、lse if(1 else if(表达式表达式表达式表达式2)2)语句语句语句语句2 else 2 else 语句语句语句语句n n第9页,本讲稿共40页if-else if-else 示例 根据百分制成绩给出优秀、通过或不通过成绩根据百分制成绩给出优秀、通过或不通过成绩根据百分制成绩给出优秀、通过或不通过成绩根据百分制成绩给出优秀、通过或不通过成绩#include#include int int mainmain()()float float scorescore;printfprintf(“Input score:“);(“Input score:“);scanfscanf(“%(“%f
16、f“,&“,&scorescore););if if(scorescore=85&=85&scorescore=100)=60&=60&scorescore 85)=0&=0&scorescore 60)50)50)if(if(salsal 500)50)50)if(if(salsal 500)50)50)if(if(salsal 500)500)salsal+=200;+=200;elseelse salsal+=300;+=300;第11页,本讲稿共40页条件分支嵌套示例求方程求方程 ax2+bx+c=0 的根的根#include#include#include#include /由于用到
17、平方根函数,要用此头文件由于用到平方根函数,要用此头文件由于用到平方根函数,要用此头文件由于用到平方根函数,要用此头文件int int mainmain()()float float a a,b b,c c,x1x1,x2x2,p p,q q,mm;/定义实型变量定义实型变量定义实型变量定义实型变量 printfprintf(“Enter 3 coefficients:“);(“Enter 3 coefficients:“);scanfscanf(“%(“%f f,%,%f f,%,%f f“,&“,&a a,&,&b b,&,&c c););/从键盘读入方程的三个系数从键盘读入方程的三个系数
18、从键盘读入方程的三个系数从键盘读入方程的三个系数 if if(a a=0.0&=0.0&b b=0&=0&c c=0)=0)/分支分支分支分支1 1:三个系数全为:三个系数全为:三个系数全为:三个系数全为0 0 printfprintf(“any value(“any valuen n“);“);elseelse if if(a=0&b!=0)(a=0&b!=0)/分支分支分支分支2 2:系数:系数:系数:系数a a为为为为0 0,解一元一次方程,解一元一次方程,解一元一次方程,解一元一次方程 printfprintf(“x1=x2=%(“x1=x2=%f f n n,c c/b b););e
19、lseelse /分支分支分支分支3 3:解一元二次方程的两个根:解一元二次方程的两个根:解一元二次方程的两个根:解一元二次方程的两个根 mm=b b*b b 4.0*4.0*a a*c c;第12页,本讲稿共40页条件分支嵌套示例 if if(mm=0)=0)/解实根解实根解实根解实根 x1x1=(=(b b+sqrtsqrt(mm)/(2.0*)/(2.0*a a););x2x2=(=(b b sqrtsqrt(mm)/(2.0*)/(2.0*a a););printfprintf(“x1=%(“x1=%f f n n“,“,x1x1););/输出两个实根输出两个实根输出两个实根输出两个实
20、根 printfprintf(“x2=%(“x2=%f f n n“,“,x2x2););elseelse /解虚根解虚根解虚根解虚根 p p=b b/(2.0*/(2.0*a a););q q=sqrtsqrt(mm)/(2.0*)/(2.0*a a););printfprintf(“x1=%(“x1=%f f+%+%f fi in n“,“,p p,q q););printfprintf(“x2=%(“x2=%f f%f fi in n“,“,p p,q q););return 0;return 0;第13页,本讲稿共40页switch 分支语法 计算过程计算过程计算过程计算过程 先计算表
21、达式的值先计算表达式的值先计算表达式的值先计算表达式的值 依次与一组常量比较依次与一组常量比较依次与一组常量比较依次与一组常量比较 若相同则执行该分支若相同则执行该分支若相同则执行该分支若相同则执行该分支 否则转向否则转向否则转向否则转向defaultdefaultdefaultdefault分支分支分支分支 退出退出退出退出switchswitchswitchswitch语句语句语句语句 说明说明说明说明 switchswitchswitchswitch后面的表达式必须为整型、字符型或枚举型后面的表达式必须为整型、字符型或枚举型后面的表达式必须为整型、字符型或枚举型后面的表达式必须为整型、字
22、符型或枚举型 casecasecasecase后面必须为常量表达式,则各个后面必须为常量表达式,则各个后面必须为常量表达式,则各个后面必须为常量表达式,则各个casecasecasecase值必须不同值必须不同值必须不同值必须不同 如果没有如果没有如果没有如果没有defaultdefaultdefaultdefault子句,且没有子句,且没有子句,且没有子句,且没有casecasecasecase子句匹配,则不执行子句匹配,则不执行子句匹配,则不执行子句匹配,则不执行 casecasecasecase分支中的语句可以有多条,不需要花括号分支中的语句可以有多条,不需要花括号分支中的语句可以有多条
23、,不需要花括号分支中的语句可以有多条,不需要花括号switch(switch(表达式表达式表达式表达式)case case 常量表达式常量表达式常量表达式常量表达式1:1:语句组语句组语句组语句组1 1 case case 常量表达式常量表达式常量表达式常量表达式2:2:语句组语句组语句组语句组2 2 case case 常量表达式常量表达式常量表达式常量表达式n n:语句组语句组语句组语句组n n default:default:语句组语句组语句组语句组 第14页,本讲稿共40页switch 分支流程图第15页,本讲稿共40页switch 分支示例一根据输入的成绩等级,打印相应分数段根据输入
24、的成绩等级,打印相应分数段#include#include int int mainmain()()char char gradegrade;printfprintf(“Input the grade(A,B,C,D,E):“);(“Input the grade(A,B,C,D,E):“);scanfscanf(“%(“%c c“,&“,&gradegrade););switch(switch(grade grade)case A:case A:printfprintf(“90-100(“90-100n n“);“);breakbreak;case B:case B:printfprintf
25、(“80-89(“80-89n n“);“);breakbreak;case C:case C:printfprintf(“70-79(“70-79n n“);“);breakbreak;case D:case D:printfprintf(“60-69(“60-69n n“);“);breakbreak;case E:case E:printfprintf(“0-59(“0-59n n“);“);breakbreak;default:default:printfprintf(“Error(“Errorn n“);“);return 0;return 0;第16页,本讲稿共40页switch
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序控制 结构 优秀 课件
限制150内