《c语言五》ppt课件

上传人:san****019 文档编号:83471297 上传时间:2019-02-27 格式:PPT 页数:30 大小:317KB
返回 下载 相关 举报
《c语言五》ppt课件_第1页
第1页 / 共30页
《c语言五》ppt课件_第2页
第2页 / 共30页
《c语言五》ppt课件_第3页
第3页 / 共30页
《c语言五》ppt课件_第4页
第4页 / 共30页
《c语言五》ppt课件_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《《c语言五》ppt课件》由会员分享,可在线阅读,更多相关《《c语言五》ppt课件(30页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计,我能学好 C语言,主讲教师:马 驰,结构化程序设计技巧:,1.结构化的流程结构: 从前面的学习可知,C语言提供了十分完备的结构化 流程控制结构,与非结构化程序设计方法相比较,采用 结构化程序设计能够设计出更容易理解的程序,因此也 更加容易测试、调试和修改。正确使用这些结构将有助 于设计出高度结构化的程序。因此在设计程序是要注意 灵活运用。结构化的流程控制结构的语句框图如下:,(1)顺序结构,(2)选择结构,C.switchcase(多分支)结构,B.ifelse(双分支)结构,A.if(单分支)结构,结构化程序设计技巧:,(3)循环结构,结构化程序设计技巧:,在设计说明时,正确

2、选用上述7种结构,有助于使 程序层次分明、条理清楚、简洁高效。,【例1】 : 求和程序(不使用规范化流程结构) #include main() int n,sum; n=sum=0; begin: ; scanf(“%d ”, ,求和程序(使用规范化流程结构) #include main() int n,sum; sum=0; scanf(“%d”,&n); while (n!=0) sum+=n; scanf(“%d”,&n); printf(“The sum is %d”,sum); ,结构化程序设计技巧:,设计结构化程序的规则:,规则1:从最简单的流程图开始。,一个入口, 一个出口, 一

3、个动作。,规则2:任何一个动作(矩形框)都可以被两个按照顺 序执行的动作(矩形框)取代。,运用此规则可 以设计结构清 晰、积木式的 结构化流程图。 规则 2 也称为 “ 栈式控制规 则”。,结构化程序设计技巧:,规则3:任何动作(矩形框)都可以被任何控制结构 (顺序、选择、循环)所取代。,对简单的流程图反 复运用规则3 可以 设计出嵌套式的结 构化流程图。因此 规则3也称为“嵌套 式控制规则”。,结构化程序设计技巧:,设计结构化程序的规则:,规则4:可以根据需要按照任何顺序多次运用规则2和 规则3。,因此,运用规则4 可以 设计出结构更庞大、 内容更丰富、层次更 深的嵌套式结构。能 够建立所有

4、可能的结 构化程序。,结构化程序设计技巧:,设计结构化程序的规则:,设计结构化的程序: 使用单入口/单出口并且具有确定性和唯一性的简单 程序结构,采用两种组装方式就可以构造复杂的任何程 序流程。,两种组装方式:,三种控制结构:顺序、分支、循环,结构化程序设计技巧:,2.程序的模块化,(1)程序设计时,一般将整个程序按不同的功能分割 成若干个模块逐个进行编制、调试。然后进行统 一链接。,(2)一般而言:一个功能模块以100行左右为宜。,模块化?不仅仅是指整个程序划分成若干个模块,更重要的是指保持各个模块之间的变量的独立性,亦既模块的独立性。一个成功的独立的模块,应该可以被各种不同的程序所采纳而使

5、用、并融会其中。这样,将大大提高程序开发的效率,减少程序开发的成本。模块之间的调用通过参数传递实现。,结构化程序设计技巧:,在C语言中,一个模块通常是指一个函数。各个模块之间也就是各个函数之间依靠输入参数和输出参数进行传递、连接 。我们不必理会每个模块是如何处理这些参数的,只是需要知道给这个模块什么参数,能够得到什么结果。,模块 (黑箱),关于程序的模块化设计,将在函数一章中进一步学习。,类似黑箱模型:,结构化程序设计技巧:,编写C语言程序,一般采用公认的“统一”格式,这种 “统一”的格式就是按照程序的不同功能层次,对while、 for、dowhile、ifesle、switchcase等控

6、制语句 或这些语句的嵌套组合,采用“右缩进”的书写方式。 例如: for (i=1;i=10;i+) sum+=i; ,3.合理的程序书写格式:,优点:利用“右缩进”的书写方式可以使用户对于程序的各个大小 不同的复合语句更加清楚,对各个不同的控制结构及其相互呈递 的嵌套的关系更加明了。“右缩进”的长短由用户自己决定,一般 利用键盘上的键进行控制,一次缩进8个字符。,结构化程序设计技巧:,优点:在程序中简化书写格式、减少错误。方便我们快速替换程序中的常量和表达式。,4.灵活运用预处理程序,在一个C程序的开头,既定义主函数main()之前, 一般需要用define宏定义一些经常使用的常数(不带参

7、数的宏定义)和表达式(带参数的宏定义)。,例如: 定义符号常量 #define PI 3.1415926 定义表达式 #define F(x)(1/(1+(x),注意: 形参外有无()的结果是不一样的。对于带参宏定义是原样展开。,注意: 宏名与()之间不应有空格,否则空格后的字符被作为替代字符串的一部分。,结构化程序设计技巧:,5.常见错误与解决方案,(1)混淆“=”与“=”,改变“=”的两侧的类型。例如:100=n;,(2)循环的“丢一错误”,使用最后结果值做为终止条件,或采用 符号“=”.,(3)变量单元存有“垃圾值”,对变量赋初始值,特别地在循环中, 要注意控制变量的初始值对结果变 量单

8、元的影响。,(4)结构体的“丢语句”,如果多于一条语句,采用复合语句形式。,(5)分支或循环的表达式的()外直接写有“;”,(6)嵌套结构中的“错误配对”,使用“ ”将对应的层次括起来, 即使只有一条语句。,(7)标记值使用“合法数据”,选用远离合法数据的一个“界外值” 做标记值。,结构化程序设计技巧:,示例,【例1】:利用while循环和计数器变量n打印120之间 的所有数据。要求每行打印5个整数。,方法1: main() int n=1; while (n=20) printf(“%d”,n); if (n%5 = 0) printf(“n”); else printf(“t”); n+;

9、 演示j2。c,方法3: main() int n=0; while (+n=20) if (n%5 = 0) printf(“%dn”,n); else printf(“%dt”,n); 演示J22。C,示例,【例1】:利用while循环和计数器变量n打印120之间 的所有数据。要求每行打印5个整数。,【例2】:编写一个程序计算用一角、二角、五角凑成一 元,可以有多少种组合,并打印出每一种组合。,依题意: 可以用a,b,c分别表示一角、二角、五角钱币的张数, 则a的取值范围为010;b的取值范围为05;c的取 值范围为02。组合数由n来表示。采用三重循环实 现的算法。,说明: 这是一例“死算

10、”的算法。 “死算”是一种重要的求解 算法。本题中可以利用三重循环的嵌套找出所有可能的 组合。 实际上许多问题的求解除了“死算”之外,没有更好 的算法描述。以前需要几年、几十年、几个世纪才能解 决的问题,现在只需要很短的时间就可以得到结果。,示例,#include main() int a,b,c,n=0; printf( “ 1jiaobi 2jiaobi 5jiaobin” ); for(a=0;a=10;a+) for(b=0;b=5;b+) for(c=0;c=2;c+) if(a+2*b+5*c = 10) n=n+1; printf(“%5d%7d%9dn”,a,b,c); pri

11、ntf(“t组合数 =%dn”,n); 演示J3.C,示例,【例2】:编写一个程序计算用一角、二角、五角凑成一 元,可以有多少种组合,并打印出每一种组合。,#include main() int i; char number; for(i=1; ;i+) scanf(“%c”,&number); if(number = *) break; else printf(“%c”,number); printf(“循环结束n”); 演示J4.C,【例3】:从键盘上输入字符数字,边输入边在屏幕上显 示出来,当输入星号“*”时,输入结束。,这里:for循环写成了for (i=1; ;i+) 的形式,因为省

12、略了表达式2(分号不 能省略)所以它是一个无限循环,必须依 靠if语句退出循环。当判断语句为“真”时 终止循环并打印出“循环结束” 。,示例,【例4】: (百钱买百鸡):公鸡5元一只;母鸡3元 一只;小鸡1元3只;化了100元买了100只鸡,问:公鸡、 母鸡、小鸡各是多少只?(只计算一种结果),依题意: 以cock、hen、chicken分别表示公鸡、母鸡、小鸡,则 有不定方程式: (1)cock+hen+chicken=100; (2)5*cock+3*hen+1/3*chicken=100; 程序如下所示:,示例,main() int cock,hen,chicken; for(cock=

13、0;cock=100/5;cock+) for(hen=0;hen=100/3;hen+) chicken=100-cock-hen; if( chicken%3= =0 )& (5*cock+3*hen+chicken/3= =100) printf(“#cock=%dt#hen=%dtchicken=%dn”, cock,hen,chicken); j5。c,示例,main() int cock,hen,chicken; for(cock=0;cock=100/5;cock+) for(hen=0;hen=100/6;hen+) chicken=100-cock-hen; if( chic

14、ken%2= =0 )& (5*cock+6*hen+chicken/2= =100) printf(“#cock=%dt#hen=%dtchicken=%dn”, cock,hen,chicken); goto end; end: ; ,示例,【例5】编写一个程序,对于输入一个给定的百分数成绩,输出用相应的“A”, “B”, “C”, “D”, “E”表示的等级成绩。,main() int score,num,flag; char grade; flag=1;,while(flag) printf(“enter score:n”); scanf(“%d” , ,示例,switch(num)

15、case 9:grade=A ;break; case 8:grade=B ;break; case 7:grade=C ;break; case 6:grade=D ;break; case 5: default:grade=E ;break; ,printf(“the score is:%d,the grade is %c.n” , score,grade); 演示J6。C,if (score = 100) num=9; else num=(score-score%10)/10;,示例,【例5】编写一个程序,对于输入一个给定的百分数成绩,输出用相应的“A”, “B”, “C”, “D”, “E”表示的等级成绩。,【例6】:数列算法 设有一个分数序列: 2/1,3/2,5/3,8/5,13/8,21/13, 编程 求出这个数列的前10项之和。,#include main() int n,m,number=10; float a=2,b=1,sum=0, for(n=1;n=number;n+) sum=sum+a/b; m=a; a=a+b; b=m; printf(“sum=%6.2fn”,sum); 演示 j8.c,数学模型: ( ai+1)

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

最新文档


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

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