C语言概述、算法介绍

上传人:新** 文档编号:579101248 上传时间:2024-08-25 格式:PPT 页数:46 大小:388.81KB
返回 下载 相关 举报
C语言概述、算法介绍_第1页
第1页 / 共46页
C语言概述、算法介绍_第2页
第2页 / 共46页
C语言概述、算法介绍_第3页
第3页 / 共46页
C语言概述、算法介绍_第4页
第4页 / 共46页
C语言概述、算法介绍_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《C语言概述、算法介绍》由会员分享,可在线阅读,更多相关《C语言概述、算法介绍(46页珍藏版)》请在金锄头文库上搜索。

1、第一章第一章 C概述、算法描述概述、算法描述主要内容主要内容 C语言概述 算法(一)(一)C语言概述语言概述内容内容nC语言出现的历史背景nC语言的特点n n简单的C程序介绍n n运行C程序的步骤历史背景历史背景C语言出现的历史背景语言出现的历史背景n nC C语言是国际上广泛流行的计算机高级语言语言是国际上广泛流行的计算机高级语言, ,既可既可用来写系统软件,也可用来写应用软件。用来写系统软件,也可用来写应用软件。n nC C语言是在语言是在B B语言的基础上发展起来的,它的根源语言的基础上发展起来的,它的根源可以追溯到可以追溯到ALGOL 60ALGOL 60。特点特点C语言特点语言特点1

2、.1.语言简洁、紧凑,使用方便、灵活。2.2.运算符丰富。3.3.数据结构丰富,具有现代化语言的各种数据结构。4.4.具有结构化的控制语句。5.5.语法限制不太严格,程序设计自由度大。6.6.语言能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。7.7.生成目标代码质量高,程序执行效率高。8.8.用C语言编写的程序可移植性好(与汇编语言比)。C语言在编程语言中的位置语言在编程语言中的位置有人把有人把C C称为称为“高级语言中的低级语言高级语言中的低级语言” 或或“中级语中级语言言”,意为兼有高级和低级语言的特点。按此观点可,意为兼有高级和低级语言的特点。按此观点可将各

3、语言分类如下:将各语言分类如下:高级高级: BASIC,FORTRAN,COBOL,PASCAL,Ada,Modula-2: BASIC,FORTRAN,COBOL,PASCAL,Ada,Modula-2;中级中级: : C C,FORTH,FORTH,宏汇编;宏汇编;低级低级: : 汇编语言汇编语言一般仍习惯将一般仍习惯将C C语言语言称为称为高级语言高级语言,因为,因为C C程序也要通程序也要通过编译、链接才能得到可执行的目标程序,这是和其过编译、链接才能得到可执行的目标程序,这是和其他高级语言相同的。他高级语言相同的。程序示例程序示例C C程序程序 ( (例例1.2)1.2)例例 1.2

4、 1.2 求两数和求两数和#include #include int main() int main() int a;int a;int b;int b;int sum; int sum; a a= 123; = 123; b b= 456; = 456; sumsum= a+b;= a+b; printf (sum is %d/nprintf (sum is %d/n, sum);sum); return 1return 1; C C程序(例程序(例1.31.3)例例1.3 1.3 求两个数中的较大者求两个数中的较大者#include #include int max(int xint ma

5、x(int x,int y);int y);/ / 前向声明前向声明前向声明前向声明int main ( )/* int main ( )/* 主函数主函数主函数主函数* */ / int aint a, b b, c; /*c; /*声明部分,定义变量声明部分,定义变量声明部分,定义变量声明部分,定义变量* */ / scanf (%dscanf (%d,%d%d,&a&a,&b); /*&b); /*输入变量输入变量输入变量输入变量a a和和和和b b的值的值的值的值* */ / c = max (ac = max (a,b);/*b);/*调用调用调用调用maxmax函数,将得到的值赋给

6、函数,将得到的值赋给函数,将得到的值赋给函数,将得到的值赋给c*/c*/ printf (max=%dprintf (max=%d,c); /*c); /*输出输出输出输出c c的值的值的值的值* */ /return 1;return 1; C C程序介绍程序介绍( (例例1.31.3续续1)1)/ / 定义定义maxmax函数,函数值为整型,函数,函数值为整型, 形式参数形式参数x x,y y为整型为整型int max(int xint max(int x,int y) int y) int z; int z; if (x y)if (x y) z=x; z=x; elseelse z=y

7、; z=y; return z;return z; C程序(例程序(例1.3续续2)max()函数的另两种写法:一种:int max(int x,int y)return x = y ? x : y;另一种:用宏实现#define MAX(x, y) (x) = (y) ? (x) : (y)运行运行C程序步骤程序步骤预备知识预备知识程序:一组计算机能识别和执行的指令。源程序:用高级语言编写的程序。计算机只能识别和执行由0和1组成的二进制指令,而不能识别和执行用高级语言写的指令。编译:为了使计算机能执行高级语言源程序,必须先用一种称为“编译程序”的软件,把源程序翻译成二进制形式的“目标程序”。

8、链接:把目标程序与系统的函数库以及其他目标程序链接起来,形成可执行程序。运行运行C程序流程图程序流程图(二)算法(二)算法总述总述程序包含以下两方面: 数据 数据的类型和数据的组织形式,即数据结构。 操作 即操作步骤,也就是算法。它们的关系: 数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。数据结构 算法 程序总述总述程序除了上述两个要素之外,还包括程序设计方法和计算机语言。因此,一个程序员应具备如下知识: 算法 数据结构 程序设计方法 语言内容内容n n算法的概念n n算法举例n n算法特性n n算法表示方法n n结构化的程序设计方法算法的概念算法的概念算法的概念算法的概

9、念为解决一个问题而采取的方法和步骤,就称为算法。生活中同样存在算法:吃饭、上学、跳舞 算法分类: 数值运算算法 非数值运算算法:常见的是用于事务管理。算法举例算法举例例例2.1问题描述:求1*2*3*4*5。方法一:用最原始的方法进行: 步骤1:先求1*2,得到结果2。 步骤2:将步骤2得到的结果再乘以3,得到结 果6。 步骤3:将6乘以4,得到24。 步骤4:将24乘以5,得到120。例例2.1(方法二)(方法二)设两个变量分别代表被乘数和乘数,不另外设变量存放结果,而直接将每一步的乘积放在被乘数变量中。p:被乘数,i:乘数。用循环算法求结果。步骤: S1:使p = 1 S2:使i = 2

10、S3:使p*i,乘积仍放在变量p中:p*i p S4:使i的值加1,即:i+1 i S5:如果i不大于5,返回S3重新执行;否则,算法结束。例例2.1(问题变化)(问题变化)问题改为:求1*3*5*7*9*11。算法只需作很少的改动: S1:1 p S2:3 i S3:p*i p S4:i+2 i S5:若i = 11,返回S3;否则,结束。思考:仔细分析循环结束的条件,即S5步骤,如果将S5修改为:i = 80gi = 80,则输出,则输出nini和和gigi;否则,不输出;否则,不输出S3S3:i+1 i+1 i iS4S4:如果:如果 i 50i 50,返回,返回S2S2继续执行;否则,

11、算法结束。继续执行;否则,算法结束。例例2.3问题描述:判断20002500年中的每一年是否闰年,将结果输出。闰年的条件:1)能被4整除,但不能被100整除的年份都是闰年,如1996年。2)能被100整除,又能被400整除的年份是闰年。如2000年。3)不符合上述条件的年份都不是闰年。例例2.3(算法)(算法)算法如下(设算法如下(设y y为被检测的年份):为被检测的年份):S1S1:2000 2000 y y;S2S2:若:若y y不能被不能被4 4整除,则输出整除,则输出y“y“不是闰年不是闰年” ”。然后转到。然后转到S6S6;S3S3:若:若y y能被能被4 4整除,不能被整除,不能被

12、100100整除,则输出整除,则输出y“y“是闰年是闰年” ”。然后转到。然后转到S6S6;S4S4:若:若y y能被能被100100整除,又能被整除,又能被400400整除,输出整除,输出y“y“是闰年是闰年” ”,然后转到,然后转到S6S6;S5S5:输出:输出y“y“不是闰年不是闰年” ”;S6S6:y+1 y+1 y y;S7S7:当:当 y = 2500y 5结束YN用传统流程图表示例用传统流程图表示例2.2算法算法开始0 ti+1 igi 80结束YN输出ni,gii 50NY流程图内容流程图内容一个流程图包括以下几部分:1)表示相应操作的框。2)带箭头的流程线。3)框内外必要的文

13、字说明。特别提醒:流程线不要忘记画箭头,因为它是反映流程执行先后次序。传统流程图优缺点传统流程图优缺点优点:优点:1 1)表示算法清楚、直观,能比较清楚地显示出各个框)表示算法清楚、直观,能比较清楚地显示出各个框之间的逻辑关系。之间的逻辑关系。缺点缺点1)1)流程图占用篇幅较多,尤其当算法比较复杂时,画流流程图占用篇幅较多,尤其当算法比较复杂时,画流程图既费时又不方便。程图既费时又不方便。2 2)对流程的使用没有严格限制,使用者可用毫不受限)对流程的使用没有严格限制,使用者可用毫不受限制地使用流程随意转来转去,使流程变得毫无规律,如制地使用流程随意转来转去,使流程变得毫无规律,如果出现这这情况

14、,就使人难以理解。果出现这这情况,就使人难以理解。解决办法:解决办法:限制箭头的滥用,不允许无规律地使流程随意转向。限制箭头的滥用,不允许无规律地使流程随意转向。结构化程序设计方法结构化程序设计方法结构化的程序设计方法结构化的程序设计方法结构化的程序设计方法强调程序设计风格和程序结构的结构化的程序设计方法强调程序设计风格和程序结构的规范化,提倡清晰的结构。规范化,提倡清晰的结构。基本思路:基本思路: 把一个复杂问题的求解过程分阶段进行,每个阶段把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。处理的问题都控制在人们容易理解和处理的范围内。方法:方法:1 1)自顶向下;)自顶向下;2 2)逐步细化;)逐步细化;3 3)模块化设计;)模块化设计;4 4)结构化编码。)结构化编码。示例:工作报告示例:工作报告工作报告单位情况前一阶段工作情况当前遇到的问题今后打算第一点第二点第三点顶层设计第二层设计第三层设计结构化程序设计的优点结构化程序设计的优点n n考虑问题周到,结构清晰,层次分明,容易读写。n n这种设计方法的过程使将问题求解由抽象逐步具体化的过程。n n便于验证算法的正确性,在向下一层展开之前应仔细检查本层设计是否正确,只有上一层正确才能向下细化。n n该方法使用来解决人脑思维能力的局限性和被处理问题的复杂性之间的矛盾。练习练习

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

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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