面向对象程序设计-C++语言基础

发布时间:2021-10-18 06:56:45

面向对象程序设计
C++语言基础

主讲:魏宝刚

2010-10-8

1

第一讲

绪论

程序设计语言—表达软件的工具 程序设计语言 表达软件的工具
计算机——不是一台真正的机器 程序——一种软件机器。这种机器的建造依赖于工具、材料和想象 力之间的相互作用,程序设计语言定义了工具和材料。 数学模型(形式化描述)比程序设计语言更重要。

程序设计语言的发展
硬件发展——软件危机——结构化程序设计——软件工程——面向对象技术 机器码——低级——高级;
领域应用软件 系统工具软件( 系统工具软件(如Word) ) 编译程序(如 编译程序 如C++Builder) 数据库系统( 数据库系统 如Oracle)

操作系统 (如Linux) 如
2010-10-8 2

结构化过程和面向对象编程 结构化程序设计: 结构化程序设计:
总体结构——层次树状;局部组织——模块化。一般不允许goto. 程序——处理数据的一系列过程; 数据,过程分开存储;

“分而治之”。
缺点:数据和任务分离,难理解、维护; 重用性差;

软件开发的瀑布模型: 软件开发的瀑布模型:
六个阶段: 软件计划——可行性分析、工作范围和代价; 需求分析(做什么)——功能需求、性能需求、环境需求与限制; 软件设计(怎么做)——概要设计和详细设计; 软件编码——用具体语言实现设计; 软件测试——单元测试和综合测试; 软件维护——已交付的软件修改、扩充、排错;
2010-10-8 3

面向对象程序设计: 面向对象程序设计:
菜单、按钮、窗口 事件驱动; 菜单、按钮、窗口——事件驱动; 事件驱动 数据和数据处理过程——对象; 对象; 数据和数据处理过程 对象 面向对象的四大支柱:封装、数据隐藏、继承和多态性。 面向对象的四大支柱:封装、数据隐藏、继承和多态性。 开发的,1972年在一台 年在一台DEC C语言贝尔实验室的 Dennis Ritchie 开发的,1972年在一台DEC PDP-11实现。UNIX系统的开发语言。 PDP-11实现。UNIX系统的开发语言。 实现 系统的开发语言 满足复杂性要求,1980年 满足复杂性要求,1980年 贝尔实验室的 Bjame Stroustrup 开发带 类的C 1983年正式取名C++。 年正式取名C++ 类的C。1983年正式取名C++。
真实世界的数据 C++程序 程序 C++编译器 编译器 操作系统 物理计算机

2010-10-8

4

C++程序的结构
C++应用程序的结构 简单的C++程序 C++源程序的执行

2010-10-8

5

C++应用程序的结构

老师类

实例对象
学生类

陈老师

张三

李四

王萍

赵英

main

主控程序

C++程序是一组相互通信的对象 程序是一组相互通信的对象

C++应用程序设计: C++应用程序设计: 应用程序设计
1.定义应用需要的类对象; 2.定义主控对象,完成对象间的通信;
2010-10-8 6

简单的C++程序 简单的C++程序 C++
# include <iostream.h> int mail( ) { cout<<“Hello, World\n”; }

一般: 公用数据和函数说明放在头文件(.h)中; 实现函数功能的函数体和局部数据放在源文件(.cc)中; 程序是由一行行符号序列表达的,空格将符号序列分为六类: 关键字:include, int, const等说明语句、数据的性质; 标识符:cin, cout, a, b等代表运算对象; 运算符:<<, +, ==等表示指定运算; 常量:2.45等,不用说明,是有类型的操作数; 串:“Hello Worls”等用双引号括起来的字符序列; 特殊符号:{, }, //, #, (, )等
2010-10-8 7

C++程序的执行 C++程序的执行
C++源程序 C++源程序

C++预处理器 C++预处理器

预处理后的源程序

C++编译程序 C++编译程序 目标程序 链接程序 可执行程序 其它目标程序和库

2010-10-8

8

Example
#include<iostream> using namespace std; typedef struct rectangle { int length; int width; } rec; int area(rec r){ return r.length*r.width; } int main(){ rec r1; int r_area; r1.length=10; r1.width=20; r_area=area(r1); cout<<"the area is: " <<r_area<<endl; 2010-10-8 }

#include<iostream> using namespace std; class rectangle { int length; int width; public: int area( ){ return length*width; } void setvalue(int l, int w){ length=l; width=w; } }; int main(){ rectangle r1; r1.setvalue(10,20); int r_area=r1.area( ); cout<<"the area is: " <<r_area<<endl; }

9

Example
#include<iostream> using namespace std; class rectangle { int length; int width; public: void setvalue(int l, int w){ length=l; width=w; } int area( ){ return length*width; } int perimeter(){ return (length+width)*2; } };2010-10-8 Type Name

rectangle setvalue()

Interface

area() perimeter()

int main(){ rectangle r1,r2; r1.setvalue(10,20); r2.setvalue(500,100); int r_area=r1.area( ); cout<<"The r1's area is: " <<r_area<<endl; cout<<"The r2's perimeter is: " <<r2.perimeter()<<endl; }

10

iostreams

ios
cout clog cerr

iostream.h ostream istream
cin

iostream ifstream fstream Stream class ofstream

2010-10-8

11

Iostreams 类
//: C02:Numconv.cpp // Converts decimal to octal and hex #include <iostream> using namespace std; int main() { int number; cout << "Enter a decimal number: "; cin >> number; cout << "value in octal = 0" << oct << number << endl; cout << "value in hex = 0x" << hex << number << endl; } ///:~

2010-10-8

12

字符串类型
//: C02:HelloStrings.cpp // The basics of the Standard C++ string class #include <string> #include<iostream> using namespace std; int main() { string s1, s2; //Empty strings string s3="Hello world."; // Initialized string s4("I am"); // also Initialized s2="Today"; //Assigning to a string s1=s3+" "+s4; // Combining strings s1+=" 8 "; //Appending to a string cout<<s1+s2+"!"<<endl; } ///:~

2010-10-8

13

读写文件
//: C02:Scopy.cpp // Copy one file to another, a line at a time #include<fstream> #include<string> using namespace std; int main() { ifstream in("Scopy.cpp"); ofstream out("scopy2.cpp"); string s; while(getline(in, s)) out<<s<<"\n"; getline( ) 每次读一行字符 } ///:~ 对象中去. 到一个 string 对象中去

2010-10-8

14

读写文件
//: C02:FillString.cpp // Read an entire file into a single string #include<fstream> #include<iostream> #include<string> using namespace std; int main() { ifstream in("FillString.cpp"); string s, line; 问题: 问题:事先并不知道有多少 个字符串 while(getline(in, line)) s+=line+"\n"; 我们需要某种容器, 我们需要某种容器,当读入一个字符串 cout<<s; 可以将其加到容器中去。 时,可以将其加到容器中去。 } ///:~ 注意: 注意:容器应能够自动记录存入的数据 个数. 个数
2010-10-8 15

Vector 容器
vector 类是用模板定义的,可生成不同的类。 类是用模板定义的,可生成不同的类。 如字符串类: 如字符串类:vector<string> 可用下列成员函数在vector容器中存放数据: 容器中存放数据: 可用下列成员函数在 容器中存放数据 push_back( ) ; Insert( ); push_front( )

2010-10-8

16

//: C02:FillVector.cpp // Read an entire file into a vector of string #include<vector> #include<fstream> #include<iostream> #include<string> using namespace std; int main() { vector<string> v; ifstream in("FillVector.cpp"); string line; while(getline(in, line)) v.push_back(line); //Add the line to the end //Add line numbers: for(int i=0; i<v.size();i++) cout<<i<<": "<<v[i]<<endl; 2010-10-8 } ///:~

17

//: C02:GetWords.cpp // Break a file into whitespace-separated words #include<vector> #include<fstream> #include<iostream> #include<string> using namespace std; int main() { vector<string> words; ifstream in("GetWords.cpp"); string word; 每次读一个 “ 字" while(in>>word) words.push_back(word); for(int i=0; i<words.size();i++) cout<<words[i]<<endl; 2010-10-8 } ///:~

18

//: C02:IntVector.cpp // Creating a vector that holds integers #include<vector> #include<iostream> using namespace std; int main() { int 类型 vector<int> v; for(int i=0; i<10; i++) v.push_back(i); for(i=0; i<v.size();i++) cout<<v[i]<<","; cout<<endl; for(i=0; i<v.size();i++) v[i]=v[i]*10; //Assignment for(i=0; i<v.size();i++) cout<<v[i]<<","; cout<<endl; } ///:~

2010-10-8

19

数据和运算
标识符 基本对象和基本类型 常量 导出类型 运算符

2010-10-8

20

标识符
有一定含义的名字表示数据; 一系列字母数字组成,首字符必须字母; 不能是关键字; 大小写有区别; break, 3var, a fool, .name, ……

基本对象和基本类型
数 常 字 量 符 基 运 对 本 算 象 串 变 量

“a” 和 ‘a’ 的差别? 的差别? 变量和常量的区别:变量——存储单元; 变量和常量的区别:变量 存储单元; 存储单元 常量除串外,不占存储单元, 常量除串外,不占存储单元,也不能改变
2010-10-8 21

符 字 整 型 基 数 类 浮 型 本 据 型 点 精 双 度 无 值

char int float double void

占用空间 操作复杂性

类型的作用:确定分配空间的大小和所能进行的操作 修饰符:signed, unsigned, long, short, const const 型变量不能改变其值(一直为初值)

导出类型
导出数据类型

数组
type [ ]

指针
type *

结构
struct

联合
union

枚举
emum

2010-10-8

22

1

指针
T* 变量——存放T类型对象的地址
指 针 对 象

c1=‘a ; char c1= a’; 的作用? 运算符 & 和 * 的作用? char *p=&c1; char c2=*p;

void main( ) { int i; int *p; *p=i; }

//???

2010-10-8

23

2

引用

一个变量说明为另一变量的引用, 则成为对应变量的别名。必须初始化,且初始 化它的变量必须是已声明过类型的变量。两者为同一存储单元。 int count=0; int &refCount=count; refCount=1; count + =count;

3
1 2 3

数组 T [size]: 下标0size-1
int a[2][3]: int a[ ][3]={{2,4,6},{8,10,12}}; char name[7]; name=“string”;

//???

a[0] [0]

a[0] [1]

a[0] [2]

a[1] [0]

a[1] [1]

a[1] [2]

2010-10-8

24

4

函数

C++与 不同之处是声明使用原型,以保证实参和形参类型一致(编译器检查) C++与 C不同之处是声明使用原型,以保证实参和形参类型一致(编译器检查) C #include<stdio.h> f(a,b) char *a; float b; { printf(“a:%s,b:%f\n”,a,b); } main( ) { f(12.3,12.3); } C++ #include<iostream.h> f(char *a, float b) { cout<<“a:”<<a<<“,” <<“b”<<b<<endl; } void main( ) { f(12.3, 12.3); ??? }

运算符
ex 1. ex 2. a+=1; int x, n; x=++n; x=n++; z=(a>b)?a:b; 含义? 含义 x的值? 的值? 的值 x的值? 的值? 的值 含义? 含义?

在关系运算中,当指定关系成立时,关系表达式的值为1 否则为0 在关系运算中,当指定关系成立时,关系表达式的值为1,否则为0。
ex 3.

2010-10-8

25

new和delete运算符和 中的 和 运算符和C中的 函数的区别: 运算符和 中的malloc和free函数的区别: 和 函数的区别

new运算符根据对象的类型,自动决定其大小,而malloc要指定分配存 储空间的大小;new返回指向此类型的指针,malloc返回指向void*类型 的指针。
ex 5. Char *pChar; pChar=new char; char *string=new char[25]; //… delete pChar; delete [ ] string;

:: 是作用域分辨符,用它可以访问隐藏的全局变量。 每种运算符只能用于特定的对象:
ex 6. ex 7. int i; *i=10; 12.3%3 12.3<<2
2010-10-8

??? ??? ???
26

程序的结构
全局变量

整个程序 .C文件 文件1 文件 .C文件 文件n 文件 函数k 函数 函数1 函数 函数l 函数
静态变量

局部变量

函数1 函数

工程文件(.dsw, .prj): 告诉编译器可执行文件由哪些.c文件装成; 连上哪些.obj文件; 要连的标准库.lib

2010-10-8

27

程序运行时的内存占用
代码区( 代码区(code area) ) 数据区( 数据区(data area) ) 堆区( 堆区(heap area) ) 栈区( 栈区(stack area) )

存放程序的代码部分 存放程序的全局数据和静态数据 存放程序动态申请的数据 存放程序的局部数据和参数

2010-10-8

28

#include<stdio.h> int m=80; void F1(int w) 代码区 代码区 { 代码区 static int n=70; 代码区 int k=60; //1 m++; 数据区 数据区 n++; 数据区 k++; 数据区 w++; //2 printf(“F1( )---m:%d n:%d k:%d w:%d\n”,m,n,k,w); } 代码区 堆区 堆区 void F2( ) 堆区 { 堆区 int m=90; m++; //4 栈区 栈区 F1(m); 数据区 栈区 printf(“F2( )---m:%d \n”,m); 栈区 } void main( ) { 堆区 int w=20; F1(w); //3 printf(“下面调用 下面调用F2( )\n”); 下面调用 F2( ); 栈区 }
2010-10-8

main、F1、F2 main、F1、F2 、 、 、 、 main、 、 代码 、F1、F2 代码 main、F1、F2 代码、 、 代码 m 81 m 80 m 81 F1的nn 70 F1的 71 的 的 m 81 F1的n 71 的 F1的n 71 的 未用 未用 、F1、F2 main、 、 未用 代码 未用 k k 60 61 ww 81 m 20 21 k 61 k20 61 ww 的n 71 20 F1的 m 91 w 91 w 20 m 91 未用 w 20 k 61 w 21 w 20 栈顶 栈顶 F1 栈顶 F1 栈顶 main main F1 F2 main F2 main 栈顶 main 29

流程控制、函数和文件
流程控制语句(顺序、条件、循环) 1 流程控制语句(顺序、条件、循环)
(if条件语句 (if-else; switch)
注意:条件表达式的值为非零表示“真”;值为零则表示“假”。 C++无布尔类型;
ex 1. switch(val) { case 1: cout<<“case 1”<<endl; case 2: cout<<“case 2”<<endl; default: cout<<“case not found”<<endl; } 若val为1,输出结果? val为 输出结果?

循环语句 (while; for)
for(表达式1 表达式2 表达式3 for(表达式1;表达式2;表达式3) 表达式 语句
2010-10-8

表达式1 表达式1; While(表达式 表达式2) While(表达式2) { 语句; 语句; 表达式3; 表达式3; }

30

数 函 1 数 函 2 C++函数作用:1、大任务化小时,表示小任务; 文 件 2、定义方法。 L 数 文件是编译的独立单位 函 m

函数和文件

件 文 1 件 文 2 程 序 L 文 n 件

1 作用域
标识符的作用域有:块、函数、文件、全局 4种 块 函数、文件、 在块和函数内声明的变量——作用域是块和函数; 在函数外声明的静态全局变量——作用域是定义它的文件; 全局名的作用域——整个程序。
ex 2. int x; void f1( ) { int x; x=1; { int x; x=2; } x=3; } int *p=&x;

2010-10-8

31

外层作用域不能访问内层作用域,利用 运算符可访问当前作用域所隐藏的全局名 运算符可访问当前作用域所隐藏的全局名。 外层作用域不能访问内层作用域,利用::运算符可访问当前作用域所隐藏的全局名。 但不能访问隐藏的局部名。作用域总是始于说明点。 但不能访问隐藏的局部名。作用域总是始于说明点。
ex 3. int x=11; void f2( int z ) { int z; int y=x; int x=1; ::x=2; y=x; }

2 存储分类符

外 的 extern( 部 ) static( 态 ) 静 的 存 分 符 储 类 寄 器 ) register( 存 的 auto( 动 ) 自 的

外部的:多个文件共享的变量,用extern通知编译器同名同类型变量引用同一存储区。 外部的
ex 4. //file1.cc int a=1; int f ( ) { //…
2010-10-8

//file2.cc extern int a; //声明 声明 int f( ); void g( ) { a=f( ); }
32

//声明(将名字与类型联系起来) 声明(将名字与类型联系起来) 声明

}

静态的:分配的存储空间直到整个程序结束才收回(全局变量特性); 静态的 局部于某一作用域(局部变量特性) 按作用范围可分:静态局部变量,局限于特定函数,但出作用域并不释放。 静态全局变量,局限于它的源文件。
ex 5. #include<iostream.h> void f ( ); void main ( ) { for ( int i=0; i<=3; i++) f ( ); } void f ( ) { static int a=0; cout<<a++<<endl; }

输出结果??? 输出结果

函数也可以声明为静态的,局部于它所在的文件。
ex 6. //file1.cc static void f ( char ) { } //file2.cc static void f ( char ) { }

//若去掉 若去掉static??? 若去掉

寄存器的:用CPU中寄存器提高频繁使用量的速度。 寄存器的 自动的:函数的局部变量,出函数自动消失,一般省去auto。 自动的
2010-10-8 33

3 函数参数传递 ex 7. #inlcude<iostream.h> void swap ( int x, int y ) { int temp; temp=x; 参数传值是参数值的拷 而不是参数本身。 贝,而不是参数本身。 x=y; y=temp; } void main ( ) { int x=10, y=20; swap( x, y ); cout<<“x:”<<x<<“y:”<<y<<endl; }

2010-10-8

34

函数要改变调用它的函数的变量有两种方法: 函数要改变调用它的函数的变量有两种方法: 传指针调用和引用调用。 传指针调用和引用调用。当形参和实参结合 复制的是变量的地址。 时,复制的是变量的地址。

#inlcude<iostream.h> void swap ( int *x, int *y ) { int temp; temp=*x; *x=*y; *y=temp; } void main ( ) { int x=10, y=20; swap( &x, &y ); cout<<“x:”<<x<<“y:”<<y<<endl; }
2010-10-8 35

#inlcude<iostream.h> void swap ( int &x, int &y ) { int temp; temp=x; x=y; y=temp; } void main ( ) { int x=10, y=20; swap( x, y ); cout<<“x:”<<x<<“y:”<<y<<endl; }

2010-10-8

36

4 函数参数 void f1(int a, int b=-1); 调用形式: 调用形式:f1(1,2); f1(2); void f2(int a, int b=-1, int c); ??? #include<iostream.h> void f1( int a, int b=-10, int c) { cout<<a<<" "<<b<<" "<<c<<endl; } void main () { f1(10,20,30); f1(10,20); }
2010-10-8 37

main( )是编译器预定义的函数,C++有两种形式: 是编译器预定义的函数, 有两种形式: 是编译器预定义的函数 有两种形式 int main( ) { /* … */} int main( int argc, char *argv[ ] ) { /* … */} argv [ 0 ]~argv [ argc-1 ] 存放运行环境参数。 存放运行环境参数。

#include<iostream.h> int main (int argc, char *argv[ ]) { if (argc ==1) { cout<<"you forgot type parameter"<<endl; return 1; } for(int i=0; i<=argc-1; i++) cout<< argv[i]<<endl; return 0; }
2010-10-8 38

内联、 内联、重载和引用
1 宏和内联

件 含 文 包 预 译 理 句 宏 义 编 处 语 定 条 编 件 译
//包含文件内容取代该预处理语句 //预编译时,将字符串1一律用字符串2替换

文件包含:#include<包含文件名> 宏定义:#define 字符串1 字符串2 字符串1 字符串2

带参宏:例如,#define power(x) ((x)*(x)) #define 使用,x=4;y=6; z=power(x+y) x=4;y=6;

#include<iostream.h> //#define Max(a, b)((a>b)?a:b) inline int Max(int a, int b) { return (a>b)?a:b; } void main() { int x=5; int y=2; int z=Max(x++,y++); cout<<z<<endl; }
2010-10-8

#include<iostream.h> #define power(x)((x)*(x)) /*inline int power(int m) { return m*m; }*/ void main() { int x=4; int y=2; int z=power((x++)+(y++)); cout<<z<<endl;

}

39

条件编译: 条件编译:

#if 条件 源程序部分1 源程序部分1 #else 源程序部分2 源程序部分2 //编译时 编译时, #endif //编译时,根据条件决定取哪部分编译

在C++中常用const变量和内联函数来代替宏和带参宏: C++中常用const变量和内联函数来代替宏和带参宏: 中常用const变量和内联函数来代替宏和带参宏 例如: //这种定义有类型信息 这种定义有类型信息, 例如:const int YES=1; //这种定义有类型信息,更安全 const int maxsize=25; int p=maxsize; const int maxsize=25; int *p=&maxsize;

2010-10-8

40

1:n*fac(ninline fac(int i) {return i<2 ? 1:n*fac(n-1);} 编译器在所有调用这个函数的地方将其实际的代码装上。 内联函数要出现在每一调用该函数的源文件之中,所以一般放在头文 件中。内联函数调用,编译器做类型检查,保证非法类型不传入;宏 的优点是传入什么类型,返回同一类型。 .h文件 文 件 1 inline fac(int i) 件 2 fac(int i) 文 文 件 m m …… 文 件 1
2010-10-8

fac(int i) inline fac(int i) 文 件 2 fac(int i) 件 m ……

.h文件 文

fac(int i)

fac(int i)

41

2 重载函数 C中求绝对值的函数: int long iabs(int I); labs(long l);

double fabs(double d); C++用同一个函数名 )实现上面 用函数参数来区别到底调用哪个函, 实现上面, C++用同一个函数名 abs( )实现上面,用函数参数来区别到底调用哪个函, 所以把同一作用域内名字相同 但参数不同的函数称为重载函数 同一作用域内名字相同, 的函数称为重载函数。 所以把同一作用域内名字相同,但参数不同的函数称为重载函数。 为了保证编译器根据参数类型识别重载函数,必须保证重载函数的参数不同。 为了保证编译器根据参数类型识别重载函数,必须保证重载函数的参数不同。

类型 参数 重载 函数 参数 别 的 差 参数 个数 参数 类型 的次 序

2010-10-8

42

以下几种可能出现二义性: 以下几种可能出现二义性: 1、同名函数,仅返回值类型不同,但参数相同; int print(int); double print(int);

2、两同名函数,仅用const或引用使参数类型有所不同; int print (const int & ); int print (int );

3、加修饰符使参数有所不同,取决于实参的具体类型; void print (unsigned int ); void print (int ); //… print (1l); //出错 出错 print (1u); //正确 正确
2010-10-8 43

4、缺省参数有时也能导致二义性; void void print ( int a, int b=1 ); print (int a); //… print(1); //二义性 二义性

3 函数、引用和常量 函数、
引用可作参数,也可作函数返回值,例如: int & getIndex( ); //返回一整型变量的引用 所以函数调用getIndex与一整型变量引用同一存储区域(即是这一变量的别 名)。

2010-10-8

44

#include<iostream.h> int Index=0; int & getIndex( ) { return Index; } void main( ) { int n; n=getIndex( ); getIndex( )=5; ++getIndex( ); cout<<Index<<endl; }
注意: 注意: 函数所引用的变量在函数调用返回后必须是存在,因此, 函数所引用的变量在函数调用返回后必须是存在,因此,不能返回自动 变量或参数。 变量或参数。 由于常量不分配空间, 由于常量不分配空间,所以也不能返回常量 一般可安全返回全局变量、静态变量。 一般可安全返回全局变量、静态变量。
45

2010-10-8

ex 14.

int & bardIdea1( ) { int i; return i; }

int & barIdea2( int parm) { return parm; }

虽然这两个程序编译不会出错, 虽然这两个程序编译不会出错,但结果难以预料 ex 15. int & bardIdea3( ) { return 1; } const int& bardIdea4( ) { return 1; }

bardIdea3( ) 出错。而编译器会创建临时的const int变量,去初始 化bardIdea4( )

2010-10-8

46


相关文档

  • C#程序设计语言基础——面向对象程序设计
  • java 语言与面向对象程序设计基础
  • 《C++面向对象程序设计》_第3章 C++语言初步
  • Java语言与面向对象程序设计基础
  • Java语言与面向对象程序设计基础A卷
  • 面向对象程序设计第2章C++语言基础
  • 猜你喜欢

  • 《塑料成型工艺与模具设计》 (8)
  • B6,B6AC中文说明书
  • 新目标英语八年级下Unit_9__Section_A_1a-2c_教学设计
  • 办公桌与时间管理
  • 对体育课课堂教学氛围营造方法的探究
  • 一天中最有效的学*时间是这4个时段!家长们知道吗?
  • 【最新】学风建设办公室工作总结-范文模板 (4页)
  • 星巴克闪电泡芙的价格是多少
  • 电子科学与技术专业本科培养计划
  • 对我国微博公益*台的思考
  • qt蓝牙开发基本步骤
  • 全球市场增长的领导者
  • 古代文人的那些对联趣事
  • 2019年春八年级英语下册 Module 2 Experiences模块主题写作二课件 (新版)外研版
  • 江苏省2016年监理工程师执业资格:工程师的口头指示考试试题
  • 2020-2021中考数学培优专题复习反比例函数练习题含答案
  • 学校学生安全教育发言稿_0
  • 八年级数学下册18.2特殊的*行四边形18.2.2菱形教案新版新人教版
  • 北师大版九上第2课《探险者的梦想》ppt精品课件
  • 2016春浙教版数学九下3.4《简单几何体的表面展开图》word教案2
  • “海洋石油286”总体性能设计
  • ThreeJs顶点颜色信息渲染
  • 五下科学期末测试题(二)
  • 便捷式电脑的电视宣传广告词
  • 2019高考历史一轮复* 第9单元 世界资本主义经济政策的调整和苏联的社会主义建设 第21讲 世界资本主义经济
  • 八年级生物保护生物的多样性
  • 鼻咽癌的病因与什么有关
  • 流媒体视频直播方案
  • 最新人教版小学五年级数学上册第二单元位置教学设计第三课时教案.doc
  • 贵州省中小学(幼儿园)教师职务评价标准条件-推荐下载
  • 石家庄天海华石科技有限公司(企业信用报告)- 天眼查
  • 我和电脑的故事_小学四年级作文500字
  • 关于春节的800字初中作文
  • 【tensorflow】tensor连接操作concat
  • 单位教师评职称推荐意见
  • 参观南越王博物馆的思想汇报
  • 人教版小学数学 二年级下册 《第七单元 万以内数的认识:课时9》教学课件PPT
  • 解Maxwell--Dirac方程组的守恒差分格式
  • 基于知识管理的企业技能人才开发模型及实施策略
  • 农村土地流转问题的对策分析
  • 初二想象作文:人类,觉悟吧_350字
  • 2019-员工试用期满转正工作总结700字-word范文模板 (1页)
  • 电脑版