面向对象程序设计(总练习与答案_第1页
面向对象程序设计(总练习与答案_第2页
面向对象程序设计(总练习与答案_第3页
面向对象程序设计(总练习与答案_第4页
面向对象程序设计(总练习与答案_第5页
已阅读5页,还剩261页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大学考试试题纸( A 卷)(2007 -2008 学年第 1 学期)一、简答题(每小题5分,共20分) 1、什么是类?什么是对象?对象与类的关系是什么? 2、构造函数和析构函数的主要作用是什么?他们各有什么特性? 3、有哪几种继承方式?每种方式的派生类对基类成员的继承性如何? 4、简要叙述友元运算符函数和成员运算符函数有什么不同点? 二、选择题(每小题2分,共20分)1假设已经有定义const char *pName=”Student”;下面的语句错误的是 。ApName3=t; B. pName=”score”;C. pName=new char5; D. pName=new char(p)

2、;2. 在下面有关对构造函数的描述中,错误的是 。A. 构造函数可以带有返回值B. 构造函数的名字与类名完全相同C. 构造函数可以带有参数构造函数可以缺省3在下面有关析构函数特征的描述中,正确的是 。A. 一个类中可以定义多个析构函数B. 析构函数名与类名完全相同C. 析构函数不能指定返回类型D. 析构函数可以有一个或多个参数4假定AB为一个类,则执行“AB a(4) , b3 , * p2 ;”语句时,自动调用该类构造函数的次数为 。A. 3 B. 4 C. 6 D. 95. 假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为 。A.

3、 AB operator+(AB &a,AB &b) B. AB operator+(AB &a)C. operator+(AB a) D. AB & operator+( )6. 假设定义了函数模版:templateT max(T x, T y) return (xy)?x:y; 并定义了:int i;char c;那么下列错误的调用该模版的是 。Amax(i,i); Bmax(c,c);Cmax(int(c),i); Dmax(c,i);7模版的主要用途是为了 。A提高代码的运行效率B实现多态性C提高代码的重用性D加强类的封装性8下列说法错误的是 。A申明为指向基类对象的指针可以指向它的公

4、有派生的对象,但不允许指向它的私有派生的对象B允许将一个声明为指向基类的指针指向其公有派生类的对象,但是不能将一个声明为指向派生类对象的指针指向其基类的一个对象。C声明为指向基类对象的指针,当其指向公有派生类对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的成员D以上说法都不对9现有程序如下:#include #include void main()int kk=1234;coutsetfill(*)setw(6)kkendl;coutkkendl;以上程序的运行结果是 。A1234 B. *1234 C.*1234 D.以上都不对1234 1234 *12

5、3410在公有继承的情况下,基类成员在派生类中的访问权限 。A受限制 B. 保持不变 C. 受保护 D. 不受保护三、填空题(每空1分,共10分) 1、定类AB中有一个公有属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为 (1) 。 2、通常情况下,当创建派生类对象时,首先执行 (2) 的构造函数,随后再执行 (3) 的构造函数,当撤销派生类对象时,则先执行 (4) 的析构函数,随后再执行 (5) 的析构函数。 3、ios类中有几个成员函数可以用来对输入输出进行格式化控制,格式控制主要是通过对 (6) 的操作来完成的。 4、所谓赋值兼容规则是指在需要基类对象的任何地方都可以使用

6、 (7) 来替代。 纯虚函数是一个在基类中说明却没定义的虚函数,但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数。那么,纯虚函数的定义形式为 (8) 。 5、分别写出类AB的单目运算符”+”的前缀方式和后缀方式的友元函数重载一般形式: (9) 、 (10) 。 四、写出下面程序的运行结果(每小题5分,共20分)1、#include class Base public: Base() coutConstructing base classn; Base() coutDestructing base classn; ; class Derive : public Basepublic:

7、 Derive() coutConstructing derived classn; Derive() coutDestructing derived classn; private:Base a; void main() Derive op; 2、#include class Basepublic: void show()coutThis is Base classendl;class Derive : public Basepublic: void show()coutThis is Derived classshow();pBase=&D_obj;pBase-show();3、#incl

8、udeint arr=23,25,27,29,31;int &get_value(int i)return arri;void main()int i;coutget_value(3)endl;get_value(2)=50;for(i=0;i5;i+)coutget_value(i)” “;4、#include class complexpublic:complex(int r,int i):real(r),imag(i)friend complex operator+(complex &);friend complex operator-(complex );void print()cou

9、t(real,imag)endl;private:int real,imag;complex operator+(complex &o)o.real+;o.imag+;return o;complex operator-(complex o)o.real-;o.imag-;return o;void main()complex a(1,2),b(3,4);+a;a.print();-b;b.print();五、编程题(每小题10分,共30分)1、建立一个Student类,含有私有的学号(字符型)、姓名(字符型)、年龄(整型)数据成员。用new自动为Student的对象分配内存,并将学号“”,姓

10、名“张三”,年龄20存入内存的相应域中,把该的信息显示出来。2、建立普通的基类building,用来存储一座楼房的层数、房间数以及它的总面积数。建立派生类house,继承building,并存储下面的内容:卧室与浴室的数量,另外,建立派生类office,继承building,并存储灭火器与电话的书面。在主程序中,分别建立对象显示各对象所有的数据成员。3、为Date类重载“+”运算符,实现在某一个日期上(年、月、日)加一个天数。试题参考答案及评分细则(2007 -2008 学年第 1 学期)一、简答题(每小题5分,共20分)1答:类就是相同的数据和相同的一组对象的集合,即,类是对具有相同数据结构

11、和相同操作的一类对象的描述;对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体,对象可以认为是:数据操作;类和对象之间的关系是抽象和具体的关系。2答:构造函数主要用于为对象分配空间,进行初始化。构造函数除了具有一般成员函数的特征外,还具有一些特殊的性质:(1)构造函数的名字必须与类名相同(2)构造函数可以有任意类型的参数,但不能指定返回类型。它有隐含的返回值,该值由系统内部使用。(3)构造函数是特殊的成员函数,函数体可写在类体内,也可写在类体外。(4)构造函数可以重载,即一个类中可以定义多个参数个数或参数类型不同的构造函数。(5)构造函数被声明为公有函数,但它不能像其他成

12、员函数那样被显式地调用,它是在定义对象的同时被调用的。 析构函数也是一种特殊的成员函数。它执行与构造函数相反的操作,通常用于撤消对象时的一些清理任务,如释放分配给对象的内存空间等。析构函数有以下一些特点:(1)析构函数与构造函数名字相同,但它前面必须加一个波浪号();(2)析构函数没有参数,也没有返回值,而且不能重载。因此在一个类中只能有一个析构函数;(3)当撤消对象时,编译系统会自动地调用析构函数。 3答:三种继承方式(公有public、保护protected、私有private);继承性可参见教材P143。4答:(1)对双目运算符而言,成员运算符函数带有一个参数,而友元运算符函数带有两个参

13、数;对单目运算符而言,成员运算符函数不带参数,而友元运算符函数带一个参数。 (2)双目运算符一般可以被重载为友元运算符函数或成员运算符函数,但某些情况,必须使用友元函数。 二、选择题(每小题2分,共20分) 110A A B B B C C D B B三、填空题(每空1分,共10分)(1)AB:bb (2)基类 (3)派生类 (4)派生类 (5)基类 (6)状态标志字 (7)公有派生类对象 (8)virtual 函数类型 函数名(参数表)=0; (9)AB operator+(); (10)AB operator+(int);四、写出下面程序的运行结果(每小题5分,共20分) 1Constru

14、cting base classConstructing base classConstructing derived classDestructing derived classDestructing base classDestructing base class2This is Base classThis is Base class32923 25 50 29 314(2,3)(3,4)五、编程题(每小题10分,共30分)略.2006-2007学年第1学期2005级C+面向对象程序设计期末考试试题(A卷) 本试卷满分100分; 请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰;

15、 请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸一并交上来。 一、 单选题(共10分,每题1分) 1. C+中解决命名冲突的机制是:D(A) 虚基类 (B) 虚函数 (C) 函数重载 (D) 名字空间2. 若类A的一个对象所占的内存空间中包含虚函数表的入口地址,则: C(A) 类A不能有静态数据成员(B) 类A中公有的成员函数一定是虚的(C) 类A中至少有一个成员函数是虚的(D) 类A的析构函数一定是虚的3任意一个类,析构函数的个数最多是:B(A) 不限个数 (B) 1 (C) 2 (D) 34 下列关于this指针的说法,哪个是正确的: D(A) this指针

16、一定指向常量型数据 (B) this指向的数据不可更改(C) 静态成员函数中也可以访问this指针 (D) this指针本身可直接作为成员函数的返回值5在类定义中,为说明成员的访问权限,private, protected, public 可以出现次数为:A(A)次数没有具体限定 (B) 每种至多一次(C) public 至少一次 (D) 每种至少一次6下面哪种定义方式是正确的,并且使得p可以作为函数void f( A* const pp);的实参:A(A)A * p = new A; (B)A a; A* p = a; (C)const A* p = new A; (D)A a; const

17、 A* p = a;7 obj是类A的一个对象,执行语句 const A& aA= obj; ,则下列说法正确的是: C(A)类A的拷贝构造函数会被调用 (B)类A的赋值函数会被调用(C)&aA的值就是 &obj (D) 语句obj.f( );等价于语句aA.f( );8下面关于访问类A的私有数据成员的说法,错误的是: C(A)类A的友元函数可以访问类A的私有成员。 (B)类A的友元类中的非静态成员函数可以访问类A的私有成员。(C)类A的嵌套类中的非静态成员函数可以访问类A的私有成员。(D)类A中的非静态成员函数可以访问类A的私有成员。 9类A中有唯一的一个成员函数f,且f是公有的静态或非静态

18、成员函数,对于类A的一个对象a,执行语句 a.f(100);成功,那么f 的函数原型不可以是:B(A) A& f( int, int=50 ); (B) void f(int& ) ;(C) const A * f(const int ); (D) A f( const int&);10. 下面关于类的成员函数描述不正确的是:A(A) 静态成员函数内可以直接访问类的非静态成员数据(B) 静态成员函数内可以直接访问类的静态成员数据(C) 非静态成员函数可以直接访问类的非静态成员数据(D) 非静态成员函数可以直接访问类的静态成员数据(全局成员)二、判断正误,对于你认为错误的论述,说明原因或举出反例

19、。(每题2分,共20分)1. 重载流操作符 时,如果第一个参数的类型为ostream 和istream,那么这个重载函数既可以用于标准输入输出流,也可以用于文件流上。对,ostream 和istream是标准输入输出流、文件流、字符串流的基类2. 在同一个类中,可以定义重载的成员函数 void f(int);和virtual void f(int); 。错,这属于重复定义3. 抽象类不会产生实例,所以不需要有构造函数。错,被派生时需要它的构造函数4. 类A有一个非静态的成员函数f,其函数原型是:void A:f( ) const,则该函数被调用时,一定是通过类A或类A的某后裔类的一个用cons

20、t修饰符说明的常量对象调用的。错,常函数可以由变量对象或常量对象调用5. 异常必须在其产生的当前函数中捕获,而不能在外层函数中捕获该异常。错,可以在外层捕获,并且这是最常见的用法6. 只要程序中没有A a1 = a2; 和A a1(a2); 形式的代码,类A的拷贝构造函数就不会被调用。错,参数传递或函数返回时也调用拷贝构造函数7. 在protected继承方式下,派生类对象的指针不能直接转换成指向基类对象的指针。对,否则基类中的公有成员由不可见变为可见,权限被放大8. 若静态成员函数中调用了一个函数f,那么f 一定不是虚函数。对,静态成员函数不能是虚函数,因为虚函数入口需要在保存在对象中的虚函

21、数表中,而静态成员函数不属于对象。9. 若要实例化一个含有引用型数据成员的类,那么只能使用构造函数初始化列表来初始化该数据成员。对,没有别的办法10. 构造函数的函数体中,不能使用return语句;但在实现该类的自动类型转化函数时,必须有return 语句。对三、回答下列各题(每题4分,共20分)1. 举例说明static关键字的用法和相应目的(至少3种)。f() static int a; 函数体内的静态变量,每次调用该函数时值保持不变static int a; 全局的静态变量,约束作用域为所在文件class A static int a; A的静态成员,类似全局变量,需用A:a访问2. 举

22、例说明类的数据成员在哪些情况下必须在初始化列表中进行初始化(至少3种)。基类不提供无参的构造函数成员对象不提供无参的构造函数有常量成员或引用成员3. 举例说明虚拟继承的作用和目的。虚拟继承的目的是使基类在派生类中只保留一个副本从而避免二义性4. 举例说明成员函数A& f( ) const;和成员函数A& f( ); 的区别。A& f( ) const是常函数,隐含的this指针是常指针,因此在f中不能修改对象成员的值。举例略5. 有类A的对象a,任意给出一种解决方案,使得程序支持下面的表达式:a=10+a; class A A(int); /转换构造函数friend const A opera

23、tor+(const A,const A); /重载+;四、指出下列程序代码中存在的错误或不足,说明原因。(每题5分,共10分)1#includeclass A public: virtual A( ) virtual void f( ) coutA:f( )endl; virtual void g( ) coutA:g( )endl; ;class B:public Apublic: virtual void g( ) coutB:g( )endl; virtual void k( ) coutB:k( )f( ); p-g( ); p-k( ); delete p;答:函数k在A中没有定义

24、,执行p-k( );时要根据p的类型在A中查k的信息2#include#includeclass A;class B:public A public: B(const char* info) m_buf=new char256; strcpy(m_buf,info); B( ) delete m_buf; virtual void output( ) cout output( ); delete pa; 答:A的析构函数应定义为虚函数,否则B的析构函数不会被调用,m_buf也不会被释放五、写出下面程序的运行结果(每题5分,共10分) 1#include class A public: A( )

25、:count(1) virtual A( ) virtual A* Copy( ) const = 0; virtual void Out( ) const = 0;protected: int count;class B:public A public: B( ) -count; Out( ); virtual A* Copy( ) const B *p = new B(*this); +p-count; return p; virtual void Out( ) const cout count Out( ); a1 = a1-Copy( ); a1-Out( ); delete a1;

26、答:1210 -2#include class A public: A(int n):num(n) Out( ); A(const A& rhs):num(rhs.num) Out( ); void Out( ) coutnumendl; public: int num;class B:public A public: B(A& a) :obj(a),A(1) void Out( ) obj.Out( ); private: A obj;void main( ) A a(8); B b1(a); B b2(b1); b2.Out();答:818188-六、阅读下面两个类的定义和部分实现代码,完

27、成3个问题。(共10分)#includeclass A public: A(int n):value(n) void Display( ) const coutValue = valueendl; private: int value; class B public: B(int n); void Display( ) const aA.Display(); private: A aA;int main( ) B b1(1);b1.Display( );B b2(2);b2. Display( );return 0; 1. 3分实现类B的构造函数,使得程序的输出为:Value=1Value=2

28、答:B(int n):aA(n)23分若main函数中增加了语句B b3(b1); 针对本例,说明是否有必要以公有方式自定义并实现类B的拷贝构造函数,为什么?答:不需要,因为类B及基类A中不存在引用或指针成员,使用默认的拷贝构造函数就可以。3. 4分在不改动类A和main函数的前提下,以继承的方式重新定义并实现类B,使得程序的输出结果不变。答:class B:public A public: B(int n):A(n); void Display( ) const A:Display(); ;七、(共20分,每问题10分) 某程序员为了灵活地对各种的给定的曲线函数f(x)画出其曲线图形,设计并

29、部分实现了一个曲线类curve,该类的成员数据中,count代表坐标点的个数,pxs代表的数组存放这些坐标点的横坐标,pys代表的数组存放利用f(x)计算得到的这些坐标点的纵坐标。由于不同曲线的计算公式f(x)是不同的,该程序员希望曲线函数的种类可以通过继承curve类的方式任意增加,增加一个新的f(x)时不改变curve类中的内容,也不改变利用curve类进行图形绘制的算法。已部分完成的curve类定义和实现如下:class curve public:void setPxs( ) /*把获取的横坐标数据存放在pxs代表的数组中,并为count置值*/ double* getPxs( ) co

30、nst return pxs;int getCount( ) const return count;double* getPys( ) const ;private:double* pxs;double* pys;int count;1、请按照该程序员的设计意图给出成员函数getPys的完整实现。实现过程中,可以为curve类增加其它成员。可以假设setPxs函数已经完整实现,不需要考虑曲线的绘制和显示。答:class curve public:void setPxs( ) /*把获取的横坐标数据存放在pxs代表的数组中,并为count置值*/ double* getPxs( ) const

31、return pxs;int getCount( ) const return count;double* getPys( ) const ;virtual double f(double)=0;private:double* pxs;double* pys;int count;double* curve:getPys( ) const if(pys=NULL) pys=new doublecount;for(int i=0;istr; 执行时,从键盘输入:Microsoft Visual Studio 6.0!所得的结果是str=( )。A. Microsoft Visual Studio

32、6.0! B. MicrosoftC. Microsoft Visual D. Microsoft Visual Studio 6.04、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z=*);下面函数调用中,不合法的是( )。A. testDefaulParam(5); B. testDefaulParam(5,8);C. testDefaulParam(5,#); D. testDefaulParam(0,0,*);5、下列语句中,将函数int sum(int x, int y)正确重载的是( )。A. float sum(int

33、x, int y); B. int sum(int a, int b);C. float sum(float x, float y); D. double sum(int y, int x);6、下列表示引用的方法中,( )是正确的。已知:int a=1000;A. int &x=a; B. char &y; C. int &z=1000; D. float &t=&a;7、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( )。A. 内联函数 B. 重载函数 C. 递归调用 D. 嵌套调用8、下列有关C+类的说法中,不正确的是( )。A. 类是一种用户自定义的数

34、据类型B. 只有类中的成员函数或类的友元函数才能存取类中的私有成员C. 在类中,如果不做特别说明,所有成员的访问权限均为私有的D. 在类中,如果不做特别说明,所有成员的访问权限均为公用的9、已知X类,则当程序执行到语句:X array3;时,调用了( )次构造函数。A. 0 B. 1 C. 2 D. 310、下面说法中,正确的是( )A. 一个类只能定义一个构造函数,但可以定义多个析构函数B. 一个类只能定义一个析构函数,但可以定义多个构造函数C. 构造函数与析构函数同名,只要名字前加了一个求反符号()D. 构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以1

35、1、已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,( )是正确的。 A. void print( ) const; B. const void print( ); C. void const print( ); D. void print(const);12、下面描述中,表达错误的是( ) A. 公用继承时基类中的public成员在派生类中仍是public的B. 公用继承时基类中的private成员在派生类中仍是private的C. 公用继承时基类中的protected成员在派生类中仍是protected的D. 私有继承时基类中的public成员在派生类中是priva

36、te的13、设置虚基类的目的是( )。A. 简化程序 B. 消除二义性 C. 提高运行效率 D. 减少目标代码14、下面( )的叙述不符合赋值兼容规则。A. 派生类的对象可以赋值给基类的对象B. 基类的对象可以赋值给派生类的对象C. 派生类的对象可以初始化基类的对象D. 派生类的对象的地址可以赋值给指向基类的指针15、关于虚函数的描述中,( )是正确的。 A. 虚函数是一个static类型的成员函数 B. 虚函数是一个非成员函数 C. 基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数 D. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型16、下面关于友元的描述中,错误的是(

37、 )。A. 友元函数可以访问该类的私有数据成员B. 一个类的友元类中的成员函数都是这个类的友元函数C. 友元可以提高程序的运行效率D. 类与类之间的友元关系可以继承17、下列关于静态数据成员的说法,不正确的是( )。A. 类中定义的公用静态数据成员,可以通过类的对象来访问B. 类中定义的所有静态数据成员,都必须在类外初始化C. 静态数据成员不是所有对象所共用的D. 普通的成员函数可以直接访问类中的静态数据成员18、如果表达式+i*k中的“+”和“*”都是重载的友元运算符,若采用运算符函数调用格式,则表达式还可以表示为( )。A. operator*(i.operator+(),k) B. op

38、erator*(operator+(i),k)C. i.operator+().operator*(k) D. k.operator*(operator+(i)19、下面对模板的声明,正确的是( )。A. template B. templateC. template D. template20、下列的各类函数中,( )不是类的成员函数A. 构造函数 B. 析构函数 C. 友元函数 D. 复制构造函数二、填空题(前14个空,每空1分,后3个空,每空2分,共20分)1、类和对象的关系可表述为:类是对象的 ,而对象则是类的 。2、静态成员函数没有隐含的 ,所以,在C+程序中,静态成员函数主要用来访

39、问静态数据成员,而不访问非静态成员。3、在图1中,A,B,C,D,E,F均是类,其中属于单继承的派生类有 ,属于多继承的派生类有 ,类F的基类有 ,类A的派生类有 。ABCDEF图1 类的继承层次图4、如果只想保留公共基类的一个复制,就必须使用关键字 把这个公共基类声明为虚基类。5、从实现的角度来讲,多态性可以划分为两类: 和 。6、如果一个类包含一个或多个纯虚函数,则该类称为 。7、若要把void fun()定义为类A的友元函数,则应在类A的定义中加入语句 。8、列出C+中的两种代码复用方式: 和 。9、析构函数的作用是 。10、假定A是一个类名,则该类的拷贝构造函数的原型说明语句为: 。1

40、1、后置自增运算符“+”重载为类的成员函数(设类名为A)的形式为: 。三、阅读下面4个程序,写出程序运行时输出的结果。(共13分)1、#includeusing namespace std;void fun(int &a, int &b) int p; p=a; a=b; b=p;void exchange(int &a, int &b, int &c) if( ab ) fun(a, b); if( ac ) fun(a, c); if( bc ) fun(b, c);int main() int a=12,b=89,c=56; exchange(a, b, c); couta=a,b=b,

41、c=cendl; return 0;2、#include using namespace std;class A public: A( ) cout A; ;class B public:B( ) cout B; ;class C: public A public: C( ) cout C; private: B b;int main ( ) C obj; return 0; 3、#include using namespace std;class Apublic:A()coutA:A() called.n;virtual A()coutA:A() called.n; class B: pub

42、lic Apublic:B(int i) coutB:B() called.n;buf=new chari;virtual B() delete buf; coutB:B() called.n;private:char *buf;int main() A *a=new B(15);delete a;return 0;4、#include using namespace std;class Apublic:void f()coutCall As function f()endl;class Bpublic:void f() coutCall Bs function f()endl;void g(

43、) coutCall Bs function g()endl; ;class C: public A, public Bpublic:void g()coutCall Cs function g()endl;int main()C cc;cc.B:f(); cc.B:g();cc.g();return 0;四、编程题(27分)1、(10分) 已知复数类Complex的声明如下:class Complexpublic: Complex(); /无参构造函数 Complex(double ); /转换构造函数Complex(double, double); /有两个形参的构造函数 friend Complex operator+(Complex&, Complex&); /对“+”运算符进行重载 friend ostream& operator(ostream&, Complex&); /对“(istream&, Complex&); /对“”运算符进行重载private: double real,imag;要求:(1)写出该类的所有构造

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论