C语言程序设计第二章算法
- 格式:ppt
- 大小:217.50 KB
- 文档页数:32
第2章程序的灵魂——算法1. 概念:为解决某一特定问题而采取的具体工作步骤和方法。
2. 举例◆计算1+2+3+……+100的值◆计算1×2×3×……×1000的值◆有50个学生,要求输出他们之中成绩在80分以上的学号和成绩◆判定2000-2500年中的每一年是否闰年3. 算法的表示(1) 自然语言(2) 流程图表示法(3) 伪代码表示法(4) 计算机语言表示法(2) 流程图表示法顺序结构、选择结构和循环结构流程图这三种基本结构有以下共同的特点:1. 只有一个入口;2. 只有一个出口;3. 结构中的每一部分都有被执行到的机会;4. 结构内没有死循环。
用上述基本结构的顺序组合可以表示任何复杂的算法结构,但是基本结构中的流程线使流程图显得较乱,于是1973年美国学者提出了一种新的流程图形式。
在这种流程图中,完全去掉了带箭头的流向线,全部算法写在一个矩形框内。
下面是三种控制结构的N-S图。
例1 求四个数的和算法一:在内存中设一累加用的存储单元S。
第1步:将存储单元S清零。
第2步:输入第1个数a1。
第3步:把a1加到存储单元S中。
第4步:输入第2个数a2。
第5步:把a2加到存储单元S中。
第6步:输入第3个数a3。
第7步:把a3加到存储单元S中。
第8步:输入第4个数a4。
第9步:把a4加到存储单元S中。
第10步:把存储单元S中的结果输出。
算法二:在内存中设一累加用的存储单元S和一计数用的单元I。
第1步:将累加单元S清零。
第2步:将计数单元I清零。
第3步:输入一个数A。
第4步:把A加到累加单元S中。
第5步:计数单元I的值增加1,即I+1=>I。
第6步:若I<4则转去执行第3步,否则,继续执行第7步。
第7步:输出存储单元S中的结果。
开始结束S+A=>S 0=>S 0=>I 输入A I+1=>I I<4输出S 0=>s0=>I输入A S+A=>S I+1=>I 直到I=4输出结果S N-S 图Y例2 求5!开始结束T*i=>t 1=>t 2=>i i+1=>i i>5输出S N例3 将50名学生中成绩在80分以上练习1:交换两个单元的内容。
第1章程序设计和C语言 1 1.1什么是计算机程序 1 1.2什么是计算机语言 1 1.3C语言的发展及其特点 3 1.4最简单的C语言程序 51.5运行C程序的步骤与方法1 2 1.6程序设计的任务14 1-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.3C语句573.4数据的输入输出65习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
第2章程序的灵魂——算法本章重点:1、初步掌握如何设计一个算法2、掌握结构化的程序设计方法——传统的流程图和N-S流程图。
程序=算法(叙述:对操作的描述)+数据结构(叙述:数据类型及组织形式)+程序设计方法+语言工具和环境。
C程序的设计:包括分析问题,写出算法,用C语句(叙述:包括定义语句,控制语句,函数调用,表达式语句,空语句,复合语句)写出程序(设计程序),上机运行。
算法是程序设计的关键。
2.1算法的概念算法:为解决一个问题而采取的方法和步骤。
简单地说就是:解决问题需要做什么并且怎么做。
2.2 简单算法举例高级语言程序设计均是结构化的设计方法。
结构化的设计方法:使用结构清晰,便于阅读的程序结构;体现为自顶向下,逐步细化。
先理解:i=i+1同理:如i=2,p=1, p=p×i通过以下五个例子逐步熟悉算法的设计方法:P14~18例2.1求5!例2.2假设一个班有50个学生,将成绩为80分以上的学生学号及成绩打印出来。
例2.3判断2000~2500年中的哪些年是闰年,并输出结果。
见P17图的分析例2.4求1-1/2+1/3-1/4+...+1/99-1/100例2.5判断≥3的正整数是否为素数。
2.3 算法的特性1、有穷性。
若有循环,则需要有使程序结束的条件;避免死循环。
2、确定性。
算法中每一步骤都应当是确定无误的,不能模棱两可,否则产生歧义性。
3、有0或多个输入。
即程序中可以没有输入语句。
4、有一个或多个输出。
即至少要有一个输出。
5、有效性。
如设计的算法中避免用零做除数。
2.4 怎样表示一个算法本节主要介绍三种方法:自然语言,传统流程图,结构化流程图:N-S流程图。
一、用自然语言:表述要清楚、确定。
2.2节例子就是用它表示的。
缺点:需根据上下文理解正确含义,若断章取义则会失去本身含义。
二、用流程图●美国国家标准化协会ANSI规定常用的流程图符号:P20图2.3●第二节中的例子用流程图表示的结果:P20~23●传统流程图的缺点:复杂问题流程线多,容易绕糊涂,象走迷宫。