C语言程序设计(第二版)-电子教案-任正云 第3章顺序程序设计

上传人:E**** 文档编号:89381994 上传时间:2019-05-24 格式:PPT 页数:40 大小:669.50KB
返回 下载 相关 举报
C语言程序设计(第二版)-电子教案-任正云 第3章顺序程序设计_第1页
第1页 / 共40页
C语言程序设计(第二版)-电子教案-任正云 第3章顺序程序设计_第2页
第2页 / 共40页
C语言程序设计(第二版)-电子教案-任正云 第3章顺序程序设计_第3页
第3页 / 共40页
C语言程序设计(第二版)-电子教案-任正云 第3章顺序程序设计_第4页
第4页 / 共40页
C语言程序设计(第二版)-电子教案-任正云 第3章顺序程序设计_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《C语言程序设计(第二版)-电子教案-任正云 第3章顺序程序设计》由会员分享,可在线阅读,更多相关《C语言程序设计(第二版)-电子教案-任正云 第3章顺序程序设计(40页珍藏版)》请在金锄头文库上搜索。

1、第三章 顺序结构程序设计,算法 C语言概述 标准的输入与输出函数 标准输出/输入函数 字符输入/输出函数,3.1 算法,算法的特性: 有穷性 确定性 有0个或多个输入 有1个或多个输出 有效性,程序包含两个方面的内容:一个是对数据的描述,一个 是对操作的描述。,程序=算法+数据结构,程序=算法+数据结构+程序设计方法+语言工具和环境,3.1 算法,算法的组成要素 操作 每个操作的确定不仅取决于问题的需求,还取决于它们来自哪个操作集,它还与使用的工具系统有关。 购买电视机 报考大学 结构控制,3.1 算法,算法的表示方法 用自然语言表示算法 自然语言就是人们日常使用的语言,可以是汉语、英语或其他

2、语言。用自然语言表示通俗易懂,但文字冗长,容易出现歧义的算法。自然语言表示的含义往往不太严格,要根据上下文才能准确判断。此外,用自然语言描述分支和循环的算法,不是很直观。 用流程图表示算法,3.1 算法,用流程图表示算法,只有一个入口:不得从结构外随意转入结构中某点。,只有一个出口:不得从结构内某个位置随意转出(跳出)。,结构中的每一部分都有机会被执行到(没有“死语句”)。,结构内不存在“死循环”(无终止的循环)。,共同特点:,例如:计算半径为r的圆的面积s,例如:判断两个输入数据的大小, 并输出其中的大数。,用流程图表示的算法直观形象,比较清楚地显示出各个 框之间的逻辑关系,因此得到广泛使用

3、。,算法的表示方法,用N-S流程图表示算法,美国学者I.Nassi,B.Shneiderman提出了一种新的流程 图N-S流程图。在这种流程图中,完全去掉了带箭头 的流程线,每种结构用一个矩形框表示,流程图如下图所示。,例如:计算半径为r的圆的面积s,例如:判断两个输入数据的大小, 并输出其中的大数。,N-S流程图表示算法有以下优点:,比文字描述更加直观、形象,易于理解。,比传统的流程图紧凑易画。,废除流程线,整个算法结构是由各个基本结构按顺序组成。N-S流程图的上 下顺序就是执行时的顺序,表示的算法都是结构化的算法。,算法的表示方法,用伪代码表示算法 : 伪代码是用介于自然语言和计算机语言之

4、间的文字和符号来描述算法。伪代码不用图形符号,书写方便,格式紧凑,便于向计算机语言算法过渡。,下面就是从a、b、c中找出最大数的伪代码描述。,输入a、b、c; if(a=b) max=a; else max=b; if(max=c) 输出max; else 输出c;,算法的表示方法,用计算机语言表示算法 用计算机语言表示算法实际上就是实际的程序。用计算机语言表示算法必须严格遵守所使用的语言的语法规则。,自顶向下、逐步细化的设计过程,包括以下几个方面: 将一个复杂问题的解法分解和细化成由若干模块组成的层次结构。 将一个模块的功能逐步分解细化为一系列的处理步骤,直到某种程序设计语言的语句和某种机器

5、指令。 具有以下两个优点: 自顶向下、逐步细化的方法符合人们解决复杂问题的普遍规律,可以显著提高程序设计的效率。 用先全局后局部,先整体后细节、先抽象后具体的逐步细化过程设计出的程序具有清晰的层次结构,容易阅读和理解。,用自顶向下、逐步细化的方法设计3个数中取最大 数算法。,例3.1,(1)首先,分析问题需求,S1:输入三个数a、b、c; S2:从a、b、c中找出最大数赋给max; S3:输出max。,(2)在前一阶段的基础上考虑各个“做什么”的实现途径,把算法细化如下。,S1:调用scanf()函数输入三个数a、b、c; S2:调用一个求三个数中最大数函数max3(a、b、c) ; S3:调

6、用printf()函数,将最大数输出。,(3)编写主程序,main() float a,b,c,max; float max3(float x,float y,float z); printf(“Input 3 number a b c:“); scanf(“%f%f%f “, ,(4)设计max3()。,仍然采用逐步细化的方法,概要算法如下: S2.1:从x与y中取较大数送入m中; S2.2:从m与z中取较大数送入m中; S2.3:返回m给主调函数。,s2.1: if(xy) m=x; else m=y;,s2.2: if(mz) m=z;,s2.3: return (m);,float m

7、ax3(float x,float y,float z) float m; if(xy) m=x; else m=y; if(mz) m=z return (m); ,(百钱百鸡)公元前五世纪,我国古代数学家张丘建在算经一书中提出:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?,例3.2, 解题思路的分析 这是一个有名的不定方程问题: cocks+hens+chicks=100 5*cocks+3*hens+chicks/3=100 式中: cocks: 鸡翁数 019中的整数 hens: 鸡母数 033中的整数 chicks: 鸡雏数 0100中的整数,S1

8、: cocks=0; /*赋初值*/ S2: while(cocks=19) S2.1: 找出满足题意的 hens、chicks; S2.2 :cocks加1; /*cocks=cocks+1*/,S2.1.1: hens =0; /*赋初值*/ S2.1.2: while(hens =33) S2.1.2.1: 找出满足题意的chicks; S2.1.2.2:hens加1; /* hens = hens +1*/, 下面对S2.1细化,思路1:把已经确定的cocks带入(1)与(2)中,求解方程,看能否找到满意的解。这种思路不太适合计算机求解。 思路2:在每个给定的cocks下,对hens的

9、取值范围内的各个值依次测试,看能找到哪些hens及chicks满足题意。,S2.1.2.1: chicks=100 cocks-hens; if(5*cocks+3*hens+chicks/3.0=100) printf(“%d%d%dn“,cocks,hens,chicks);, 对S2.1.2.1细化,对S2.1.2.1来说,cocks 和hens都已确定,这时的chicks满足: chicks=100 cocks-hens,# include “stdio.h“ void main() int cocks,hens,chicks; cocks=0; while(cocks=19) hen

10、s=0; while(hens=33) chicks=100 cocks-hens; if(5*cocks+3*hens+chicks/3.0=100) printf(“%d%d%dn“,cocks,hens,chicks); hens+; cocks+; ,3.2 C语句概述,C语句可以分为3大类: 控制语句 表达式语句 复合语句,3.2.1 控制语句,C有9种控制语句,它们是: if( )else (条件语句) for( ) (循环语句) while( ) (循环语句) dowhile( ) (循环语句) continue (结束本次循环语句) break (终止执行switch或循环语句

11、) switch (多分支选择语句) goto (转向语句) return (从函数返回语句),3.2.2 表达式语句,表达式语句是在表达式最后加上一个“;”组成。,3.2.2 表达式语句,表达式语句常见的形式有: 赋值语句 由赋值表达式加上一个分号构成赋值语句。 函数调用语句 由函数调用表达式加一个分号构成函数调用语句。printf(“This is a C statement. “); 空语句 只有一个分号的语句,它什么也不做(表示这里可以有一个语句,但是目前不需要做任何工作)。,3.2.3 复合语句,用 把一些语句(语句序列,表示一系列工作)括起来成为复合语句,又称语句块、分程序。,如:

12、 int a,b,sum; a=0; b=2 sum=a+b; printf(“%d“,sum); ,注意:C语言允许一行写几个语句,也允许一个语句拆开写在几行上,书写格式无固定要求。一般将彼此关联的、或表示一个整体的一组较短的语句写在一行上。,3.3 数据的输入和输出,C语言本身不提供输入输出语句。 输入输出操作是由标准输入输出函数来完成的。,3.3.1 数据的输出函数,格式: printf(“格式控制参数”,输出项1,输出项2,); 说明 格式控制参数以字符串的形式描述,也称“格式控制字符串”。,3.3.1 数据的输出函数,格式输出函数基本上由两种使用形式: 原样输出格式 printf(“

13、要输出的字符串”); 如:printf(“This is a C program.n”); (原样输出“This is a C program.” ) 输出变量的值 printf(“格式控制字符串”,输出表列); 输出的表列是要输出的变量、常量和表达式等,输出表列中参数的个数是一个到若干个,当超过一个时,用逗号分隔。 格式控制字符串中有两类字符: 非格式字符 非格式字符(或称普通字符)一律按原样输出。 格式说明符 格式说明符由“%”和转换字符组成,作用是将输出的数据转换为指定的格式输出。,格式: printf(“格式控制参数”,输出项1,输出项2,);,数据的输出,(1)%d格式字符。 %d:

14、整数的实际位数输出一个整数。 %md:在m列的位置上以数据右对齐的方式输出一个整数,m大于整数的宽度时多余的位数空格留在数据前面,m小于整数的宽度时m不起作用,系统正确输出该整数。 %-md:在m列的位置上以数据左对齐的方式输出一个整数,m大于整数的宽度时多余的位数空格留在数据后面,m小于整数的宽度时m不起作用,系统正确输出该整数。 %0md:在m列的位置上以数据左对齐的方式输出一个整数,m大于整数的宽度时多余的位数在数据前面补0,m小于整数的宽度时m不起作用,系统正确输出该整数。,# include “stdio.h“ main() int a; a=123; printf(“%dn“,a)

15、; printf(“%6dn“,a); printf(“%2dn“,a); printf(“%-6dn“,a); printf(“%06dn“,a); ,运行结果: 123 123 123 123 000123,数据的输出,(2)%o格式字符:八进制整型数据格式。, printf(“%on“,a); printf(“%6on“,a); printf(“%2on“,a); printf(“%-6on“,a); printf(“%06on“,a); ,运行结果为: 173 173 173 173 000173,数据的输出,(3)%x格式字符:十六进制整型数据格式。, printf(“%xn“,a); printf(“%6xn“,a); printf(“%2xn“,a); printf(“%-6xn“,a); printf(“%06xn“,a); ,运行结果为: 7b 7b 7b 7b 00007b,数据的输出,(4)%u格式字符:十进制无符号整型数据格式。,# include “stdio.h“ main() int a=-1,b=1; printf(“ 十进制 八进制 十六进制 无符号整型n“); printf(“a: %d , %o , %x , %u

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号