c++试验题教学内容_第1页
c++试验题教学内容_第2页
c++试验题教学内容_第3页
c++试验题教学内容_第4页
c++试验题教学内容_第5页
已阅读5页,还剩38页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、c+实验题 精品文档 实验八 函数递归算法 一、 实验目的 1、掌握函数的嵌套调用和递归调用 2、掌握递归算法 二、 实验内容 1 函数嵌套调用是在被调用的函数内在调用其他函数,而递归调用时在被调 用函数内调用自身。 嵌套调用的层数没有限制,而递归调用函数必须包含使递归终止的语句。 范例:求组合数 Cnm=n!/m! (n-m)! (m为指数) 【分析】 求组合数要用到求阶乘,可将求阶乘定义为一个函数,在求组合数的 函数中嵌套调用阶乘函数。 由于 n!=n*(n-1)! ,求阶乘是一个典型的递归算法,在此用递归方法实现。 【程序】 收集于网络,如有侵权请联系管理员删除 精品文档 【注意】 (1

2、) 因为阶乘极易发生溢出,所以 n 最大值取 12,否则运算中会发生溢出。 (2) 在函数内定义局部变量时,变量名不应与函数名相同。例如,在A 行,不 可定义变量名为 com; 在 B 行不可定义变量名为 fac ;否则程序编译会出错误。 (3 )还有一种常见错误,例如: long fac(int i) if(i=0|i=1) fac(i)=1; else fac(i)=i*fac(i-1); return fac(i); 编译此程序,会出现提示信息 Left_value required 的错误,请思考这是为什 么?然后修改正确。 收集于网络,如有侵权请联系管理员删除 精品文档 3、用递归函

3、数实现勒让德多项式 在主函数中求 P4(1.5) 。 选做题 4、定义递归函数实现 Ackman函数 其中 m,n 为正整数。 设计程 序求 Acm(2,1) , Acm(3,2) 。 实验九 函数的重载和变量的作用域 一、实验目的 1、了解内联函数、重载函数、带默认参数函数的定义及使用方法。 2、掌握作用域的概念、变量的存储类型及它们之间的差别。 3、掌握程序的多文件组织。 二、实验内容 1、重载函数允许不同的函数使用相同的名字,这使得完成类似的任务时可以 使用相同的函数名。 范例:编写几个计算面积的函数,分别计算圆、矩形、梯形和三角形的面积, 计算边长为 1 的正方形及其内切圆、内接等腰三

4、角形和等腰梯形面积。 函数原型如下: double area(double radius=0); / 圆面积,参数为半径,默认参数为 0,表示点面积 double area(double a, double b); 收集于网络,如有侵权请联系管理员删除 精品文档 / 计算矩形面积,参数为长和宽 double area(double a, double b, double h); / 计算梯形面积,参数为两底和高 double area(double a, double b, double c, int); / 计算三角形面积,参数为三边长, int 型参数起标示作用,以区别于梯形, 不参加计算

5、。 要求】 收集于网络,如有侵权请联系管理员删除 精品文档 ( 1) 编译运行程序,并记录运行结果,注意函数调用时,实参与形参之间的 关系(包括类型、个数)。 ( 2) 若将计算矩形面积的函数原型改为 double area(double a=0, double b=0) ;重新编译运行情况会怎样?为什么? ( 3) 若将计算三角形面积的函数原型改为 double area(double a, double b,double c); 程序还能正确运行吗?为什么? ( 4) 若将计算三角形面积的函数原型改为 double area(double a, double b,double c=0 ,i

6、nt); 程序还能正确运行吗?为什么? 2、编程:将上题以多文件方式组织,在 area.h 中声明各个 area( ) 函数原 型,在 area.cpp 中定义函数,然后在 Exp9_2.cpp 中包含 area.h, 并定义 main( ) 函数并执行。 【注意:】 VC+6.0中以 c 开头的头文件,如 不在标准名字空间中,所以 area.cpp 中不可以加 using namespace std; 3、范例:全局变量、局部变量和静态局部变量的应用示例。 【要求】 (1) 分析并写出下列程序的执行结果,然后输入计算机执行,比较分析结果与 执行结果。如果两结果不相同请分析原因。 收集于网络,

7、如有侵权请联系管理员删除 精品文档 4、设计两个重载函数,分别求两个整数相除的余数和两个实数相除的余数。两 个实数求余定义为实数四舍五入取整后相除的余数。 实验十 类与对象的基本概念 一、 实验目的 类是 C+扩展数据类型,可以封装不同类型的数据成员和函数成员。类是 面向对象程序设计的基础。本次实验内容包括面向对象的基本概念、构造函数 与析构函数,从实际问题抽象出类等,通过实验要求掌握以下内容: 1、掌握面向对象的基本概念和类的定义方法。 2、掌握类成员的访问权限以及访问类成员的方法。 3、掌握内联函数和默认函数。 收集于网络,如有侵权请联系管理员删除 精品文档 4、掌握构造函数和析构函数的意

8、义及使用方法。 二、 实验内容 1、范例:设计并测试一个矩形类( Rectangle )。属性为矩形的左下角与右上 角的坐标,矩形水平放置。操作为计算矩形的周长和面积。 程序】 收集于网络,如有侵权请联系管理员删除 精品文档 【要求】 ( 1) 将 Rectangle(double l=0, double t=0, double r=0, double b=0); 改为 Rectangle(double l, double t, double r, double b); 程序仍能正确运行吗?为什么? (2) 注意成员函数 void Show( ) 、 double Area () 、 doub

9、le Perimeter( ) 的使用,因为在第三章如果需编写类似功能的一般函数是需要带参数(形参) 的。 而在此处作为类的成员函数又不需要带参数。思考为什么? ( 3) 理解 void Assign(double l,double t,double r,double b);函数的作 用。将 Rectangle(double l=0, double t=0, double r=0, double b=0); 改为 Rectangle(double l, double t, double r, double b);这时,有人认为 Rectangle(double l, double t, dou

10、ble r, double b)和 void Assign(double l,double t, double r,double b) 的功能相同,那么 Assign 函数能否去掉呢?请试一试, 结果会怎样? 收集于网络,如有侵权请联系管理员删除 精品文档 2、定义一个圆类( Circle ),要求用两种方法定义: 方法一: 要求属性为半径,操作为计算圆的周长和面积。 方法二: 要求属性为半径( radius )、圆周长和面积,操作为输入半径,并计 算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数, 缺省值为 0,周长和面积在构造函数中生成)和拷贝构造函数。 3、设计一个学校

11、在册人员类( Person)。数据成员包括:身份证号 (IdPerson ),姓 名( Name),性别( Sex),生日( Birthday )和家庭住址 ( HomeAddress)。成员函数包 括人员信息的录入和显示等。 选做题 4 、编程建立一个分数类。分数类的数据成员包括分子和分母,操作 包括约分、通分、加、减、乘、除、求倒数、比较、显示和输入。分数类的定 义如下: 【要求】完成上述所有成员函数并进行检验。 选做题 5 、集合是具有同一属性(共性)而又能互相区别(个性)的多个成 员汇集起来的整体,构成集合的每个成员称为集合的元素,元素间没有顺序关 系。 例如,所有的大写英文字母是一个

12、集合,它包括 26 个元素: A、B、 Z。不 包含任何元素的集合称为空集合。 收集于网络,如有侵权请联系管理员删除 精品文档 【实验要求 】 自定义一个集合类 set ,采用数组存放集合的元素。自定义集合运算包括: 1) 判断元素 elem 是否为集合 set 的元素。 2) 为集合添加一个元素 elem。 3) 从集合中删除一个元素 elem。 4) 复制一个集合,其元素与原集合完全一样。 5) 显示集合中的所有元素。 6) 求两个集合中相同的元素,即求两个集合的交集。 7) 求两个集合中所有的元素,即求两个集合的并集。 8) 判断两集合包含的元素是否完全相同。 9) 判断一个集合是否被包

13、含在另一个集合之中,即是否为另一个集合的子集 */ 【程序】 收集于网络,如有侵权请联系管理员删除 精品文档 收集于网络,如有侵权请联系管理员删除 精品文档 收集于网络,如有侵权请联系管理员删除 精品文档 收集于网络,如有侵权请联系管理员删除 精品文档 收集于网络,如有侵权请联系管理员删除 精品文档 cout 删除部分元素后: endl; couts; s.print(); couts1; s1.print(); couts2; s2.print(); return 0; 收集于网络,如有侵权请联系管理员删除 精品文档 实验十一 引用与复制构造函数 . 实验目的 1、掌握引用的概念及应用,掌握

14、引用作为函数参数的方法。 2 、 学会编写与 应用复制构造函数。 实验内容 1、范例:编写一个函数,其原型为: void Index(int a, int n,int 改为 void Index(int a, int n,int sub); 程序还能正确执行吗?试分析其结果并解释。 (3) 在上述修改的基础上如果结果不正确,怎样修改可以同样得到正确的结果。 2、一个声明为返回引用的函数,既可以作为右值出现在赋值号的右边,也可以 作为左值出现在赋值号的左边。下面是一个函数调用本身作为左值的例子。 收集于网络,如有侵权请联系管理员删除 精品文档 【要求】 修改程序使用非返回引用的函数实现上述功能。

15、试分析两者之间的区别 3、为矩形类定义复制构造函数。矩形类见主教材的例 4.2. 在 rect.h 头文件中的类 rect 定义中加入以下代码: Rectangle(Rectangle 在 rect.cpp 文件中添加以下代码: Rectangle : Rectangle (Rectangle top=rec.top; right=rec.right ; bottom=rec.bottom ; / 复制构造函数 在 main( ) 函数中添加以下代码: Rectangle rect2(rect1); cout ”由复制构造函数生成的 rect2: ” endl; 收集于网络,如有侵权请联系管理

16、员删除 精品文档 rect2.Show( ); 这里的复制构造函数是默认的按成员语义定义的,可以不写,系统会自动提 供。 选作题 4、编程:将实验十中的分数类的分数类型参数改为引用,并添加复 制构造函数。 实验十二 运算符重载 一、 实验目的 1、掌握运算符重载为成员函数的方法 2、理解友元函数和友元类。 3、掌握运算符重载为友元函数的方法。 4、使用静态数据成员。 二、 实验内容 1、为主教材中例 4.2 的 Rectangle 类增加加减复合赋值和加减运算符重载函 数。加减复合赋值语义定义为固定长方形的左上角, 对右下角的坐标进行加减运算,使新矩形的长宽为原两矩形长宽之和或差,对 加和减复

17、合赋值定义为成员函数。两个矩形加减运算定义为友元函数。 【要求】 (1) 主程序如下,请完成类的定义及相关成员函数和友元函数的实 现,并分别保存为 rect.h 文件和 rect.cpp 文件。 收集于网络,如有侵权请联系管理员删除 精品文档 rect2.Show(); return 0; 2、编程:修改上题,要求如下: (1)将加、减运算重载为成员函数。 ( 2)为矩形类在增加一个静态数据成员 Counter, 并统计共产生了多少个矩形 对象。 收集于网络,如有侵权请联系管理员删除 精品文档 为 Counter 添加定义、赋初值以及随程序运行而变化的代码,并在main() 函数 中将其输出。

18、注意静态数据成员应该有定义性说明。 3、为复数类( Complex)增加重载的运算 - 、-=、*=和/=。分别使用成员函数和 友元函数各做一遍。并测试。 实验十三 数组与多维数组 一、 实验目的 1、 熟练应用数组与多维数组 2、掌握数组作为函数参数的函数定义及调用方法。 二、 实验内容 1 范例:求一个 34 矩阵中的最大元素,将求矩阵中的最大元素的过程定 义为一个函数。函数的第一个参数是矩阵本身,第二个参数是第一维的大小。 这种方法的优点是使函数具有通用性,即无论一个矩阵的第一维是多大,只要 该矩阵的第二维是 4 个元素,都可用该函数求最大元素; 也可用该函数求一个矩阵开始几行中的最大元

19、素。 【程序】 收集于网络,如有侵权请联系管理员删除 精品文档 【要求】 修改上述程序使其不仅求矩阵中的最大元素而且还能求最大元素的行列值。 2 打印杨辉三角形( 10 行)。使用二维数组并利用每个系数等于其上两系数 之和。 3 分别编写实现下列字符数组处理的函数,用数组作为参数: ( 1) void trim(char s ) /删除字符串 s 的尾部空格。 ( 2) void lefstring(char s1 , char s2 ,int n) / 得到指定字符串 s1 中前 n 个字符的子串 s2. 收集于网络,如有侵权请联系管理员删除 精品文档 3) int index(char s

20、1 , char s2 ) / 检查字符串 s2 是否为字符串 s1 的子串,根据查找结果返回 s2 在 s1 中的开 始位置,如果 s2 不是 s1 的子串,则返回 -1 主程序如下,请编写相应函数。 ), 将十进制整数 n 转换 4. 编程:编写函数 itoa0 ( int n, char s , int b 为以十六进制为基数的数字字符数组。 实验十四 指针与数组 收集于网络,如有侵权请联系管理员删除 精品文档 一、 实验目的 数组在处理同类型的多个数据问题时非常有效,是 C+的重要数据类型。指针 是 C+中最灵活、最有特色的部分,没有熟练掌握指针,则不能说学会了C+。 指针的教学重点应

21、放在数组与指针之间的密切关系上。通过本实验要求掌握以 下内容: 1. 指针的定义和使用方法 2. 指针与数组的相互关系 3. 指针或数组作为函数参数的函数定义及调用方法。 4. C 字符串及其运算 5. 标准字符串 二、 实验内容 1范例:判断用户输入的 C字符串是否为 回文,所谓 回文是指顺读和反读 都一样的串, 例如串 12321 、madam。 【程序】 收集于网络,如有侵权请联系管理员删除 精品文档 【要求】 (1)重新定义回文为:滤去所有非字母字符(包括空格)后,不考虑字母的 大小写,从左向右和从右向左读都相同的词或短语。 如, ”Madam, Im adam” 和“Golf ,No

22、 Sir ,prefer prison flog!” (2)编写一个判断输入字符串是否为回文的函数,并使用指针形式访问数组 元素。 2. 范例:按一定的规则可以将一个字符串经加密转换为一个新的串,例如加密 的简单方法是当为 a y 的小写字母时用后一个字母代替前一个字母, 收集于网络,如有侵权请联系管理员删除 精品文档 其中z 变换为a ,其他字符时不变。 例如:原串为 This is a secret code! 加密后的串为 Tijt jt b tfdsfu dpef! 编写一个程序对输入串加密,输出加密前和加密后的串,再将加密后的字符串 解密输出。主函数如下,请编写加密函数和解密函数。

23、【程序】 int main() char st=This is a secret code!; cout st endl; secret(st); cout st endl; desecret(st); cout st endl; return 0; 【要求】 (1)阅读程序,如果将两个函数中 else if(*s=122) *s=a;和 else if(*s=97) *s=z;处的 else 去掉,对程序有何影响?使用数据 ”I am a boy ! ” 重新测试看看。 收集于网络,如有侵权请联系管理员删除 精品文档 128 ( 2) 仿造上例编写程序:设计一个带密钥的加密算法,例如密钥可以

24、是一个 常数,字符串加密的方法是将每个字符的 ASCII 码值加上该常数,然后对 求模。 要求以密钥将加密的字符串加密输出,再以相同的密钥将加密字符串解密输 出。 3编程:重新编写实验十三中题 3 的字符串处理函数,用指针作为参数。 实验十五 动态内存分配与深复制 一、 实验目的 1 理解运行时内存分配的概念,掌握自由存储区内存动态分配的方法。 2 理解内部包含为指针动态分配内存的类对象复制时的浅复制和深复制的概 念,会编写深复制构造函数和赋值复制运算符。 二、 实验内容 1 编程: 仿照标准字符串类 string ,采用动态字符数组来改造主教材 5.6.3 节中的自定义字符串类,要求可自动适

25、应不同的串长度。 【提示】 新的自定义字符串类 mysring 如下: class mystring char* str; int maxsize; int last; public: mystring(); 收集于网络,如有侵权请联系管理员删除 精品文档 mystring(char *s); mystring(mystring mystring(); void show(); char mystring mystring /这里重载的 =是把 C 风格字符串赋给 mystring mystring operator+(mystring mystring operator+=(mystring

26、 bool operator(mystring bool operator=(mystring ; 请读者完成各函数的定义,并测试。 【分析】 本题的难点是判断串长是否超出串的最大允许长度,以及怎样重新分配字符数 组,并保留原来的字符数组。 2为使用本实验第 1 题所定义的自定义字符串类的学生类和使用动态 C风格字 符串的学生类编写复制构造函数。 对比两者的差别,主要是复制构造函数 student(student coutcl3 圆面积: cl3.Area() endl; cl3.Show(); cout 线面积: ln1. Area()t线长度: ln1. GetLength() endl;

27、 ln1.Show(); ln2.Show(); return 0; 【注意】 收集于网络,如有侵权请联系管理员删除 精品文档 在 Point 类中 , 将 Line 类定义为友元,便于在 Line 类中访问; Point 类的 x 和 y 定义为 Protected 访问权限,便于派生类访问。 注意派生类的构造函数中对基类数据成员的初始化方法(即 Circle(double xv,double yv,double vv):Point(xv,yv) ), 以及构造函数中对对象成员的初始化方法(即 Line(double xv1,double yv1,double xv2,double yv2)

28、 : start(xv1,yv1),end(xv2,yv2) ) 【要求】 ( 1) 建立工程,录入上述程序,改变数据实验之。 ( 2) 修改 Point 类的数据成员 x ,y 的访问权限为 private ,再运行,结果 如何? ( 3) 如果不将 Line 类设为 Point 类的友元,应采取什么措施?为哪个类增 加数据或函数成员? 2 编程:多层派生练习,由上题 Point 类和 Circle 类继续派生出 Cylinder 类。要求计算圆柱体的底面积、侧面积、全面积和体积 实验十七 多重继承与虚基类 一、 实验目的 1 理解多重继承的概念 收集于网络,如有侵权请联系管理员删除 精品文

29、档 2 理解为了避免同一基类出现多个重复的副本而采用的虚基类概念和虚拟继 承。 实验内容 1编程:已知时间类 TimeType 和日期类 DateType,先通过多重继承定义日期 时间类 DateTimeType1, 然后使用聚合方式定义功能完全一样的日期时间类 DateTimeType2。 时间类的 定义如下: year=y; 收集于网络,如有侵权请联系管理员删除 精品文档 void display() cout month/ day/ year endl; void SetDate(int mo,int d,int y) month=mo; day=d; year=y; ; 【要求】请使用

30、两种方法定义日期时间类,并测试之。 2由汽车类派生出轿车类和卡车类,再由轿车类和卡车类多重派生出皮卡类。 所谓皮卡指的是将轿车的后备箱改为卡车似的后厢,可以兼运少量货物。 汽车类可以说明为虚基类以避免在皮卡类中出现两组汽车类的数据。请编写程 序实现上述各类,并测试之。 【要求】 (1)修改上述程序不使用虚基类实现,应采取什么措施?结果会有何不 同? 收集于网络,如有侵权请联系管理员删除 精品文档 实验十八 虚函数与多态、纯虚函数 一. 实验目的 1. 在掌握继承与派生关系的基础上,进一步理解虚函数与多态性的关系,实现 运行时的多态。 2. 学会定义和使用纯虚函数 二、实验内容 1范例:了解 单

31、界面,多方法 的概念。现有称为 figure 的基类,存放了各 二维对象(三角形、矩形和圆形三个类)的各维数据, set_dim() 设置数据,是 标准成员函数。 show_area() 为虚函数,因为计算各对象的面积的方法是不同的。 【程序】 #include using namespace std; class figure protected: double x,y; public: void set_dim(double i,double j=0) x=i; y=j; 收集于网络,如有侵权请联系管理员删除 精品文档 virtual void show_area() coutNo are

32、a computation defined for this class.n; ; class triangle:public figure public: void show_area() coutTriangle with height x and base y has an area of x*0.5*y endl; ; class square:public figure public: void show_area() coutSquare with dimensions x and y has an area of x*y endl; ; class circle:public f

33、igure public: void show_area() coutCircle with radius x has an area of 3.14159*x*xset_dim(10.0,5.0); p-show_area(); p= p-set_dim(10.0,5.0); p-show_area(); p= p-set_dim(10.0); p-show_area(); return 0; 【要求】 ( 1) 建立工程,录入上述程序,调试运行并记录运行结果。 ( 2) 修改上述程序,将 virtual void show_area()中的 virtual 去掉,重新 调试运行观察结果有何

34、变化?为什么? ( 3) 修改上述程序入口函数,使其动态建立三角形、矩形和圆形3 个对象, 通过基类指针访问这 3 个对象,然后释放这 3 个对象。 (4) 修改类定义中的析构函数,使之适应用户动态定义对 2 、使用纯虚函数 和抽象类对实验十六中的题 1 进行改进。 【要求】先定义一个抽象类 Element, 提供显示、求面积等公共接口(虚函 数),派生出 Point 、Line 、Circle 等图形元素类,并重新定义( override ) 这些虚函数,完成各自的任务。 收集于网络,如有侵权请联系管理员删除 精品文档 在这里, Element 是抽象基类,它不能提供具体的显示操作,应将其成

35、员函数 定义为纯虚函数。只有采用指向基类的指针或对基类的引用进行调用,实现的 才是动态绑定, 完成运行时的多态性。 3、编写计算定积分的类。采用纯虚函数和抽象基类往往是建立一个类的框架, 并非是要建立一个完整的类。要求首先定义定积分抽象基类 basic_inte , 该基类数据包括积分左右边界、划分区间的数量、步长和定积分值,同时包括 一个计算积分的纯虚函数: virtual void integrate()=0。 第二步,由该基类派生出矩形法、梯形法和辛普生定积分类: rectangle 、 ladder 和 simpson。 第三步,编写一个积分函数,以指向定积分抽象基类 basic_in

36、te 的指针为参 数,实现动态的多态性。 实验十九 输入/ 输出与重载 实验目的 1、掌握输入、输出的格式控制。理解类 ios 提供的公有的无名枚举类型的格 式控制符及怎样使用类 ios 的公有接口函数实现控制。 2、掌握流操作子 3、熟悉标准设备的输入 / 输出。特别是 cin 的使用细则,提高输入的稳健性。 4、掌握输入 / 输出运算符的重载。 二、 实验内容 1、编程:按下列要求实现数据的输入 / 输出: a) 分别以左和右对齐方式输出整数,域宽为 12; 收集于网络,如有侵权请联系管理员删除 精品文档 b) 以八进制、十进制、十六进制输入输出整数; c) 实现浮点数的指数格式和定点格式

37、的输入输出,并指定精度,按你所见到的 实际情况进行调整,直到满意; d) 把字符串读入字符型数组变量中,从键盘输入,要求输入串的空格也全部读 入,以回车换行符结束; e) 以上要求用流成员函数和流操作子各做一遍。 2、范例:从输入流中分析出数字串。 #include using namespace std; int main() int getnum(char *); char buf100; while (getnum(buf) cout Digit string is :; cout buf ” 实验二十 文件 一、 实验目的 1. 掌握文件流的打开、读 / 写与关闭。 2. 掌握文件的随机访问方法。 收集于网络,如有侵权请联系管理员删除 精品文档 3. 学会使用构造函数打开文件来创建对象,使用析构函数撤销对象并存入文 件。 二、 实验内容 1. 建立一个应用程序,包括数据输入、存盘、读盘、操作数据后存储。通过随 机数函数 rand() 产生 20 个整数,逐个将这些数以二进制方式写入文件 file.dat 中。 然后读出这些数,在内存中对它们进行增序排序,再将排序后的数以文本方式 逐个写入 file.o

温馨提示

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

评论

0/150

提交评论