《第1章算法与C语言概述课件.ppt》由会员分享,可在线阅读,更多相关《第1章算法与C语言概述课件.ppt(55页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1第第1章章 算法与算法与C语言概述语言概述程序设计的基本概念程序设计的基本概念算法算法C语言概述语言概述 211 程序设计的基本概念程序设计的基本概念 程序设计的基本步骤与程序设计语言程序设计的基本步骤与程序设计语言程序设计方法程序设计方法 111 程序设计的基本步骤与程序设计语言程序设计的基本步骤与程序设计语言1 1程序与计算机程序程序与计算机程序程序与计算机程序程序与计算机程序程序程序程序程序就是对一系列操作过程的描述。就是对一系列操作过程的描述。就是对一系列操作过程的描述。就是对一系列操作过程的描述。例例例例1 11 1 求解一元二次方程。求解一元二次方程。求解一元二次方程。求解一元二
2、次方程。步骤步骤步骤步骤1 1:为计算机提供一元二次方程的三个系数;:为计算机提供一元二次方程的三个系数;:为计算机提供一元二次方程的三个系数;:为计算机提供一元二次方程的三个系数;步骤步骤步骤步骤2 2:用数学公式计算方程的第一个解;:用数学公式计算方程的第一个解;:用数学公式计算方程的第一个解;:用数学公式计算方程的第一个解;步骤步骤步骤步骤3 3:用数学公式计算方程的第二个解;:用数学公式计算方程的第二个解;:用数学公式计算方程的第二个解;:用数学公式计算方程的第二个解;步骤步骤步骤步骤4 4:输出方程的两个解;:输出方程的两个解;:输出方程的两个解;:输出方程的两个解;步骤步骤步骤步骤
3、5 5:程序结束。:程序结束。:程序结束。:程序结束。为求解一个计算任务,我们会告诉计算机按照特定操作顺序完成一为求解一个计算任务,我们会告诉计算机按照特定操作顺序完成一为求解一个计算任务,我们会告诉计算机按照特定操作顺序完成一为求解一个计算任务,我们会告诉计算机按照特定操作顺序完成一系列的指令,这一系列指令的集合就是系列的指令,这一系列指令的集合就是系列的指令,这一系列指令的集合就是系列的指令,这一系列指令的集合就是计算机程序计算机程序计算机程序计算机程序。111 程序设计的基本步骤与程序设计语言程序设计的基本步骤与程序设计语言2 2程序设计的基本步骤程序设计的基本步骤程序设计的基本步骤程序
4、设计的基本步骤分析问题分析问题分析问题分析问题设计算法设计算法设计算法设计算法编写程序编写程序编写程序编写程序运行程序运行程序运行程序运行程序分析结果分析结果分析结果分析结果编写文档编写文档编写文档编写文档 111程序设计的基本步骤与程序设计语言程序设计的基本步骤与程序设计语言3 3程序设计语言程序设计语言程序设计语言程序设计语言(1 1)第一代)第一代)第一代)第一代机器语言机器语言机器语言机器语言机器语言就是由二进制机器语言就是由二进制机器语言就是由二进制机器语言就是由二进制 0 0、1 1 代码形式构成的指令。代码形式构成的指令。代码形式构成的指令。代码形式构成的指令。不同的计算机系统具
5、有不同的指令系统。不同的计算机系统具有不同的指令系统。不同的计算机系统具有不同的指令系统。不同的计算机系统具有不同的指令系统。如如如如PCPC机中,表示相加运算的指令代码就是机中,表示相加运算的指令代码就是机中,表示相加运算的指令代码就是机中,表示相加运算的指令代码就是0100101001。111程序设计的基本步骤与程序设计语言程序设计的基本步骤与程序设计语言3 3程序设计语言程序设计语言程序设计语言程序设计语言(2 2)第二代)第二代)第二代)第二代汇编语言汇编语言汇编语言汇编语言汇编语言中的语句就是机器指令的符号化形式。汇编语言中的语句就是机器指令的符号化形式。汇编语言中的语句就是机器指令
6、的符号化形式。汇编语言中的语句就是机器指令的符号化形式。即用十进制数据和英文缩写词来取代二进制形式的机器指令。即用十进制数据和英文缩写词来取代二进制形式的机器指令。即用十进制数据和英文缩写词来取代二进制形式的机器指令。即用十进制数据和英文缩写词来取代二进制形式的机器指令。例如:例如:例如:例如:指令代码指令代码指令代码指令代码0100101001可改写成可改写成可改写成可改写成ADDADD二进制数据二进制数据二进制数据二进制数据10011001可改写成可改写成可改写成可改写成9 9计算机不能直接识别汇编语言中的语句,需要翻译成二进制形式的机器指令。计算机不能直接识别汇编语言中的语句,需要翻译成
7、二进制形式的机器指令。计算机不能直接识别汇编语言中的语句,需要翻译成二进制形式的机器指令。计算机不能直接识别汇编语言中的语句,需要翻译成二进制形式的机器指令。这种翻译一般称为这种翻译一般称为这种翻译一般称为这种翻译一般称为“汇编汇编汇编汇编”,所用软件称为,所用软件称为,所用软件称为,所用软件称为“汇编程序汇编程序汇编程序汇编程序”。111程序设计的基本步骤与程序设计语言程序设计的基本步骤与程序设计语言3程序设计语言程序设计语言(3)第三代)第三代高级语言高级语言高级语言是面向用户的、独立于计算机硬件的编程语言。高级语言是面向用户的、独立于计算机硬件的编程语言。计算机不能直接识别高级语言中的语
8、句,需要翻译成二进制形式的机器指令。计算机不能直接识别高级语言中的语句,需要翻译成二进制形式的机器指令。这种翻译一般分为称为这种翻译一般分为称为“编译编译”和和“解释解释”两种方式。两种方式。所用软件称为所用软件称为“编译程序编译程序”和和“解释程序解释程序”,如图所示。,如图所示。111程序设计的基本步骤与程序设计语言程序设计的基本步骤与程序设计语言3程序设计语言程序设计语言(4)第四代)第四代非过程化语言非过程化语言使用非过程化语言编程时只需告诉计算机使用非过程化语言编程时只需告诉计算机“做什么做什么”而不是而不是“怎样怎样做做”即不需要描述算法实现的细节即不需要描述算法实现的细节 112
9、程序设计方法程序设计方法1 1结构化程序设计方法结构化程序设计方法结构化程序设计方法结构化程序设计方法(1 1)结构化程序设计原则)结构化程序设计原则)结构化程序设计原则)结构化程序设计原则自顶向下自顶向下自顶向下自顶向下逐步细化逐步细化逐步细化逐步细化模块化模块化模块化模块化限制使用限制使用限制使用限制使用gotogoto语句语句语句语句(2 2)三种基本结构)三种基本结构)三种基本结构)三种基本结构顺序结构顺序结构顺序结构顺序结构选择结构选择结构选择结构选择结构循环结构循环结构循环结构循环结构顺序结构顺序结构顺序结构顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的。表示程序中的各操
10、作是按照它们出现的先后顺序执行的。表示程序中的各操作是按照它们出现的先后顺序执行的。表示程序中的各操作是按照它们出现的先后顺序执行的。112程序设计方法程序设计方法1 1结构化程序设计方法结构化程序设计方法结构化程序设计方法结构化程序设计方法选择结构选择结构选择结构选择结构对于要先做判断后进行选择的问题就要使用选择结构。对于要先做判断后进行选择的问题就要使用选择结构。对于要先做判断后进行选择的问题就要使用选择结构。对于要先做判断后进行选择的问题就要使用选择结构。选择结构分为三种形式:选择结构分为三种形式:选择结构分为三种形式:选择结构分为三种形式:单分支选择单分支选择单分支选择单分支选择双分支
11、选择双分支选择双分支选择双分支选择多选择分支多选择分支多选择分支多选择分支 112程序设计方法程序设计方法1 1结构化程序设计方法结构化程序设计方法结构化程序设计方法结构化程序设计方法循环结构分为两种形式:循环结构分为两种形式:循环结构分为两种形式:循环结构分为两种形式:当型循环当型循环当型循环当型循环 直到型循环直到型循环直到型循环直到型循环当型循环当型循环当型循环当型循环 表示先进行条件判断,当满足给定的条件后才执行循环体,并且在循环终表示先进行条件判断,当满足给定的条件后才执行循环体,并且在循环终表示先进行条件判断,当满足给定的条件后才执行循环体,并且在循环终表示先进行条件判断,当满足给
12、定的条件后才执行循环体,并且在循环终端处流程自动返回到循环入口处;如果条件不满足,则退出循环体直接到端处流程自动返回到循环入口处;如果条件不满足,则退出循环体直接到端处流程自动返回到循环入口处;如果条件不满足,则退出循环体直接到端处流程自动返回到循环入口处;如果条件不满足,则退出循环体直接到达循环出口处。达循环出口处。达循环出口处。达循环出口处。直到型循环直到型循环直到型循环直到型循环 表示从循环入口处直接执行循环体,在循环终端处判断条件。如果条件不表示从循环入口处直接执行循环体,在循环终端处判断条件。如果条件不表示从循环入口处直接执行循环体,在循环终端处判断条件。如果条件不表示从循环入口处直
13、接执行循环体,在循环终端处判断条件。如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达循环满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达循环满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达循环满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达循环出口处,是先执行循环后进行条件判断。出口处,是先执行循环后进行条件判断。出口处,是先执行循环后进行条件判断。出口处,是先执行循环后进行条件判断。112程序设计方法程序设计方法1 1结构化程序设计方法结构化程序设计方法结构化程序设计方法结构化程序设计方法(3 3)结构化程序特点)结构化程序特点)结构
14、化程序特点)结构化程序特点结构内不存在死循环结构内不存在死循环结构内不存在死循环结构内不存在死循环每种结构都有且仅有一个入口每种结构都有且仅有一个入口每种结构都有且仅有一个入口每种结构都有且仅有一个入口每种结构都有且仅有一个出口每种结构都有且仅有一个出口每种结构都有且仅有一个出口每种结构都有且仅有一个出口 结构内的每一部分都有机会被执行到结构内的每一部分都有机会被执行到结构内的每一部分都有机会被执行到结构内的每一部分都有机会被执行到2 2面向对象程序设计方法面向对象程序设计方法面向对象程序设计方法面向对象程序设计方法例例例例1 12 2 从键盘输入数据从键盘输入数据从键盘输入数据从键盘输入数据
15、n n,计算其对应的平方根。,计算其对应的平方根。,计算其对应的平方根。,计算其对应的平方根。intint n;n;float result;float result;scanf(%d,&nscanf(%d,&n)result=result=sqrt(nsqrt(n););printf(%d,resultprintf(%d,result););112程序设计方法程序设计方法2 2面向对象程序设计方法面向对象程序设计方法面向对象程序设计方法面向对象程序设计方法(1 1)对象)对象)对象)对象在现实世界中,对象就是我们认识世界的基本单元。在现实世界中,对象就是我们认识世界的基本单元。在现实世界中,
16、对象就是我们认识世界的基本单元。在现实世界中,对象就是我们认识世界的基本单元。它可以是人,也可以是物,还可以是一件事。它可以是人,也可以是物,还可以是一件事。它可以是人,也可以是物,还可以是一件事。它可以是人,也可以是物,还可以是一件事。对象作为现实世界中的一个实体,主要特性如下:对象作为现实世界中的一个实体,主要特性如下:对象作为现实世界中的一个实体,主要特性如下:对象作为现实世界中的一个实体,主要特性如下:每一个对象必须有一个标记名称以便区别于其它对象。每一个对象必须有一个标记名称以便区别于其它对象。每一个对象必须有一个标记名称以便区别于其它对象。每一个对象必须有一个标记名称以便区别于其它
17、对象。用状态或属性可以描述对象具有的特征。用状态或属性可以描述对象具有的特征。用状态或属性可以描述对象具有的特征。用状态或属性可以描述对象具有的特征。对象含有一组操作,每个操作都决定对象的一种行为。对象含有一组操作,每个操作都决定对象的一种行为。对象含有一组操作,每个操作都决定对象的一种行为。对象含有一组操作,每个操作都决定对象的一种行为。对象操作与对象属性是不可分离的。对象操作与对象属性是不可分离的。对象操作与对象属性是不可分离的。对象操作与对象属性是不可分离的。(2 2)类)类)类)类 就是对一组具有共同的属性特征和行为特征的对象所进行的抽象,类和对就是对一组具有共同的属性特征和行为特征的
18、对象所进行的抽象,类和对就是对一组具有共同的属性特征和行为特征的对象所进行的抽象,类和对就是对一组具有共同的属性特征和行为特征的对象所进行的抽象,类和对象之间的关系是抽象和具体的关系。象之间的关系是抽象和具体的关系。象之间的关系是抽象和具体的关系。象之间的关系是抽象和具体的关系。112程序设计方法程序设计方法1 1结构化程序设计方法结构化程序设计方法结构化程序设计方法结构化程序设计方法(1 1)结构化程序设计原则)结构化程序设计原则)结构化程序设计原则)结构化程序设计原则自顶向下自顶向下自顶向下自顶向下逐步细化逐步细化逐步细化逐步细化模块化模块化模块化模块化限制使用限制使用限制使用限制使用go
19、togoto语句语句语句语句(2 2)三种基本结构)三种基本结构)三种基本结构)三种基本结构顺序结构顺序结构顺序结构顺序结构选择结构选择结构选择结构选择结构循环结构循环结构循环结构循环结构顺序结构顺序结构顺序结构顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的。表示程序中的各操作是按照它们出现的先后顺序执行的。表示程序中的各操作是按照它们出现的先后顺序执行的。表示程序中的各操作是按照它们出现的先后顺序执行的。112程序设计方法程序设计方法2 2面向对象程序设计方法面向对象程序设计方法面向对象程序设计方法面向对象程序设计方法表表表表1 11 1学生类中的一个对象实例学生类中的一个对象实例
20、学生类中的一个对象实例学生类中的一个对象实例对象状态:对象的状态是全部静态属性的动态值集合。对象状态:对象的状态是全部静态属性的动态值集合。对象状态:对象的状态是全部静态属性的动态值集合。对象状态:对象的状态是全部静态属性的动态值集合。112程序设计方法程序设计方法2 2面向对象程序设计方法面向对象程序设计方法面向对象程序设计方法面向对象程序设计方法(4 4)对象特征)对象特征)对象特征)对象特征模块性模块性模块性模块性继承性继承性继承性继承性动态链接动态链接动态链接动态链接易维护性易维护性易维护性易维护性封装性封装性封装性封装性 1712算法算法1 12 21 1算法的概述算法的概述1 12
21、 22 2算法的表示算法的表示1 12 23 3常用算法的简介常用算法的简介人类求解问题的两种方式:人类求解问题的两种方式:人类求解问题的两种方式:人类求解问题的两种方式:推理方式推理方式算法方式算法方式121算法的概述算法的概述算法:算法:算法:算法:一个有穷规则的集合,其规则规定一个解决某一特定类型问题的操作序列。一个有穷规则的集合,其规则规定一个解决某一特定类型问题的操作序列。一个有穷规则的集合,其规则规定一个解决某一特定类型问题的操作序列。一个有穷规则的集合,其规则规定一个解决某一特定类型问题的操作序列。算法特征:算法特征:算法特征:算法特征:有穷性有穷性有穷性有穷性确定性确定性确定性
22、确定性输入项输入项输入项输入项输出项输出项输出项输出项有效性有效性有效性有效性 122算法的表示算法的表示1 1使用自然语言描述算法使用自然语言描述算法使用自然语言描述算法使用自然语言描述算法例例例例1 14 4使用自然语言描述:使用自然语言描述:使用自然语言描述:使用自然语言描述:1 12 23 39999100100。求解方法求解方法求解方法求解方法:使用循环结构来表示:使用循环结构来表示:使用循环结构来表示:使用循环结构来表示100100次相加运算。其中,使用两个次相加运算。其中,使用两个次相加运算。其中,使用两个次相加运算。其中,使用两个变量变量变量变量sumsum和和和和n n,变量
23、,变量,变量,变量sumsum表示累和变量,初始值为表示累和变量,初始值为表示累和变量,初始值为表示累和变量,初始值为0 0,每次加一个,每次加一个,每次加一个,每次加一个“加数加数加数加数”;变量;变量;变量;变量n n表示表示表示表示“加数加数加数加数”,初始值为,初始值为,初始值为,初始值为1 1,取值范围是,取值范围是,取值范围是,取值范围是1 1至至至至101101,为,为,为,为累和变量累和变量累和变量累和变量sumsum准备数据,而变量准备数据,而变量准备数据,而变量准备数据,而变量n n的值为的值为的值为的值为101101时退出循环。时退出循环。时退出循环。时退出循环。步骤步骤
24、步骤步骤1 1:假设:假设:假设:假设sumsum的初值为的初值为的初值为的初值为0 0;步骤步骤步骤步骤2 2:假设:假设:假设:假设n n的初值为的初值为的初值为的初值为1 1;步骤步骤步骤步骤3 3:如果:如果:如果:如果n100n100时,则执行步骤时,则执行步骤时,则执行步骤时,则执行步骤4 4,否则转出执行步骤,否则转出执行步骤,否则转出执行步骤,否则转出执行步骤7 7;步骤步骤步骤步骤4 4:计算:计算:计算:计算sumsum加加加加i i的值后,重新赋值给的值后,重新赋值给的值后,重新赋值给的值后,重新赋值给sumsum;步骤步骤步骤步骤5 5:计算:计算:计算:计算n n加加
25、加加1 1的值后,重新赋值给的值后,重新赋值给的值后,重新赋值给的值后,重新赋值给n n;步骤步骤步骤步骤6 6:转去执行步骤:转去执行步骤:转去执行步骤:转去执行步骤3 3;步骤步骤步骤步骤7 7:输出:输出:输出:输出sum sum 的值;的值;的值;的值;步骤步骤步骤步骤8 8:算法结束。:算法结束。:算法结束。:算法结束。122算法的表示算法的表示2 2使用传统流程图描述算法使用传统流程图描述算法使用传统流程图描述算法使用传统流程图描述算法圆角矩形表示算法的圆角矩形表示算法的圆角矩形表示算法的圆角矩形表示算法的“开始开始开始开始”和和和和“结束结束结束结束”;平行四边形表示输入操作和输
26、出操作。平行四边形表示输入操作和输出操作。平行四边形表示输入操作和输出操作。平行四边形表示输入操作和输出操作。菱形表示表示条件判断;菱形表示表示条件判断;菱形表示表示条件判断;菱形表示表示条件判断;直角矩形表示算法中的具体操作;直角矩形表示算法中的具体操作;直角矩形表示算法中的具体操作;直角矩形表示算法中的具体操作;箭头表示算法的操作流程;箭头表示算法的操作流程;箭头表示算法的操作流程;箭头表示算法的操作流程;圆圈表示连接其它流程图符号,具有汇合的功能。圆圈表示连接其它流程图符号,具有汇合的功能。圆圈表示连接其它流程图符号,具有汇合的功能。圆圈表示连接其它流程图符号,具有汇合的功能。122算法
27、的表示算法的表示2 2使用传统流程图描述算法使用传统流程图描述算法使用传统流程图描述算法使用传统流程图描述算法传统流程图有如下三类共传统流程图有如下三类共传统流程图有如下三类共传统流程图有如下三类共5 5种。种。种。种。顺序结构如图顺序结构如图顺序结构如图顺序结构如图1-41-4所示。所示。所示。所示。选择结构如图选择结构如图选择结构如图选择结构如图1-51-5所示。所示。所示。所示。122算法的表示算法的表示2 2使用传统流程图描述算法使用传统流程图描述算法使用传统流程图描述算法使用传统流程图描述算法循环结构如图循环结构如图循环结构如图循环结构如图1-61-6所示。所示。所示。所示。122算
28、法的表示算法的表示2 2使用传统流程图描述算法使用传统流程图描述算法使用传统流程图描述算法使用传统流程图描述算法传统流程图的主要优点:传统流程图的主要优点:传统流程图的主要优点:传统流程图的主要优点:形象直观,各种操作容易理解,也不会产生二义或歧义性形象直观,各种操作容易理解,也不会产生二义或歧义性形象直观,各种操作容易理解,也不会产生二义或歧义性形象直观,各种操作容易理解,也不会产生二义或歧义性算法出错时容易发现并修改。算法出错时容易发现并修改。算法出错时容易发现并修改。算法出错时容易发现并修改。传统流程图的主要缺点:传统流程图的主要缺点:传统流程图的主要缺点:传统流程图的主要缺点:所占篇幅
29、较大且不易绘制,由于使用流程线导致算法过于灵活,不受阻挠所占篇幅较大且不易绘制,由于使用流程线导致算法过于灵活,不受阻挠所占篇幅较大且不易绘制,由于使用流程线导致算法过于灵活,不受阻挠所占篇幅较大且不易绘制,由于使用流程线导致算法过于灵活,不受阻挠限制,常使流程转向混乱,最终造成程序的阅读和修改困难,更不利于结限制,常使流程转向混乱,最终造成程序的阅读和修改困难,更不利于结限制,常使流程转向混乱,最终造成程序的阅读和修改困难,更不利于结限制,常使流程转向混乱,最终造成程序的阅读和修改困难,更不利于结构化程序的具体实现。构化程序的具体实现。构化程序的具体实现。构化程序的具体实现。122算法的表示
30、算法的表示2 2使用传统流程图描述算法使用传统流程图描述算法使用传统流程图描述算法使用传统流程图描述算法例例例例1 15 5使用传统流程图描述:使用传统流程图描述:使用传统流程图描述:使用传统流程图描述:1 12 23 39999100100。122算法的表示算法的表示3 3使用使用使用使用NSNS流程图描述算法流程图描述算法流程图描述算法流程图描述算法顺序结构如图顺序结构如图顺序结构如图顺序结构如图1-81-8所示。所示。所示。所示。选择结构如图选择结构如图选择结构如图选择结构如图1-91-9所示。所示。所示。所示。122算法的表示算法的表示3 3使用使用使用使用NSNS流程图描述算法流程图
31、描述算法流程图描述算法流程图描述算法循环结构如图循环结构如图循环结构如图循环结构如图1-101-10所示。所示。所示。所示。122算法的表示算法的表示3 3使用使用使用使用NSNS流程图描述算法流程图描述算法流程图描述算法流程图描述算法NSNS流程图的主要优点:流程图的主要优点:流程图的主要优点:流程图的主要优点:简单且易学易用,具有较好的可读度,尤其适合描述循环和条件结构的算简单且易学易用,具有较好的可读度,尤其适合描述循环和条件结构的算简单且易学易用,具有较好的可读度,尤其适合描述循环和条件结构的算简单且易学易用,具有较好的可读度,尤其适合描述循环和条件结构的算法。另外,法。另外,法。另外
32、,法。另外,NSNS流程图的设计意图易理解,从而为编程、查错、选择测试用流程图的设计意图易理解,从而为编程、查错、选择测试用流程图的设计意图易理解,从而为编程、查错、选择测试用流程图的设计意图易理解,从而为编程、查错、选择测试用例、软件维护等提供方便。例、软件维护等提供方便。例、软件维护等提供方便。例、软件维护等提供方便。NSNS流程图的主要缺点:流程图的主要缺点:流程图的主要缺点:流程图的主要缺点:不容易进行手工修改,在嵌套过多时不容易绘制。不容易进行手工修改,在嵌套过多时不容易绘制。不容易进行手工修改,在嵌套过多时不容易绘制。不容易进行手工修改,在嵌套过多时不容易绘制。例例例例1 16 6
33、使用使用使用使用NSNS流程图描述:流程图描述:流程图描述:流程图描述:1 12 23 39999100100。122算法的表示算法的表示4 4使用伪代码描述算法使用伪代码描述算法使用伪代码描述算法使用伪代码描述算法例例例例1 17 7使用伪代码描述累和算法:使用伪代码描述累和算法:使用伪代码描述累和算法:使用伪代码描述累和算法:1 12 23 39999100100。算法描述如下:算法描述如下:算法描述如下:算法描述如下:beginbeginsum=0sum=0n=1n=1while(n=100)while(n=100)sum=sum=sum+nsum+n n=n+1 n=n+1 print
34、 sumprint sumend end 122算法的表示算法的表示3 3使用使用使用使用NSNS流程图描述算法流程图描述算法流程图描述算法流程图描述算法例例例例1 18 8两个变量内容的交换两个变量内容的交换两个变量内容的交换两个变量内容的交换.。求解方法求解方法求解方法求解方法:使用三个变量:使用三个变量:使用三个变量:使用三个变量a a,b b,t t,其中变量,其中变量,其中变量,其中变量a a和和和和b b的值由键盘输入,的值由键盘输入,的值由键盘输入,的值由键盘输入,变量变量变量变量t t作为暂存单元,通过三次赋值操作完成交换。作为暂存单元,通过三次赋值操作完成交换。作为暂存单元,
35、通过三次赋值操作完成交换。作为暂存单元,通过三次赋值操作完成交换。画出画出画出画出NSNS流程图:流程图:流程图:流程图:122算法的表示算法的表示3 3使用使用使用使用NSNS流程图描述算法流程图描述算法流程图描述算法流程图描述算法例例例例1 19 9取绝对值。取绝对值。取绝对值。取绝对值。求解方法求解方法求解方法求解方法:使用一个变量:使用一个变量:使用一个变量:使用一个变量n n,并选择结构来进行判断。若变量,并选择结构来进行判断。若变量,并选择结构来进行判断。若变量,并选择结构来进行判断。若变量n n的的的的值大于值大于值大于值大于0 0,则输出,则输出,则输出,则输出n n的值,否则
36、输出的值,否则输出的值,否则输出的值,否则输出n n的值。的值。的值。的值。画出画出画出画出NSNS流程图:流程图:流程图:流程图:122算法的表示算法的表示3 3使用使用使用使用NSNS流程图描述算法流程图描述算法流程图描述算法流程图描述算法例例例例1 11010计算计算计算计算10!10!。求解方法求解方法求解方法求解方法:使用循环结构来表示:使用循环结构来表示:使用循环结构来表示:使用循环结构来表示1010次相乗运算。其中,使用两个变次相乗运算。其中,使用两个变次相乗运算。其中,使用两个变次相乗运算。其中,使用两个变量量量量f f和和和和n n,变量,变量,变量,变量f f表示累乗变量,
37、初始值为表示累乗变量,初始值为表示累乗变量,初始值为表示累乗变量,初始值为1 1,每次乗一个,每次乗一个,每次乗一个,每次乗一个“乗数乗数乗数乗数”;变量变量变量变量n n表示表示表示表示“乗数乗数乗数乗数”,初始值为,初始值为,初始值为,初始值为1 1,取值范围是,取值范围是,取值范围是,取值范围是1 1至至至至1111,为累乗变量,为累乗变量,为累乗变量,为累乗变量f f准备数据,而变量准备数据,而变量准备数据,而变量准备数据,而变量n n的值为的值为的值为的值为1111时退出循环。时退出循环。时退出循环。时退出循环。画出画出画出画出NSNS流程图:流程图:流程图:流程图:122算法的表示
38、算法的表示3 3使用使用使用使用NSNS流程图描述算法流程图描述算法流程图描述算法流程图描述算法例例例例1 11111求裴波纳契数列中的前求裴波纳契数列中的前求裴波纳契数列中的前求裴波纳契数列中的前1010个数据。个数据。个数据。个数据。斐波那契数列是指:斐波那契数列是指:斐波那契数列是指:斐波那契数列是指:0 0、1 1、1 1、2 2、3 3、5 5、8 8、1313、2121、3434,数学定,数学定,数学定,数学定义如下:义如下:义如下:义如下:F F(0 0)0 0F F(1 1)1 1F F(n n)F F(n-1n-1)F F(n n2 2)()()()(n2n2)求解方法求解方
39、法求解方法求解方法:使用循环结构和迭代算法。其中,循环控制变量:使用循环结构和迭代算法。其中,循环控制变量:使用循环结构和迭代算法。其中,循环控制变量:使用循环结构和迭代算法。其中,循环控制变量k k从从从从2 2至至至至1010取值,在取值为取值,在取值为取值,在取值为取值,在取值为2 2至至至至9 9时求裴波纳契数,取值为时求裴波纳契数,取值为时求裴波纳契数,取值为时求裴波纳契数,取值为1010时结束循环;另时结束循环;另时结束循环;另时结束循环;另外三个变量为外三个变量为外三个变量为外三个变量为f1f1,f2f2,f f,其中,其中,其中,其中f1f1的初始值为的初始值为的初始值为的初始
40、值为0 0,f2f2的初始值为的初始值为的初始值为的初始值为1 1,f f的的的的值是值是值是值是f1f1和和和和f2f2的和,迭代过程如下:的和,迭代过程如下:的和,迭代过程如下:的和,迭代过程如下:f=f1+f2f=f1+f2,f1=f2f1=f2,f2=f f2=f 122算法的表示算法的表示3 3使用使用使用使用NSNS流程图描述算法流程图描述算法流程图描述算法流程图描述算法例例例例1 11111求裴波纳契数列中的前求裴波纳契数列中的前求裴波纳契数列中的前求裴波纳契数列中的前1010个数据。个数据。个数据。个数据。画出画出画出画出NSNS流程图:流程图:流程图:流程图:122算法的表示
41、算法的表示3 3使用使用使用使用NSNS流程图描述算法流程图描述算法流程图描述算法流程图描述算法例例例例1 11212求两个正整数的最大公约数。求两个正整数的最大公约数。求两个正整数的最大公约数。求两个正整数的最大公约数。求解方法求解方法求解方法求解方法:最大公约数就是两个正整数共有约数中最大的一个,下:最大公约数就是两个正整数共有约数中最大的一个,下:最大公约数就是两个正整数共有约数中最大的一个,下:最大公约数就是两个正整数共有约数中最大的一个,下面介绍欧几里德算法(又称为辗转相除法),其主要操作如下:面介绍欧几里德算法(又称为辗转相除法),其主要操作如下:面介绍欧几里德算法(又称为辗转相除
42、法),其主要操作如下:面介绍欧几里德算法(又称为辗转相除法),其主要操作如下:步骤步骤步骤步骤1 1:输入两个正整数,并放入变量:输入两个正整数,并放入变量:输入两个正整数,并放入变量:输入两个正整数,并放入变量mm和和和和n n中;中;中;中;步骤步骤步骤步骤2 2:求出:求出:求出:求出mm除以除以除以除以n n的余数放入变量的余数放入变量的余数放入变量的余数放入变量r r中;中;中;中;步骤步骤步骤步骤3 3:如果:如果:如果:如果r r为为为为0 0,则执行步骤,则执行步骤,则执行步骤,则执行步骤7 7,否则执行步骤,否则执行步骤,否则执行步骤,否则执行步骤4 4;步骤步骤步骤步骤4
43、4:操作:操作:操作:操作m=nm=n,n=rn=r;步骤步骤步骤步骤5 5:求出:求出:求出:求出mm除以除以除以除以n n的余数放入变量的余数放入变量的余数放入变量的余数放入变量r r中;中;中;中;步骤步骤步骤步骤6 6:执行步骤:执行步骤:执行步骤:执行步骤3 3;步骤步骤步骤步骤7 7:n n就是所求的结果,输出结果。就是所求的结果,输出结果。就是所求的结果,输出结果。就是所求的结果,输出结果。122算法的表示算法的表示3 3使用使用使用使用NSNS流程图描述算法流程图描述算法流程图描述算法流程图描述算法例例例例1 11212求两个正整数的最大公约数。求两个正整数的最大公约数。求两个
44、正整数的最大公约数。求两个正整数的最大公约数。画出画出画出画出NSNS流程图:流程图:流程图:流程图:122算法的表示算法的表示例例例例1 11313判断素数。判断素数。判断素数。判断素数。素数素数素数素数是一个大于是一个大于是一个大于是一个大于1 1的自然数,除了的自然数,除了的自然数,除了的自然数,除了1 1和它本身外,不能被其他自然数和它本身外,不能被其他自然数和它本身外,不能被其他自然数和它本身外,不能被其他自然数整除,换言之就是素数除了整除,换言之就是素数除了整除,换言之就是素数除了整除,换言之就是素数除了1 1和它本身以外不再有其他的因数。和它本身以外不再有其他的因数。和它本身以外
45、不再有其他的因数。和它本身以外不再有其他的因数。求解方法求解方法求解方法求解方法:由键盘输入一个大于:由键盘输入一个大于:由键盘输入一个大于:由键盘输入一个大于1 1的自然数的自然数的自然数的自然数n,n,,使用一个变量,使用一个变量,使用一个变量,使用一个变量k k,其,其,其,其取值范围从取值范围从取值范围从取值范围从2 2至至至至n n1 1,用循环结构来判断所有的,用循环结构来判断所有的,用循环结构来判断所有的,用循环结构来判断所有的k k值是否是值是否是值是否是值是否是n n的因数。的因数。的因数。的因数。若有因数,则输出不是素数的信息,并结束算法;若没有因数,则若有因数,则输出不是
46、素数的信息,并结束算法;若没有因数,则若有因数,则输出不是素数的信息,并结束算法;若没有因数,则若有因数,则输出不是素数的信息,并结束算法;若没有因数,则输出是素数的信息。输出是素数的信息。输出是素数的信息。输出是素数的信息。122算法的表示算法的表示例例例例1 11313判断素数。判断素数。判断素数。判断素数。画出画出画出画出NSNS流程图:流程图:流程图:流程图:3813C语言概述语言概述1 13 31C1C语言的发展及特点语言的发展及特点1 13 32C2C语言程序的构成及程序的书写格式语言程序的构成及程序的书写格式1 12 23 3程序调试步骤程序调试步骤1 13 34 4用用VCVC
47、系统实现系统实现C C程序的操作过程程序的操作过程 131C语言的发展及特点语言的发展及特点1 1C C语言的发展过程语言的发展过程语言的发展过程语言的发展过程表表表表1 12 C2 C语言标准语言标准语言标准语言标准131C语言的发展及特点语言的发展及特点2 2C C语言的主要特点语言的主要特点语言的主要特点语言的主要特点简洁紧凑、灵活方便简洁紧凑、灵活方便简洁紧凑、灵活方便简洁紧凑、灵活方便运算符丰富运算符丰富运算符丰富运算符丰富数据类型丰富数据类型丰富数据类型丰富数据类型丰富运算表达方式多样运算表达方式多样运算表达方式多样运算表达方式多样允许访问物理地址并控制硬件允许访问物理地址并控制硬
48、件允许访问物理地址并控制硬件允许访问物理地址并控制硬件目标代码质量高目标代码质量高目标代码质量高目标代码质量高可移植性好可移植性好可移植性好可移植性好表达力强表达力强表达力强表达力强 132C语言程序的构成及程序书写格式语言程序的构成及程序书写格式1 1C C语言程序示例语言程序示例语言程序示例语言程序示例例例例例1 11414求解一个一元二次方程。求解一个一元二次方程。求解一个一元二次方程。求解一个一元二次方程。#include#include#include#include intint main()main()float float a,b,ca,b,c;float x1,x2;floa
49、t x1,x2;scanf(%f,%f,%f,&a,&b,&cscanf(%f,%f,%f,&a,&b,&c););x1=(-x1=(-b-sqrt(bb-sqrt(b*b-4*a*c)/2/a;*b-4*a*c)/2/a;x2=(-x2=(-b+sqrt(bb+sqrt(b*b-4*a*c)/2/a;*b-4*a*c)/2/a;printf(x1=%fn,x1);printf(x1=%fn,x1);printf(x2=%fn,x2);printf(x2=%fn,x2);return 0;return 0;132C语言程序的构成及程序书写格式语言程序的构成及程序书写格式例例例例1 11515编
50、写函数计算编写函数计算编写函数计算编写函数计算1 12 23 39999100100。#include#include intint main()main()intint s(ints(int m);intm);int m=100;m=100;printf(sumprintf(sum=%=%dn,s(mdn,s(m););return 0;return 0;intint s(ints(int m)m)intint sum=0;sum=0;intint n=1;n=1;while(n=m)while(n=m)sum=sum=sum+nsum+n;n=n+1;n=n+1;return sum;re