清华大学C 课件9
合集下载
清华大学C语言教学课件(共16个PPT)第1个共26页文档
常成 于困约 ,而败 于奢靡 。——陆 游 52、 生 命 不 等 于是呼 吸,生 命是活 动。——卢 梭
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特
55、 为 中 华 之 崛起而 读书。 ——周 恩来
清华大学C语言教学课件(共16个PPT)
第1个
21、没有人陪你走一辈子,所以你要 适应孤 独,没 有人会 帮你一 辈子, 所以你 要奋斗 一生。 22、当眼泪流尽的时候,留下的应该 是坚强 。 23、要改变命运,首先改变自己。
24、勇气很有理由被当作人类德性之 首,因 为这种 德性保 证了所 有其余 的德性 。--温 斯顿. 丘吉尔 。 25、梯子的梯阶从来不是用来搁脚的 ,它只 是让人 们的脚 放上一 段时间 ,以便 让别一 只脚能 够再往 上登。
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特
55、 为 中 华 之 崛起而 读书。 ——周 恩来
清华大学C语言教学课件(共16个PPT)
第1个
21、没有人陪你走一辈子,所以你要 适应孤 独,没 有人会 帮你一 辈子, 所以你 要奋斗 一生。 22、当眼泪流尽的时候,留下的应该 是坚强 。 23、要改变命运,首先改变自己。
24、勇气很有理由被当作人类德性之 首,因 为这种 德性保 证了所 有其余 的德性 。--温 斯顿. 丘吉尔 。 25、梯子的梯阶从来不是用来搁脚的 ,它只 是让人 们的脚 放上一 段时间 ,以便 让别一 只脚能 够再往 上登。
清华大学C语言教学课件(共16个PPT)第1个共26页
清华大学C语言教学课件(共16个PPT) 第1个
•
6、黄金时代是在我们的前面,而不在 我们的 后面。
•
7、心急吃不了热汤圆。
•
8、你可以很有个性,但某些时候请收口 (蹩脚 的工人 总是说 工具不 好)。
•
10、只要下定决心克服恐惧,便几乎 能克服 任何恐 惧。因 为,请 记住, 除了在 脑海中 ,恐惧 无处藏 身。-- 戴尔. 卡耐基 。
55、 为 中 华 之 崛起而 读书。 ——周 恩来
谢谢!
51、 天 下 之 事 常成 于困约 ,而败 于奢靡 。——陆 游 52、 生 命 不 等 于是呼 吸,生 命是活 动。——卢 梭
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特
•
6、黄金时代是在我们的前面,而不在 我们的 后面。
•
7、心急吃不了热汤圆。
•
8、你可以很有个性,但某些时候请收口 (蹩脚 的工人 总是说 工具不 好)。
•
10、只要下定决心克服恐惧,便几乎 能克服 任何恐 惧。因 为,请 记住, 除了在 脑海中 ,恐惧 无处藏 身。-- 戴尔. 卡耐基 。
55、 为 中 华 之 崛起而 读书。 ——周 恩来
谢谢!
51、 天 下 之 事 常成 于困约 ,而败 于奢靡 。——陆 游 52、 生 命 不 等 于是呼 吸,生 命是活 动。——卢 梭
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特
数据结构(C语言版中)清华大学出版社ppt
p->data=x;
p->next=top; top=p;
修改栈顶指针
return top;
} 25
链栈的出栈操作
an出栈,使工作指针q 指向要出栈结点,然
后修改栈顶指针: top=top->next
26
链栈出栈操作
LinkStack *pop( LinkStack *top)
{ LinkStack *q; if(!top) /*说明指针top指向NULL*/ {printf(“\n链栈是空的!”); return NULL;} q=top; top=top->next; free(q); return top;
29
void conversion(int N, int r)
解题思路如下:
{ int x=N,y=r; SeqStack *s; /*是顺序栈*/
N是十进制数,要将N 转换成r进制数
s=initStack( ); /*构造一个顺序栈*/ while(N!=0) { push(s, N %r ); /*将N%r入栈*/
}
17
例3.1 用main函数以及display函数,调试上述各种栈的基
本操作算法。
#define Maxsize 50
typedef int datatype;
typedef struct{
{datatype stack[Maxsize]; int top;
}SeqStack;
void display(SeqStack *s) /*显示栈中所有元素值*/
15
顺序栈的入栈操作——例如用堆栈存放(A,B,C,D)
高地址M 低地址L
top
top D
C语言程序设计清华大学郑莉PPT课件
象 的 方 法
第18页/共702页
面向对象的基本概念
面 — — 多 态 性 • 多态是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行 向 为 。 这 使 得 同 一 个 属 性 或 行 为 在 一 般 类 及 其 各 个 特 殊 类 中 具 有 不 同 的 语 义 。
• 例如:
对 数 的 加 法 - > 实 数 的 加 法 象- > 复 数 的 加 法 的 方 法
第19页/共702页
面向对象的软件工程
面 • 面向对象的软件工程是面向对象方法在软件工程领域的全面应用。它包括 : 向 • 面向对象的分析(OOA) 对 • 面向对象的设计(OOD)
• 面向对象的编程(OOP)
面向对象的语言
计 算 机
语 言 的
发 展
• 出发点: • 更直接地描述客观世界中存在的事物(对象)以及它们之间的关 系。
• 特点: • 是高级语言。 • 将客观事物看作具有属性和行为的对象。 • 通过抽象找出同一类对象的共同属性和行为,形成类。 • 通过类的继承与多态实现代码重用
第5页/共702页
程序设计方法的发展历程
面 — — 面 向 对 象 的 方法 • 将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体 ——对象。 向 • 对同类型对象抽象出其共性,形成类。 对 • 类通过一个简单的外部接口,与外界发生关系。 象 • 对象与对象之间通过消息进行通讯。
的 方 法
第11页/共702页
向 • 是现实世界中一个实际存在的事物。
• 可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。
对 • 是构成世界的一个独立单位,具有:
第18页/共702页
面向对象的基本概念
面 — — 多 态 性 • 多态是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行 向 为 。 这 使 得 同 一 个 属 性 或 行 为 在 一 般 类 及 其 各 个 特 殊 类 中 具 有 不 同 的 语 义 。
• 例如:
对 数 的 加 法 - > 实 数 的 加 法 象- > 复 数 的 加 法 的 方 法
第19页/共702页
面向对象的软件工程
面 • 面向对象的软件工程是面向对象方法在软件工程领域的全面应用。它包括 : 向 • 面向对象的分析(OOA) 对 • 面向对象的设计(OOD)
• 面向对象的编程(OOP)
面向对象的语言
计 算 机
语 言 的
发 展
• 出发点: • 更直接地描述客观世界中存在的事物(对象)以及它们之间的关 系。
• 特点: • 是高级语言。 • 将客观事物看作具有属性和行为的对象。 • 通过抽象找出同一类对象的共同属性和行为,形成类。 • 通过类的继承与多态实现代码重用
第5页/共702页
程序设计方法的发展历程
面 — — 面 向 对 象 的 方法 • 将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体 ——对象。 向 • 对同类型对象抽象出其共性,形成类。 对 • 类通过一个简单的外部接口,与外界发生关系。 象 • 对象与对象之间通过消息进行通讯。
的 方 法
第11页/共702页
向 • 是现实世界中一个实际存在的事物。
• 可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。
对 • 是构成世界的一个独立单位,具有:
C语言程序设计_课件_第九章(适于清华谭浩强版)
注意, 注意,对嵌套结构体的引用必须引用
到最末一级。 到最末一级。
struct OBJECT { struct TASK { long plan; long start; long finish; } ti,tj; int count; } ob;
可以使用scanf(“%d”,&ob.ti.plan) 输 可以使用 入数据。但是不能引用ob.ti 。 入数据。但是不能引用
9.2 结构体与数组 9.2.1结构体包含数组 结构体包含数组 由于结构体的成员可以是任何基 本数据类型和另外一个构造类型, 本数据类型和另外一个构造类型,所 以结构体的成员当然可以是数组。 以结构体的成员当然可以是数组。 下面我们说明一个可以描述一个股票 信息的结构体: 信息的结构体:
struct STOCK { char stockname[8]; /*股票名称 */ 股票名称 char stockcode[6]; /*股票代码 */ 股票代码 float price[3]; /*买 入价、卖出价、成交价 */ 买 入价、卖出价、 }; ;
不能混淆结构体名和结构体变量这两 个概念。 个概念。结构体名实际上标识了程序员定 义的一种新的数据类型, 义的一种新的数据类型,编译系统不可能 为结构体名分配内存空间。 为结构体名分配内存空间。只有当变量被 说明为这种由程序员自己定义的数据类型 的结构体时, 的结构体时,编译系统才会为结构体变量 分配存储空间。在不引起混淆的情况下, 分配存储空间。在不引起混淆的情况下, 结构体变量可以简称为结构体。 结构体变量可以简称为结构体。
*/
Struct STOCK sfz={"ShenFaZhan","000001",8.77,8.78,8.78 }; /*用深发展的数据初始化结构体变量 用深发展的数据初始化结构体变量sfz*/ 用深发展的数据初始化结构体变量 printf("\n %s %s ", sfz.stockname, sfz .stockcode); /*输出股票名称和股票代码 */ 输出股票名称和股票代码 for (i=0;i<3;i++) /*输出股票的买入价、卖出价和成交价 输出股票的买入价、 输出股票的买入价 卖出价和成交价*/ printf("%6.2f ", sfz.price[i]); }
清华大学C 课程PPT课件
• 引入了类的机制,最初的C++被称为“带类
语 的C” 言 • 1983年正式取名为C++ 概 • 从1989年开始C++语言的标准化工作 述 • 于1994年制定了ANSI C++标准草案
• 于1998年11月被国际标准化组织(ISO)批 准为国际标准。2003年发布了C++标准第二 版,成为目前的C++
j = 50000;
i = j;//将unsigned short赋值给signed short变量
cout <<" The short int is:"<< i <<endl; //整型数值溢出
cout <<" The short unsigned int is:"<< j<<endl;
return 0; }
15
第15页/共99页
基 数据类—型整型数据及取值范围
本
数 类型
说明符 位数 数值范围
据 短整
short 16 -32768~32767
类 基本
int
32 -231~(231-1)
型 长整
long
32 -231~(231-1)
和 无符号
表 unsigned short 16 0~65535
达 式
unsigned int unsigned long
赋值运算符和—赋值—表达赋式值表达式举例 基
本 数 据
a=5
表达式值为5
a=b=c=5 表达式值为5,a,b,c均为5
类
a=5+(c=6) 表达式值为11,a为11,c为6
《C程序设计》清华大学出版社 PPT教程 第1章
1)启动Visual C++,选择“文件”菜单中的“新建” 命令,选择“文件”标签中的“C++ Source File” 选项。
2)选择源程序存放的目录和输入源程序名,单击 “确定”。 3)在编辑器中编写源程序。
4)单击F7或“编译”中的“重建全部”编译源程 序,若编译通过,单击“执行”,在DOS屏上看 结果,任按一键返回编辑器。 35
• 目标程序:
• 也称为"结果程序",是源程序通过翻译程序 加工以后所生成的程序。
• 翻译程序:
• 是指一个把源程序翻译成等价的目标程序的 程序。
15
基本术语
——三种不同类型的翻译程序
• 汇编程序:
其任务是把用汇编语言写成的源程序,翻译成机器语言形式 的目标程序。
• 编译程序:
若源程序是用高级程序设计语言所写,经翻译程序加工生成 目标程序,那么,该翻译程序就称为“编译程序”。
5
C高级语言程序设计
课程目标
• 掌握C语言的语法规则 • 掌握程序设计的基本思想和方法,养成良 好的程序设计习惯。 • 会运用编程工具进行程序的设计与实现。 • 会读、会编、会调试C程序
6
第一章
7
主要内容
计算机语言的发展
程序开发过程 C语言概述
8
计算机语言的发展
运算器 控制器 存储器 输入设备 输出设备
常用的有Turbo C 2.0、Turbo C++ 3.0、Visual C++6.0、Dev5.0等。
Turbo C++ 3.0:是一个集成环境,它具有方便、直观 和易用的界面,虽然它也是DOS环境下的集成环境,但 是可以把启动Turbo C++ 3.0 集成环境的DOS执行文件 tc.exe生成快捷方式,也可以用鼠标操作。
C++程序设计课件第九章(清华第三版)
CScrollBar类的主要成员函数 BOOL GetScrollInfo(LPSCROLLINFO lpScrollInfo, UINT nMask = SIF_ALL); 获取的滚动条的参数信息,该信息为 SCROLLINFO结构体的形式。参数 lpScrollInfo为指向SCROLLINFO结构体变 量的指针。 SCROLLINFO结构体的定义如下:
获取滚动块的当前位置。如果失败则返回0 。
int SetScrollPos(intnPos, BOOL bRedraw = TRUE); 将滚动块移动到指定位置。参数nPos指定了滚动块的新 位置,参数bRedraw表示是否需要重绘滚动条,如果为 TRUE,则重绘。函数返回滚动框原来的位置,若操作失 败则返回0。 void GetScrollRange(LPINT lpMinPos, LPINT lpMax Pos) const; 获取滚动条的滚动范围。参数lpMinPos指向滚动条滚动 范围的最小值,参数lpMaxPos指向滚动条滚动范围的最 大值。
滚动条控件的创建
MFC也为滚动条控件的操作提供了类, 即为CScrollBar类。 滚动条控件的创建依然有两种方式,一种 是直接在Toolbox中将滚动条控件拖入对话 框模板,然后添加控件变量使用,另一种 就是用CScrollBar类的Create成员函数动 态创建。这两种方式适用于不同的场合。
9.3 滚动条控件
滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条。 列表框和组合框设置了相应属性后,如果列表项显示不下也 会出现滚动条。滚动条分为水平滚动条 (Horizontal Scroll Bar)和垂直滚动条 (Vertical Scroll Bar)两种。滚动条中有一个滚动块,用 于标识滚动条当前滚动的位置。我们可以拖动滚动块,也可 以用鼠标点击滚动条某一位置使滚动块移动。 从滚动条的创建形式来分,有标准滚动条和滚动条控件两种。 像列表框和组合框设置了WS_HSCROLL 或WS_VSCROLL风格以后 出现的滚动条,不是一个独立的窗口,而是这些窗口的一部 分,这就是标准滚动条。而滚动条控件是一个独立的窗口, 它可以获得焦点,响应某些操作。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章函数、递推与递归 清华大学
1
内容要点
➢ 函数的概念、定义、调用和返回 ➢ 带自定义函数的程序设计 ➢ 递推算法 ➢ 递归思想及算法实现
2
6.1 函数
为什么需要函数?—— 满足实际应用需求
✓ 函数是组成 C/C++ 程序的基础 ✓ C/C++ 库中已经为用户提供了许多标准库函数 ✓ 用户可以根据自己的需要选用合适的库函数 ✓ 如果没有所需函数,用户可自己定义和编写一些函数
问题2:本算法正确性? n=1 n=2 时结果错误
10
int checkprime( int n )
{
int limit, i;
limit = sqrt(n);
if( n % 2 == 0 )
return 0;
for( i = 3; i <= limit; i += 2 )
{
if( n % i == 0 )
形式参数的特点:
✓ 定义函数时放在函数名后的括号中 ✓ 函数未被调用时不占内存空间 ✓ 函数被调用时系统为其分配内存空间 ✓ 函数调用结束后释放内存空间 ✓ 作用域限定在函数内,属于局部变量
13
函数声明(原型):
例:int checkprime( int n) ; 要放在主函数之前,告诉系统有自定义的函数可
4
……
int Add( int x, int y ) ; // 函数声明
int main() { int a, b, sum; …… sum = Add( a, b ); …… }
// 函数调用
int Add( int x, int y ) // 函数定义 { …… …… } // 函数体取代函数声明尾部的分号
要使用C++函数,必须 完成如下工作:
✓ 提供函数定义 ✓ 提供函数声明(原型)
5
✓ 调用函数
函数定义:有返回值的函数
没有返回值的函数(void函数)
typeName functionName (parameterList) { ……
return value; }
//有返回值
void functionName (parameterList) { ……
return; // 可选 }
//没有返回值
6
【任务6.1】素数判定
思路:设计一个函数 int checkprime(int a) , 负责检查 a 是否为素数: 如果是素数,该函数返回 1; 否则,该函数返回 0。
7
#include <iostream>
#include <cmath>
using namespace std;
int lcm(int x, int y) {
}
• 计算n!
return 0;
}
int checkprime(int n)
// 函数定义,n为形式参数
{ int k=0;
for (k = 2; k <= sqrt(n); k = k+1)
{ if (n % k == 0)
// 如果 n 能被k整除则返回0
return 0; } return 1; }
// n 不能被k整除则返回1 有何问题?
if( n == 2 )
return 0;
for( i = 3; i <= limit; i += 2 )
{
if( n % i == 0 )
return 0;
}
return 1;
}
return 0; return 1;
12
函数定义: int checkprime( int n )
checkprime 为函数名 int 是函数返回值的数据类型 n 为函数的形式参数,形式参数也要定义其数据类型
int checkprime( int n);
int main( )
// 函数声明
{ int a=0; cout << "请输入一个整数:a=";
cin >> a;
if ( checkprime(a) )
cout << a << "是素数" << endl;
// 函数调用
else cout << a << "不是素数" << endl;
以被调用。
函数原型确保:
✓ 编译器正确处理函数返回值 ✓ 编译器检查使用的参数数目是否正确 ✓ 编译器检查使用的参数类型是否正确
14
函数调用:
一个函数在调用子函数时,要将实在参数赋给形式参数。 实在参数是一个具有确定值的表达式。
例如:if ( checkprime(a) )
调用时
17
17
实在参数 a
8
• 函数原型 int checkprime(int n);
提高算法效率
只要在 1 和 n 之间存在一个因子就可终止,并返回 n 不 是素数
若 n 可被 2 整除,不需检验其它数,程序终止并返回 n 不是素数;若否,则所有偶数都不是因子,程序只需检 验奇数
程序不必检验因子一直到 n,只需到sqrt(n)即可
形式参数 n
int checkprime( int n ) { …… …… }
实在参数的个数及类型应与形式参数一致, 赋值时前后对应关系不能改变。
15
如何设计(定义)函数? 函数名称 参数 返回值
• 求整数的绝对值 int abs(int x) { …… return … ; }
• 求两个正整数的最小公倍数
return 0;
}
return 1; }
问题:本算法正确性? 浮点数的存储有误差,程序的正确性依
赖于机器的表示精度
11
改进后的正确函数:
int checkprime( int n )
{
int limit, i;
limit = sqrt(n) + 1;
if( n <= 1 )
if( n % 2 == 0 )
9
int checkprime( int n )
{
int i;
if( n % 2 == 0 )
return 0;
for( i = 3; i <= sqrt(n); i += 2 )
{
if( n % i == 0 )
return 0;
} return 1; }
问题1:本算法效率? 每次迭代都需要计算平方根,很费时
3
函数概述
• 函数是模块化的基本单位 • 主调函数与被调函数 • 程序、源文件与函数关系 • 程序中各模块关系
main
fuቤተ መጻሕፍቲ ባይዱ1
fun2
fun3
fun4
fun5
program file1.cpp main(){} fun1(){} fun2(){}
file2.cpp fun3(){} fun4(){} fun5(){}
1
内容要点
➢ 函数的概念、定义、调用和返回 ➢ 带自定义函数的程序设计 ➢ 递推算法 ➢ 递归思想及算法实现
2
6.1 函数
为什么需要函数?—— 满足实际应用需求
✓ 函数是组成 C/C++ 程序的基础 ✓ C/C++ 库中已经为用户提供了许多标准库函数 ✓ 用户可以根据自己的需要选用合适的库函数 ✓ 如果没有所需函数,用户可自己定义和编写一些函数
问题2:本算法正确性? n=1 n=2 时结果错误
10
int checkprime( int n )
{
int limit, i;
limit = sqrt(n);
if( n % 2 == 0 )
return 0;
for( i = 3; i <= limit; i += 2 )
{
if( n % i == 0 )
形式参数的特点:
✓ 定义函数时放在函数名后的括号中 ✓ 函数未被调用时不占内存空间 ✓ 函数被调用时系统为其分配内存空间 ✓ 函数调用结束后释放内存空间 ✓ 作用域限定在函数内,属于局部变量
13
函数声明(原型):
例:int checkprime( int n) ; 要放在主函数之前,告诉系统有自定义的函数可
4
……
int Add( int x, int y ) ; // 函数声明
int main() { int a, b, sum; …… sum = Add( a, b ); …… }
// 函数调用
int Add( int x, int y ) // 函数定义 { …… …… } // 函数体取代函数声明尾部的分号
要使用C++函数,必须 完成如下工作:
✓ 提供函数定义 ✓ 提供函数声明(原型)
5
✓ 调用函数
函数定义:有返回值的函数
没有返回值的函数(void函数)
typeName functionName (parameterList) { ……
return value; }
//有返回值
void functionName (parameterList) { ……
return; // 可选 }
//没有返回值
6
【任务6.1】素数判定
思路:设计一个函数 int checkprime(int a) , 负责检查 a 是否为素数: 如果是素数,该函数返回 1; 否则,该函数返回 0。
7
#include <iostream>
#include <cmath>
using namespace std;
int lcm(int x, int y) {
}
• 计算n!
return 0;
}
int checkprime(int n)
// 函数定义,n为形式参数
{ int k=0;
for (k = 2; k <= sqrt(n); k = k+1)
{ if (n % k == 0)
// 如果 n 能被k整除则返回0
return 0; } return 1; }
// n 不能被k整除则返回1 有何问题?
if( n == 2 )
return 0;
for( i = 3; i <= limit; i += 2 )
{
if( n % i == 0 )
return 0;
}
return 1;
}
return 0; return 1;
12
函数定义: int checkprime( int n )
checkprime 为函数名 int 是函数返回值的数据类型 n 为函数的形式参数,形式参数也要定义其数据类型
int checkprime( int n);
int main( )
// 函数声明
{ int a=0; cout << "请输入一个整数:a=";
cin >> a;
if ( checkprime(a) )
cout << a << "是素数" << endl;
// 函数调用
else cout << a << "不是素数" << endl;
以被调用。
函数原型确保:
✓ 编译器正确处理函数返回值 ✓ 编译器检查使用的参数数目是否正确 ✓ 编译器检查使用的参数类型是否正确
14
函数调用:
一个函数在调用子函数时,要将实在参数赋给形式参数。 实在参数是一个具有确定值的表达式。
例如:if ( checkprime(a) )
调用时
17
17
实在参数 a
8
• 函数原型 int checkprime(int n);
提高算法效率
只要在 1 和 n 之间存在一个因子就可终止,并返回 n 不 是素数
若 n 可被 2 整除,不需检验其它数,程序终止并返回 n 不是素数;若否,则所有偶数都不是因子,程序只需检 验奇数
程序不必检验因子一直到 n,只需到sqrt(n)即可
形式参数 n
int checkprime( int n ) { …… …… }
实在参数的个数及类型应与形式参数一致, 赋值时前后对应关系不能改变。
15
如何设计(定义)函数? 函数名称 参数 返回值
• 求整数的绝对值 int abs(int x) { …… return … ; }
• 求两个正整数的最小公倍数
return 0;
}
return 1; }
问题:本算法正确性? 浮点数的存储有误差,程序的正确性依
赖于机器的表示精度
11
改进后的正确函数:
int checkprime( int n )
{
int limit, i;
limit = sqrt(n) + 1;
if( n <= 1 )
if( n % 2 == 0 )
9
int checkprime( int n )
{
int i;
if( n % 2 == 0 )
return 0;
for( i = 3; i <= sqrt(n); i += 2 )
{
if( n % i == 0 )
return 0;
} return 1; }
问题1:本算法效率? 每次迭代都需要计算平方根,很费时
3
函数概述
• 函数是模块化的基本单位 • 主调函数与被调函数 • 程序、源文件与函数关系 • 程序中各模块关系
main
fuቤተ መጻሕፍቲ ባይዱ1
fun2
fun3
fun4
fun5
program file1.cpp main(){} fun1(){} fun2(){}
file2.cpp fun3(){} fun4(){} fun5(){}