C程序设计.

Slides:



Advertisements
Similar presentations
第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
Advertisements

2.5 函数的微分 一、问题的提出 二、微分的定义 三、可微的条件 四、微分的几何意义 五、微分的求法 六、小结.
数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
2 、 5 的倍数特征 集合 2 的倍数(要求) 在百数表上依次将 2 的倍数找出 并用红色的彩笔涂上颜色。
10.2.switch语句.
第一章 C语言概述.
C语言程序设计 主讲教师 :贾月乐 电话:
18.2一元二次方程的解法 (公式法).
二级C语言程序设计及同步训练 涂玉芬 主编 中国水利水电出版社.
第3章 简单算法设计 3.1 结构化程序的算法设计 3.2 结构化算法的性质及结构 3.3 结构化算法的描述方法 自然语言 流程图 伪码
第一章 行列式 第五节 Cramer定理 设含有n 个未知量的n个方程构成的线性方程组为 (Ⅰ) 由未知数的系数组成的n阶行列式
一、原函数与不定积分 二、不定积分的几何意义 三、基本积分公式及积分法则 四、牛顿—莱布尼兹公式 五、小结
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
C语言实验 第一课 标题:学号+姓名.
数学建模与MATLAB 第五讲:循环结构(1) 2017/9/12.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
第一章 如何用计算机解决问题 第二节 算法描述与设计.
《计算机应用基础》 第9章 程序设计基础(一).
走进编程 程序的顺序结构(二).
辅导课程六.
第2讲 绪论(二).
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
算法的基本概念.
§2 求导法则 2.1 求导数的四则运算法则 下面分三部分加以证明, 并同时给出相应的推论和例题 .
第二章 程序的灵魂--算法.
第2章 算法—程序的灵魂.
第二章 Java语言基础.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
若2002年我国国民生产总值为 亿元,如果 ,那么经过多少年国民生产总值 每年平均增长 是2002年时的2倍? 解:设经过 年国民生产总值为2002年时的2倍, 根据题意有 , 即.
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
第一章 函数与极限.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
数列.
C语言程序设计 主讲教师:陆幼利.
6.4不等式的解法举例(1) 2019年4月17日星期三.
C语言程序设计 第二章 程序的灵魂 -- 算法.
VisComposer 2019/4/17.
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
VB与Access数据库的连接.
姚金宇 MIT SCHEME 使用说明 姚金宇
算法初步 §1.1.2 程序框图.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
Lightweight Data-flow Analysis for Execution-driven Constraint Solving
解 简 易 方 程.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
《计算机应用基础》 第9章 程序设计基础(二).
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
用穷举法设计程序 南京师范大学 教育技术系 倪佳慧
1.2 子集、补集、全集习题课.
算法初步 §1.1.2 程序框图.
第4课时 绝对值.
1.2基本算法语句 1.2.3循环语句.
输入语句 输出语句 赋值语句 条件语句 循环语句
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
2.2直接证明(一) 分析法 综合法.
第二节 C语言的特点.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
输入语句 输出语句 赋值语句 条件语句 循环语句
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
任课教师:戴开宇 TA:时均帅、谭肖、王安华 程序设计B班 :20-16:50(90分钟)
§4.5 最大公因式的矩阵求法( Ⅱ ).
第二次课后作业答案 函数式编程和逻辑式编程
一元一次方程的解法(-).
9.3多项式乘多项式.
Presentation transcript:

C程序设计

第2章 程序的灵魂-算法 一个程序包括以下两个方面的内容: (1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构。 (2)对操作的描述。即操作步骤,也就是算法。 数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。作为程序设计人员,必须认真考虑和设计数据结构和操作步骤(即算法)。著名计算机科学家沃思提出一个公式:数据结构+算法=程序。 实际上,一个程序除了以上两个主要要素之外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示。因此,算法、数据结构、程序设计方法和语言工具4个方面是一个程序设计人员所应具备的知识。 编程步骤: 1、明确问题; 2、问题 ————若干具体步骤(算法) 3、算法————程序; 4、上机调试运行。

2.1 算法的概念 广义地说,为解决一个问题而采取的方法和步骤,就称为算法(algorithm)。例如,描述太极拳动作的图解,就是太极拳的算法。一首歌曲的乐谱,也可以称为该歌曲的算法,因为它指定了演奏该歌曲的每一个步骤,按照它的规定就能演奏出预定的曲子。 对同一个问题,可以有不同的解题方法和步骤。 计算机算法可分为两大类别: 数值运算算法 非数值运算算法 算法:解题方法和或解题步骤的精确描述。

2.2 简单算法举例 [例2.1]求1×2×3×4×5 算法1: 步骤1:先求1*2,得到结果2。 步骤2:将步骤1得到的乘积2再乘以3,得到结果6。 步骤3:将6再乘以4,得24。 步骤4:将24再乘以5,得120。

算法2: S1:使p=1 S2:使i=2 S3:使p*i,乘积仍放在变量p中,可表示为p*ip S4:使i的值加1,即i+1i S5:如果i不大于5,返回重新执行步骤S3以及其后的步骤S4和S5;否则,算法结束。最后得p的值就是5!的值。

[例2.2]有50个学生,要求将他们之中成绩在80分以上的学号和成绩输出 ni代表第i个学生学号。gi代表第i个学生成绩,算法如下: S1:1i S2:如果gi>80,则输出ni和gi;否则不输出 S3:i+1i S4:如果i50,返回S2,继续执行;否则,算法结束。

[例2.3]判定2000-2500年中的每一年是否是闰年 闰年的条件是:(1)能被4整除,但不能被100整除的年份是闰年,如1996年、2004年;(2)能被400整除的年份是闰年,如1600年、2000年。 设y为被检测的年份。可采用以下步骤: S1:2000y S2:若y不能被4整除,则输出 “y不是闰年”。然后转到S6 S3:若y能被4整除,不能被100整除,则输出 “y是闰年”。然后转到S6 S4:若y能被400整除,输出 “y是闰年”,然后转到S6 S5:输出 “y不是闰年” S6:y+1y S7:当y2500时,转S2继续执行,否则算法停止。

[例2.4]求1-1/2+1/3-1/4+…+1/99-1/100 算法如下: S1:sign=1 S2:sum=1 S3:deno=2 S4:sign=(-1)*sign S5:term=sign*(1/deno) S6:sum=sum+term S7:deno=deno+1 S8:若deno100返回S4;否则算法结束。

[例2.5]对一个大于或等于3的正整数,判断它是不是一个素数 判断一个数n(n≥3)是否素数的方法是将n作为被除数,将2到n-1各个整数先后作为除数,如果都不能被整除,则n为素数。 算法如下: S1:输入n的值 S2:i=2(i作为除数) S3:n被i除,得余数r S4:如果r=0,表示n能被i整除,则输出 “n不是素数”,算法结束;否则执行S5 S5:i+1i S6:如果in-1,返回S3;否则输出 “n是素数”,然后结束。

2.3 算法的特性 (1)有穷性。一个算法应包含有限的操作步骤,而不能是无限的。 (2)确定性。算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。 (3)有零个或多个输入。所谓输入是指在执行算法时需要从外界取得必要的信息。 (4)有一个或多个输出。算法的目的是为了求解,“解”就是输出。 (5)有效性。算法中的每一个步骤都应当能有效地执行,并得到确定的结果。

2.4 怎样表示一个算法 为了表示一个算法,可以用不同的方法。 常用的方法有: 自然语言 传统流程图 N-S流程图 伪代码 PAD图等。

2.4.2 用流程图表示算法

[例2.6]将例2.1求5!的算法用流程图表示

[例2.7]将例2.2的算用流程图表示。将50名学生中成绩在80分以上者的学号和成绩输出

[例2.8]将例2.3判定闰年的算法用流程图表示

[例2.9]将例2.4的算法用流程图表示。即求1-1/2+1/3-1/4+…+1/99-1/100

[例2.10]将例2.5判断素数的算法用流程图表示

2.4.3 三种基本结构 (1)顺序结构

(2)选择结构

(3)循环结构 当型循环 直到型循环

2.4.4 用N-S流程图表示算法 N-S流程图用以下的流程图符号: (1)顺序结构:A和B两个框组成一个顺序结构。

(2)选择结构:当条件p成立时执行操作A ,条件p不成立则执行操作B。

(3)循环结构: 当型循环结构下,图符表示先判断后执行,当条件p成立时反复执行操作A ,直到条件p不成立为止。 直到型循环结构下,图符表示先执行后判断,当条件p不成立时反复执行A操作,直到p条件成立为止。

[例2.11]将例2.1的求5!算法用N-S图表示

[例2.12]将例2.2的算法用N-S图表示。将50名学生中成绩高于80分的学号和成绩打印出来

[例2.13]将例2.3判定闰年的算法用N-S图表示

[例2.14]将例2.4的算法用N-S图表示。 求1-1/2+1/3+…+1/99-1/100

[例2.15]将例2.5判断素数的算法用N-S流程图表示

2.4.6 用计算机语言表示算法 [例2.16]将例2.11表示的算法(求5!)用C语言表示 #include <stdio.h> main() { int i, t; t=1; i=2; while(i<=5) t=t*i; i=i+1; } printf(“%d”, t);

[例2.17]求例2.14表示的算法(求级数的值) 用C语言表示 #include <stdio.h> main() { int sign=1; float deno=2.0, sum=1.0, term; while(deno<=100) sign=-sign; term=sign/deno; sum=sum+term; deno=deno+1; } printf(“%f”, sum);

2.5 结构化程序设计方法 自顶向下 逐步细化 模块化设计 结构化编码

习题 2.4 用传统流程图表示求解以下问题的算法 (1)有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换。 (2)依次将10个数输入,要求将其中最大的数输出 (3)有3个数a、b、c,要求按大小顺序把它们输出 (4)求1+2+3+……+100 (5)判断一个数n能否同时被3和5整除 (6)将100-200之间的素数输出 (7)求两个数m和n的最大公约数 (8)求方程式ax2+bx+c=0的根。分别考虑:有两个不等的实根;有两个相等的实根