第3章三种基本程序结构.ppt

上传人:夺命阿水 文档编号:740083 上传时间:2023-11-02 格式:PPT 页数:46 大小:971KB
返回 下载 相关 举报
第3章三种基本程序结构.ppt_第1页
第1页 / 共46页
第3章三种基本程序结构.ppt_第2页
第2页 / 共46页
第3章三种基本程序结构.ppt_第3页
第3页 / 共46页
第3章三种基本程序结构.ppt_第4页
第4页 / 共46页
第3章三种基本程序结构.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《第3章三种基本程序结构.ppt》由会员分享,可在线阅读,更多相关《第3章三种基本程序结构.ppt(46页珍藏版)》请在课桌文档上搜索。

1、C语言程序设计,第三章 三种基本程序结构,C语言属于典型的结构化程序设计语言。结构化程序设计是一种进行程序设计的原则和方法,按照这种原则和方法可设计出结构清晰、容易理解和修改的程序。结构化程序的局部上仍然由3种基本结构组成,那就是:顺序结构、选择结构和循环结构。,3.1 算法,广义的讲,算法就是解决问题的一般方法。,在计算机程序设计领域,算法是合理组织语句顺序,将数据对象进行有序的加工处理的一般方法。结构化程序设计的一般步骤:,程序:程序=算法+数据算法:解决问题的方法;数据:加工的对象;,“算法是程序的灵魂”,一、算法设计 程序实际上是用计算机语言所描述的算法。也就是说,依据算法所给定的步骤

2、,用计算机语言所规定的表达形式去实现这些步骤,即形成源程序。在算法设计中应遵循的准则:1.可行性 2.确定性(稳定)3.有穷性(可以结束)4.输入 5.输出,二、算法的描述 对算法的描述,一般采用自然语言、一般流程图或N-S结构流程图、伪代码等几种方法。一般流程图的基本图元:,所谓“图元”是构成流程图的基本符号。,第一章中的例1-1对应的一般流程图:,思考题:画出求5的流程图。,3.2 顺序结构,顺序结构是最简单的一种程序结构。程序中的语句按先后顺序逐条依次执行。“语句”是用来向计算机发出的操作指令。一个实际的C语言程序应包含若干条语句。一、C语句概述 C程序中的语句分为5大类别:1.控制语句

3、 2.表达式语句 3.函数调用语句 4.空语句 5.复合语句,1.表达式语句 由一个表达式后跟一分号“;”构成的语句。如:a=10;3+4*5/6;2.控制语句 教材P35页。起到控制语句执行顺序的作用。通常在流程图中反映为流程线的跳动。3.函数调用语句 如:printf(“min=%d”,m);c=max(a,b);,注意末尾的分号;,4.空语句;注意这也是一条语句!5.复合语句 复合语句就是用一对大括号“”将若干语句括起来形成的语句。例如:t=a;a=b;b=t;用“”将若干语句括起来的“语句群”。,注意:1.这是一条语句 2.末尾(也就是“”后)可以没有分号“;”,二、格式输入与输出 C

4、程序中没有专门的输入与输出语句,相关功能用函数的手段实现。1.格式输出函数printf printf函数的作用是按照指定格式在终端(显示器)上输出信息。一般形式:printf(格式控制,输出列表);如:printf(“x=%d,y=%f”,a,b);,1)“输出列表”部分 输出列表由逗号“,”连接若干待输出量。如上例中的a,b,表示将要输出变量a和b的值。“待输出量”可以是变量、常量、表达式甚至是函数调用,例如:printf(“zhui da zhi shi%d”,max(a,b);其中max(a,b)函数调用部分即是待输出量部分。又如:printf(“%dn”,5+6*7);,2)“格式控制

5、”部分 格式控制部分起到规定输出信息的内容及格式的作用。其是由一对双引号括起来的字符串,其中包含2种字符:普通字符、格式控制符。普通字符 printf函数在输出时将普通字符不做任何更改的照原样输出。普通字符起到描述输出信息含义的作用。格式控制符 格式控制符起到规定输出表列中待输出量按照什么格式输出的作用。教材P36页。,注意:1.待输出量的数据类型必须与格式控制符限定的数据类型对应;2.格式控制符区分大小写;3.可以没有输出表列部分,但必须要有格式控制部分;4.输出列表中待输出量的个数不应少于格式控制部分中格式控制符的个数;5.待输出量的个数可以大于格式控制符个数,多出的待输出量将在输出时被忽

6、略掉。,如实数型量不能按%d形式输出,字符串量不能按%f形式输出等等。下面语句写法是错误的:printf(“%dt%fn”,3.14,”how are you!”);下面语句呢?printf(“%c”,C);printf(“%d”,C);,这和变量名是不一样的。例如“%d”和“%D”被认为是不一样的。下面语句和合法的:printf(“%F%S”,12.345,”WuHan”);,即上述printf函数的一般形式严格意义上应改为:printf(格式控制,输出列表);即输出表列部分是可选的。如:printf(“How are you!n”);,printf函数按格式控制符指定的形式在输出列表中寻找

7、待输出量与之对应输出。当找不到对应待输出量时则会出错。如:printf(“first=%d,second=%d,third=%d”,a,b);假设变量a的值为3,b的值为4,则输出为:first=3,second=4,third=2268,如:printf(“first=%d,second=%d”,a,b,c);则输出为:first=3,second=4变量c的值将不被输出。,2.格式输入函数scanf 一般形式:scanf(格式控制,输入列表);如:scanf(“%d,%f”,scanf函数是从标准输入设备(通常是键盘)读取输入值并赋给输入列表中对应位置的变量。如上例运行时从键盘输入:34,

8、5.6则之后变量m的值为34,变量n的值为5.6。,scanf函数与printf的对比:1.scanf函数中的输入表列部分中的待输入量必须取变量的地址,而不是变量名;如下面的写法是错误的:scanf(“%d%d”,a,b);2.格式控制部分中最好不要出现普通字符,否则应按原样输入;如:scanf(“one=%f,two=%d”,输入时应:one=9.8,two=100,3.scanf函数是以“空格”、“回车”以及“可取有效输入”等3种方式作为一笔有效输入数据的。如:scanf(“%d%d”,/*两个%d之间没有空格*/在输入时,可以:3 4将3赋给a,4赋给b,也可以:34,下面是体现“可取有

9、效输入”含义的一个例子:scanf(“%d%c%d”,如果想输入123给m,字符w给ch,456给n,则以下3种输入方式应采用哪一种呢?123 123w456 123 w 456 w 456,4.从键盘输入数据的类型及个数应与格式控符相匹配。例如:scanf(“%d,%d”,输入数据时的形式:123,3.14123,456,789123,456中只有第方式是正确的。三、顺序结构程序举例 例3-1。,习题三,1、做书上 课后习题一(1)(6),二(1);2、作业本 课后习题三(1)、(3),3.3 选择结构,选择结构程序,顾名思义就是根据某些条件选择执行这些或者那些程序的结构形式。生活中的例子:

10、,C语言中,选择结构语句有if语句、switch语句以及条件运算符语句。,一、if语句 if语句的一般形式为:if(表达式)语句1;else 语句2;说明:(1)“表达式”是广义上的表达式,可以是表达式、常量、变量,或函数调用等;,如:if(xy)z=x;else z=y;if(5)printf(“OK!”);if(a=3)printf(“Good”);,(2)“语句1”和“语句2”只可能一个被执行;if语句首先对表达式求解,若表达式的值为非0(真),按则执行“语句1”;若表达式的值为0(假),则执行else子句部分的“语句2”。(3)当要执行的语句是两条或两条以上语句时,一定要用一对大括号将

11、这些语句组合成复合语句;,(4)if子句是必须的,而else子句是可选的。但反过来不成立,即else子句不能脱离if子句单独存在。流程图可以变化如下:,if(xy)z=x;else z=y;,再看例1-3,二、条件运算符 条件运算符用以实现选择结构的非常简洁。如下例:,if(ab)max=a;else max=b;,也可以写成,max=(ab)?a:b,其中的(ab)?a:b 是一个条件表达式,由运算符“?:”构成,此运算符称为“条件运算符”或“问号运算符”。它是一个3目运算符。运算过程P39页。,说明:1、条件表达式可以嵌套。即可以为:max=(ab)?a:(bc?b:c);其中表达式3部分

12、又是一个条件表达式;2、条件表达式的结合方向(计算方向)为“从右向左”。即上述表达式求解时,先计算并得到(bc?b:c)的值,然后再将此值作为外层表达式的表达式3部分。3、条件表达式一般使用在赋值语句中。虽然它快捷方便,但功能上相比if语句还嫌不够。所以在实际应用中,应视具体情况合理使用。,三、switch语句 switch语句的一般形式为:,switch(表达式)case 常量表达式1:语句1;break;case 常量表达式2:语句2;break;case 常量表达式n:语句n;break;default:语句n+1;,说明:1、其中的表达式可以为任何类型;2、注意switch语句的执行顺

13、序;3、“常量表达式?”只能是常量或常量表达式,结果必须是整型或字符型量;4、“常量表达式?”两两不能相同;5、各case分子和default分支出现的次序无关紧要;6、“语句?”部分当是多条语句时,可以不必组合成复合语句;7、表达式只求解一次,执行完对应的“语句?”部分后继续执行,直到break或为止;,分析下面的例子:,switch(grade)case A:printf(“90100!n”);case B:printf(“8089!n”);case C:printf(“7079!n”);case D:printf(“6069!n”);case E:printf(“60!n”);defau

14、lt:printf(“Cuo wu!n”);,当grade的值为A时,输出为什么?,9010080897079606960!,为什么?,case子句只是“入口点”,可以合理加以利用。,8、default出现在最后可以没有break配对,但出现在之前有讲究。,四、选择结构程序举例 例3-2、3-3。,习题四,1、做书上 课后习题一(7)(12),二(2)、(5)、(10)、(11)、(12);2、作业本 课后习题三(4)、(6)、(7),3.4 循环结构,考虑下面的问题:1、请计算1100累加和,并输出结果。请画出流程图;请编写实现的C程序。2、请计算11000累加和,并输出结果。3、请计算11

15、0000累加和,并输出结果。4、请计算11000 此时,就要用到循环结构实现了!,C语言中,循环结构语句有while语句、dowhile语句以及for语句。,一、while语句 while语句的一般形式:while(表达式)语句;例如:while(i100)sum+=i;,说明:(1)“表达式”可以是任何类型。while首先对于表达式进行求解,若值为假(0)则while语句到此结束,程序将执行后续语句,如果为真(非0)则执行“语句”部分,之后再对表达式进行判断,如果,构成循环;,表达式,假,真,语句,(2)“语句”部分可以是任何类型;(3)while中的表达式应有使循环趋于结束的措施。下面的语

16、句是有问题的:,while(6)sum=sum+i;,while循环程序举例 例3-4。,二、dowhile语句 dowhile语句的一般形式:do 语句;while(表达式);例如:do sum=sum+i;i+;while(i100);,说明:(1)“表达式”可以是任何类型;(2)“语句”是广义上的;(3)while行末一定要有分号“;”;(4)while语句是“先谈条件,后做事情”,而dowhile语句是“先做事情,后谈条件”。,int a=5;while(a=5)a=a+1;printf(“%d”,a);,int a=5;do a=a+1;while(a=5);printf(“%d”,

17、a);,分析下面的例子:,dowhile循环程序举例 例3-5。,三、for语句 for语句的一般形式:for(表达式1,表达式2,表达式3)语句;例如:for(i=1;i=100;i+)sum=sum+i;,表达式2,假,真,表达式1,语句,表达式3,for语句的执行步骤:(1)求解“表达式1”;(2)求解“表达式2”,若其值为假(0),则for循环就此结束,程序继续向后执行for语句的下一条语句,若为真(非0),则执行循环体语句;(3)循环体内语句全部执行完后,求解“表达式3”;(4)返回到第(2)步骤,如此往复构成循环。,表达式2,假,真,表达式1,语句,表达式3,用dowhile语句怎

18、么改写呢?,说明:(1)3个“表达式”都可以是任何类型;(2)“语句”是广义上的;(3)表达式1可以被省略,但之后的分号;不能省;(4)表达式2可以被省略,但之后的分号;不能省,并且要注意循环条件的控制;,i=1;for(;i=100;i+)sum=sum+i;,for循环程序举例 例3-6。,(5)表达式3可以被省略,但前后的分号;不能省;,for(i=1;i=100;)sum=sum+i;i+;,(6)表达式1和3可以同时被省略,对应位置的分号;不能省;,(7)3个表达式可以同时被省略,对应位置的分号;不能省;,画出例3-6程序的流程图。,四、break语句和continue语句 1、br

19、eak语句 break语句的一般形式:break;适用场合:(1)switch语句中,与case分支配对;(2)循环语句中。在循环语句中的作用:结束(整个)循环。应用举例:例3-6。,2、continue语句 continue语句的一般形式:continue;适用场合:仅适用于循环语句中。作用:结束本次循环。应用举例:例3-7。五、循环结构程序举例 例3-8、3-9。,3.5 程序结构的嵌套,嵌套是指某程序结构中又包含另一程序结构的现象。,一、if语句的嵌套 例3-10。,main()int a,b,c,t;scanf(%d%d%d,注意:嵌套时,else子句if子句的配对问题。,if(x=0

20、)if(x0)y=1;else y=-1;,它们是一对吗?,else配对原则:else总是和它之前最近的还没有匹配的if配成一对。,二、程序结构嵌套举例 例3-11,编写程序,输出九九乘法表。,main()int i,j;printf(n);for(i=1;i10;i+)for(j=1;j10;j+)printf(%d*%d=%d,i,j,i*j);printf(“n”);,/*条件成立?进入循环*/,/*条件成立?进入循环*/,/*执行9次*/,/*外层循环进入第二轮,再次重复之前操作*/,例3-12,求所有3位数中的“水仙花数”。所谓“水仙花数”是指的这样的数:该数各位数的立方和等于这个数本身。如153就是“水仙花数”,因为111555333正好等于153。,main()int i,j,k;printf(n);for(i=1;i=9;i+)j=0;while(j=9)k=0;do if(i*i*i+j*j*j+k*k*k)=(i*100+j*10+k)printf(%dt,i*100+j*10+k);k+;while(k=9);j+;printf(n);,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号