清华大学C 课件9

合集下载

清华大学C语言教学课件(共16个PPT)第1个共26页文档

清华大学C语言教学课件(共16个PPT)第1个共26页文档
常成 于困约 ,而败 于奢靡 。——陆 游 52、 生 命 不 等 于是呼 吸,生 命是活 动。——卢 梭
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特
55、 为 中 华 之 崛起而 读书。 ——周 恩来
清华大学C语言教学课件(共16个PPT)
第1个
21、没有人陪你走一辈子,所以你要 适应孤 独,没 有人会 帮你一 辈子, 所以你 要奋斗 一生。 22、当眼泪流尽的时候,留下的应该 是坚强 。 23、要改变命运,首先改变自己。
24、勇气很有理由被当作人类德性之 首,因 为这种 德性保 证了所 有其余 的德性 。--温 斯顿. 丘吉尔 。 25、梯子的梯阶从来不是用来搁脚的 ,它只 是让人 们的脚 放上一 段时间 ,以便 让别一 只脚能 够再往 上登。

清华大学C语言教学课件(共16个PPT)第1个共26页

清华大学C语言教学课件(共16个PPT)第1个共26页
清华大学C语言教学课件(共16个PPT) 第1个

6、黄金时代是在我们的前面,而不在 我们的 后面。

7、心急吃不了热汤圆。

8、你可以很有个性,但某些时候请收口 (蹩脚 的工人 总是说 工具不 好)。

10、只要下定决心克服恐惧,便几乎 能克服 任何恐 惧。因 为,请 记住, 除了在 脑海中 ,恐惧 无处藏 身。-- 戴尔. 卡耐基 。
55、 为 中 华 之 崛起而 读书。 ——周 恩来
谢谢!
51、 天 下 之 事 常成 于困约 ,而败 于奢靡 。——陆 游 52、 生 命 不 等 于是呼 吸,生 命是活 动。——卢 梭
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特

数据结构(C语言版中)清华大学出版社ppt

数据结构(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课件

C语言程序设计清华大学郑莉PPT课件
象 的 方 法
第18页/共702页
面向对象的基本概念
面 — — 多 态 性 • 多态是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行 向 为 。 这 使 得 同 一 个 属 性 或 行 为 在 一 般 类 及 其 各 个 特 殊 类 中 具 有 不 同 的 语 义 。
• 例如:
对 数 的 加 法 - > 实 数 的 加 法 象- > 复 数 的 加 法 的 方 法
第19页/共702页
面向对象的软件工程
面 • 面向对象的软件工程是面向对象方法在软件工程领域的全面应用。它包括 : 向 • 面向对象的分析(OOA) 对 • 面向对象的设计(OOD)
• 面向对象的编程(OOP)
面向对象的语言
计 算 机
语 言 的
发 展
• 出发点: • 更直接地描述客观世界中存在的事物(对象)以及它们之间的关 系。
• 特点: • 是高级语言。 • 将客观事物看作具有属性和行为的对象。 • 通过抽象找出同一类对象的共同属性和行为,形成类。 • 通过类的继承与多态实现代码重用
第5页/共702页
程序设计方法的发展历程
面 — — 面 向 对 象 的 方法 • 将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体 ——对象。 向 • 对同类型对象抽象出其共性,形成类。 对 • 类通过一个简单的外部接口,与外界发生关系。 象 • 对象与对象之间通过消息进行通讯。
的 方 法
第11页/共702页
向 • 是现实世界中一个实际存在的事物。
• 可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。
对 • 是构成世界的一个独立单位,具有:

C语言程序设计_课件_第九章(适于清华谭浩强版)

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  课程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章

《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++程序设计课件第九章(清华第三版)

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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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(){}
相关文档
最新文档