《C#程序设计》实验指导书及实验参考代码.doc_第1页
《C#程序设计》实验指导书及实验参考代码.doc_第2页
《C#程序设计》实验指导书及实验参考代码.doc_第3页
《C#程序设计》实验指导书及实验参考代码.doc_第4页
《C#程序设计》实验指导书及实验参考代码.doc_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

C#程序设计实 验 指 导 书一实验目的l 了解面向对象的程序设计的基本概念和使用类/对象进行程序设计的基本思想。l 了解和使用C程序设计语言面向对象编程环境Microsoft Visual Studio .NET 2003/2005。l 熟悉集成开发环境Microsoft Visual Studio .NET 2003/2005的基本命令及功能键,熟悉常用功能菜单命令。l 学习完整的程序开发过程(编辑、编译、生成、运行和调试等),先期掌握程序设计的基本的调试技巧。l 通过实验达到较好掌握变量常量、标识符、运算符、关键字、表达式、数据类型等基本知识的目的。l 通过实验掌握分支多分支结构和循环结构程序设计。l 灵活使用数组、字符串和文件操作。l 深入理解C中类的基本概念。l 应对类的封装、继承和多态性有较深刻的认识。l 熟练地运用C语言进行面向对象的程序设计,并能编写小型的面向对象应用程序;l 养成良好的面向对象程序设计风格,后期能够灵活掌握面向对象程序设计和调试的技巧;l 培养学生搜集资料、阅读资料和利用资料的能力;l 培养学生的自学能力。l 培养学生的团队协作精神和创新精神;l 培养学生学习的主动性、创造性。l 培养学生观察问题、思考问题、分析问题的综合能力。二实验要求1实验过程中,要严格要求自己,树立严密、严谨的科学态度,必须按时、保质、保量完成实验任务。2小组成员之间,既要分工明确,又要密切合作,培养良好的互助、协作精神。3实验期间,严格遵守学校的规章制度,不得迟到、早退、旷课。4要求学生在机房上机的时间不低于2学时,并且要求一人一机。学生上机时间可以根据具体情况进行适当增减。5实验前,学生应进行上机准备工作,并尝试实验例题的程序设计分析和编码。6上机实验先检查计算机的完好情况,发现阶段问题及时报告。75-6人为一小组,每一小组的成员可一起讨论程序的功能、类结构设计,允许同一小组的成员采用相同的类结构。8每一小组的成员算法设计,程序编写、调试要求独立完成,小组成员间编写的程序代码雷同的现象,小型实验题不允许高于70%,大型实验题不允许高于60%。三、实验过程1. 进入Microsoft Visual Studio .NET 2003的C#语言编程环境;2. 编写的C源程序;3. 检查输入的程序是否有错,包括输入时打错的字符和编程中的逻辑错误,对错误及时纠正;4. 进行编译生成操作,如果在编译生成过程中发现错误,屏幕上会出现“出错信息”,根据出错提示找到出错位置和原因,加以改正,再进行编译如此反复,直到顺利通过编译生成为止;5. 运行调试程序,分析运行结果是否合理和正确,分析调试过程中,锻炼分析问题解决问题能力;6. 在运行时要注意,当输入不同的数据时所得的结果是否正确,特别要注意一些特殊值,如边缘数据等;输入的数据要考虑各种可能情况;7. 实验过程中做好实验数据的记录;8. 实验后,应根据实验过程整理实验数据记录,并写出实验报告。实验一 变量的定义和使用一、实验目的1. 熟悉Microsoft Visual Studio .NET 2003的C#语言编程环境;2. 掌握C#的数据类型3. 掌握C#的常用数据类型的变量定义4. 掌握常用类型数据的转换5. 熟悉C#的运算符6. 熟悉C#的表达式二、实验内容1. 布尔类型用关键字bool表示,别名为System.Booolean,布尔类型有两个值,为真true,为假false;2. 字符类型ASCII(America Standard Code for Information Interchange)美国信息交换标准码是计算机最先使用的成熟的编码。ASCII码是七位编码,共128个。可编写显示ASCII码,其中部分ASCII码是用于控制的不可见编码。3. 结构类型定义结构类型的关键字是struct。4. 枚举类型程序设计最终是要用来解决人们的现实问题,现实生活中往往存在有这样一些常量的集合,如一周有七天,从星期日至星期六;一个年有十二个月,从一月至十二月等。而这些常量可以赋值给哪一种类型变量呢?大家可能想到字符串型。但字符串型是发散了,也就是说,字符串型可以:string week = “Sunday”;week = “out of week”;无法限制week变量取值在集合Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday中,为了使程序设计简单方便,C#设计了一种类型将这些常量的集合建立一种类型。使其能够用来方便解决一些实际问题。这种类型就是枚举类型。枚举类型是一组命名常量的集合。三、实验步骤1. 编写简单的布尔数据类型程序实验例题一:输入一个正整数,判断数的奇偶性。2. 编写简单的字符数据类型程序实验例题二:编写程序,打印26个大写的英文字母。3. 编写简单的结构数据类型程序实验例题三:利用简单类型编写程序,简单处理一个人的个人信息。实验例题四:利用结构类型编写程序,简单处理一个人的个人信息。4. 编写简单的枚举数据类型程序实验例题五:简单利用枚举类型编写程序,设置一周的七天。实验二 分支程序设计一、实验目的1. 进一步熟悉在.NET环境,进行C#分支程序设计;2. 掌握if语句的使用;3. 掌握switch语句的使用。二、实验内容1. 编写if分支语句程序if语句控制流程:if语句也称为分支语句,if语句的一般格式:if (逻辑表达式) /当逻辑表达式为true时,执行的语句块(真语句块)else /当逻辑表达式为false时,执行的语句块(假语句块)2. 编写switch语句程序switch语句的一般格式:switch(表达式)case 常量1:语句块1;break;case 常量2:语句块2;break; case 常量n:语句块n;break;default:语句块;break; 三、实验步骤1. 编写if分支语句程序实验例题1:编写程序,输入一个正整数,判断该数的奇偶性(直接用布尔表达式实现)。实验例题2:编写程序,根据学生成绩分别给出不同的评价(最好选择if嵌套的方式)。实验例题3:编写程序,用if嵌套的方式,根据一个人的年龄,给出不同的判断结果。2. 编写switch语句程序实验例题4:使用switch语句编写程序,输入0至10之间的整数,判断该数的奇偶性。实验例题5:使用switch语句编写程序,按五分制输入学生的分数,对成绩给出不同的评价。实验三 循环程序设计一、实验目的1. 进一步熟悉.NET环境,进行C循环程序设计;2. 掌握while、do-while循环语句的使用;3. 掌握for、foreach循环语句的使用。二、实验内容1. 编写while语句循环程序while 循环语句的格式: while(逻辑表达式) /循环体 2. 编写do-while语句循环程序dowhile 循环语句的格式: do /循环体 while ( 循环判断逻辑表达式 );3. 编写for语句循环程序for 循环语句格式:for (初始化;循环判断;循环条件修改) /for循环语句循环体4. 编写foreach语句循环程序foreach 循环语句格式:foreach (迭代类型 迭代变量名 in 集合) /foreach语句循环体三、实验步骤1. 编写while语句循环程序实验例题1:使用while语句编写程序,计算从1加至100 的值。实验例题2:使用while语句编写程序,在数组中找出中大数。2. 编写do-while语句循环程序实验例题3:使用do-while语句编写程序,对成绩的输入进行有效性检查,如超出范围重新输入成绩。3. 编写for语句循环程序实验例题4:使用for语句编写程序,求一个数的阶乘(n!)。实验例题5:使用for语句编写程序,打印出斐波纳契(Fibonacci)数列的前20项。4. 编写foreach语句循环程序实验例题6:使用foreach语句编写程序,输出数组元数的值。实验例题7:使用foreach语句编写程序,显示输入的字符串中字符a和其他字符出现的次数。实验四 跳转程序设计一、实验目的1. 进一步熟悉在.NET环境,进行C跳转语句程序设计;2. 掌握break跳转语句的使用及与分支、循环语句的配合使用;3. 掌握continue跳转语句的使用及与循环语句的配合使用;4. 了解goto跳转语句的使用。二、实验内容1. 编写break语句程序break语句格式:break; 程序执行到break语句将直接退出当前所在的循环或switch语句,如果 break 语句不是由循环或switch语句所封闭(try块除外),则会发生编译错误。2. 编写continue语句程序continue语句格式:continue;程序执行至continue 语句将结束当前所在的循环语句的本轮循环,如果continue语句不是由循环语句所封闭(try块除外),则会发生编译错误。3. 编写goto语句程序goto语句的一般格式: goto 标号;goto语句可以直接跳转到程序中用标号指定的另一行。三、实验步骤1. 编写break语句程序实验例题1:使用break语句编写程序,判断一个数是否为素数。实验例题2:使用break语句编写程序,打印输出小于100的所有素数。2. 编写continue语句程序实验例题3:使用continue语句编写程序,打印数组中小于0的数。3. 编写goto语句程序实验例题4:使用goto语句编写程序,输入身份证号码判别男女。实验五 方法和方法参数一、实验目的1. 进一步熟悉在.NET环境,进行C方法和方法参数程序设计;2. 掌握方法的定义和使用;3. 掌握方法的参数的合理使用。二、实验内容1. 编写方法的定义和方法的调用程序;方法的定义格式:修饰符 返回类型 方法名(形式参数表) /方法体方法的调用格式: 类名或实例名.方法名( 实际参数表 )2. 编写方法参数的合理使用程序;方法参数的三个关键字 ref,out 和 params。ref,out关键字用于方法参数的引用(地址)传递。ref 将引用和引用中的数据都传递,out将只传递引用,不传递引用中的数据。params关键字用于方法参数个数的可变长度传递,即方法实参的个数可以不同。三、实验步骤1. 编写方法的定义和方法的调用程序实验例题1:使用方法编程,求两个整数之和。要求方法为静态方法,程序只一个类。实验例题2:使用方法编程,求两个整数之和。要求方法为实例方法,程序只一个类。实验例题3:使用方法编程,求两个整数之和。要求方法不在同一个类,通过类调用方法。实验例题4:使用方法编程,求两个整数之和。要求方法不在同一个类,通过实例对象调用方法。2. 编写方法参数的合理使用程序问题:录入如下程序,执行后,仔细观察程序的结果,并分析程序完成的交换功能为什么不能实现?public class MyClass public static void Main() int a = 4;int b = 9;Swap(a,b); /将a,b变量的作为参数,只进行a和b的值传递System.Console.WriteLine(a = +a+ , b = +b);/x,y接收a和b传来的值public static void Swap(int x,int y)int temp;temp = x; x = y; y = temp;程序执行后,输出:x = 4 , y = 9x = 9 , y = 4a = 4 , b = 9Press any key to continue实验例题5:使用方法参数ref编写程序,用方法完成两个数的交换。附加例题:利用实验例题5的方法,使用ref编程,对数组元素进行排序。 实验例题6:执行下面程序,体会ref、out的区别在哪里?using System;public class OutClass public static void Main() int a=2,b=9; Input(out a,ref b); Console.WriteLine( a = + a); public static void Input(out int x,ref int y) /x = 4; Console.WriteLine( x = + x + y = + y); x = int.Parse(Console.ReadLine(); 程序执行后,输出:错误1使用了未赋值的 out 参数“x”补上语句:x = 4程序执行后,输出:x = 4 y = 95 a = 5请按任意键继续. . .实验例题7:使用方法参数out编写程序,求一个数的二阶乘。正整数n二阶乘的定义:当 n 为奇数时,其二阶乘为 135n ,即 1 到 n 之间所有奇数的积。当 n 为偶数时,其二阶乘为 246n ,即 2 到 n 之间所有偶数的积。实验六 数组和字符串一、实验目的1. 进一步熟悉在.NET环境,进行C数组和字符串操作程序设计;2. 掌握一维数组的定义与使用;3. 了解二维数组的使用;4. 掌握字符串的定义;5. 掌握常用字符串操作方法。二、实验内容1. 编写一维数组的定义与使用程序;一维数组定义格式:格式1: 数组名 ;/未分配空间格式2: 数组名=new ;格式3: 数组名=new ;格式3(简写): 数组名= ;2. 编写数组元素是数组的程序;数组元数是数组定义格式: 二维数组格式1: = new ;0 = new ;1 = new ;2 = new ; :3. 编写二维数组的定义与使用程序;多维数组的数组元素本身也是数组。它分为规则多维数组和不规则多维数组。定义:多维数组:格式:, , 二维数组格式1:, = new ,;二维数组格式2:, = new ,,;4. 编写字符串定义和操作程序;字符串的定义格式: 格式1: string ; /未实例化,没有指向字符串常量 格式2: string = new string(,int); /int 字符为个数 格式3: string = new string(); 格式3: string = new string(,int,int); /第1个int为字符数组元素的位置,第2个int为字符个数。三、实验步骤1. 编写一维数组的定义与使用程序实验例题1:编写程序,将数组元素按由小至大的顺序排序。实验例题2:编写程序,找出双精度数组元素中最小值,并放在数组的数组下标0的位置。实验例题3:编写程序,统计数组中大于零、小于零和等于零的数的个数。实验例题4:编写程序,将数组中的元素以相反的顺序放入另一数组中。2. 编写数组元素是数组的程序实验例题5:编写程序,定义数据元素为一维数组的数组,简单赋值,并输出。3. 编写二维数组的定义与使用程序实验例题6:编写程序,定义二维数组,并赋值,输出二维数组元数。实验例题7:编写程序,将数组中的元素以相反的顺序放入另一数组中。4. 编写字符串定义和操作程序实验例题8:编写程序,完成字符数组和字符串相互转换程序。实验例题9:编写程序,完成字符串数组元素的排序。实验七 类和对象一、实验目的1. 进一步熟悉在.NET环境,进行C的类和对象程序设计;2. 掌握类声明和对象的创建;3. 掌握构造方法的使用。二、实验内容1. 编写程序,设计类并通过类定义对象类声明格式: class : 对象的创建格式:格式一: ;格式二: = new ();格式三: = new (参数表);2. 编写程序,定义类并通过类的构造方法给对象赋值类的构造方法的定义格式: class /构造方法名与类名相同 (参数表) 三、实验步骤1. 编写程序,设计类并通过类定义对象实验例题1:设计一个圆类,通过类定义一个圆的对象,再通过对象输出圆的半径。2. 编写程序,定义类并通过类的构造方法给对象赋值实验例题2:设计一个类,通过类的构造方法给对象赋值(也可考虑对上例修改完成)。3. 以上内容再多设计几个类,完成程序设计。实验八 属性和索引器一、实验目的1. 进一步熟悉.NET环境,进行C的类属性和索引器程序设计;2. 掌握属性的定义和使用;3. 掌握索引器的定义和使用。二、实验内容1. 编写C#类的属性的定义和使用程序;属性定义格式:访问修饰符 属性名 get return ; set = value; 2. 编写C#类的索引器的定义和使用程序;索引器定义格式:访问修饰符 thisint index get return 集合名index; set 集合名index = value; 三、实验步骤1. 编写C#类的属性的定义和使用程序;实验例题1:编写程序,通过类的属性访问字段。2. 编写C#类的索引器的定义和使用程序;实验例题2:编写程序,利用索引器通过一个圆类定义多个对象。实验九 继承和多态性一、实验目的1. 进一步熟悉.NET环境,进行C的继承和多态性程序设计;2. 掌握类的继承;3. 掌握多态性的使用。二、实验内容1. 编写C#类的继承的程序设计类的继承定义格式: class :, 2. 编写C#类的多态性使用程序设计多态性分为两种,一种是编译时多态性,一种是运行时多态性。编译时多态性:方法重载就是编译时多态性的具体表现。编译时多态性(方法重载)的特点:(1)方法名必须相同;(2)参数列表必须不相同;(3)返回值类型可以不相同。运行时多态性:运行时多态性是指在系统运行时,根据执行时对实际对象的指向决定实现何种操作。C#中运行时多态性是通过在派生类中覆写基类虚方法或抽象类的抽象方法来实现。基类对象调用方法时,根据运行时基类对象对派生类对象的指向不同而执行不同的与基类对象相同的派生类方法,表现出一对多的特性,称为运行时多态性。(1)virtual 关键字用于修饰类的方法成员,如方法、属性、索引器等,称为虚拟成员。用virtual关键字修饰的方法称为虚方法。(2)override关键字在派生类型中用于覆写基类的方法、属性、索引器等。覆写方法提供从基类继承的成员的新实现。由override声明覆写的方法称为覆写基方法。覆写基方法必须与虚方法具有相同的方法名。三、实验步骤1. 编写C#类的继承的程序设计;实验例题1:不使用继承定义一个人(Person)类和一个学生(Student)类,设置相应的构造方法,都定义一个Show实例方法用于显示信息,主方法分别显示一个人和一个学生的信息。实验例题2:使用继承定义一个人(Person)类和一个学生(Student)类,设置相应的构造方法,都定义一个Show实例方法用于显示信息,主方法分别显示一个人和一个学生的信息。2. 编写C#类的多态性使用程序设计;实验例题3:编写程序,利用方法重载,编写两个整数、两个实数相乘的程序。实验例题4:使用虚方法编写程序,定义一含有虚方法Area的图形(Shape)类,定义含有用override修饰的Area方法的正三角形(RegularTriangle)、正方形(Square)、圆(Circle)类,试用多态性求名图形的面积。实验例题5:编写程序,将上例用抽象类多态性实现。实验例题6:编写程序,定义一动物(animal)类,继承动物类,定义其它各种具体的动物类,使用多态性显示各种动物的信息。实验十 委托和事件一、实验目的1. 进一步熟悉.NET环境,进行C的委托和事件程序设计;2. 熟悉委托类型的定义和简单使用;3. 熟悉事件的定义和使用。二、实验内容1. 利用C#的委托编写程序委托类型定义的格式: 访问修饰符 delegate (参数列表)委托对象定义的格式: = new ()通过一个委托对象定义委托对象。定义的格式: = new ()调用委托格式: ()2. 通过委托定义事件,编写C#的简单事件控制台应用程序事件是与委托紧密相关的,定义事件必须先定义委托类型。定义事件与定义委托对象有些区别,要用event关键字修饰。事件的定义格式: event = new ()通过一个事件对象定义事件,定义的格式: event = new ()三、实验步骤1. 利用C#的委托编写程序实验例题1:利用委托编写一个类,类中有MyShow()方法,要求实际执行的是System.Message Box.Show()方法。2. 通过委托定义事件,编写C#的简单事件控制台应用程序实验例题2:下面是一个简单的窗体类,试简单编写程序使执行后显示出窗体,单击时能弹出消息框。public class LoginDialog:FormButton button;public LoginDialog()button = new Button();button.Click += new EventHandler(ButtonClick);this.Controls.Add(this.button);void ButtonClick(object sender,EventArgs e)MessageBox.Show(This is a Button.);实验十一 接口一、实验目的1. 进一步熟悉.NET环境,进行C的接口程序设计;2. 掌握接口的定义、实现和接口的访问;3. 掌握接口和抽象类的区别。二、实验内容1. 编写C#语言接口的定义和实现程序接口定义使用interface关键字,定义格式: 修饰符 interface :继承的接口列表 /接口成员定义 接口成员定义一般格式: (参数列表);接口属性成员的定义格式: get; set; 接口索引器的定义格式: thisint get; set; 接口事件的定义格式: event 类实现接口的格式: 修饰符 Class :基类名,接口1,接口2,接口3, /类体 2. 编写C#语言接口的访问程序接口访问格式: = ; .(参数列表);3. 编写C#接口继承程序接口继承的定义格式:属性 修饰符interface :基接口列表 三、实验步骤1. 编写C#语言接口的定义、实现和访问程序实验例题1:试定义一接口,定义一基类和一继承基类实现接口的派生类,用接口对象实现接口功能。2. 编写C#语言接口访问程序实验例题2:试编写接口访问程序,实现两接口对象的访问。3. 编写C#接口继承程序实验例题3:试编写接口继承程序,实现两接口之间的继承生成新接口。实验十二 异常处理一、实验目的1. 进一步熟悉.NET环境,进行C的异常处理程序设计;2. 掌握结构化异常处理;3. 熟悉异常类。二、实验内容1. 编写C#异常处理的定义及简单使用程序异常处理的基本格式:try /正常情况下,程序代码块catch(异常类型 e) /异常处理代码块其他catch块finally /是否发生异常,均要执行的代码块; 2. 对前面内容中可能出现异常的程序代码找出一些来,并插入适当的异常处理程序代码。三、实验步骤1. 编写C#异常处理的定义及简单使用程序实验例题1:对下面程序加入异常处理代码。using System;namespace P16_3class CatchExceptionSamplestatic void Main()Console.Write(请输入整数x:);int x = int.Parse(Console.ReadLine();Console.Write(请输入整数y:);int y = int.Parse(Console.ReadLine();int result = 24 / (6 - x) / (x - y) / (y - 2);Console.WriteLine(24 / (6 - x) / (x - y) / (y - 2) = 0, result);Console.WriteLine(程序运行过程中发生异常,请检查您的输入是否有误。);实验例题2:在下面代码中人为的抛出被零除异常,并观察程序的执行。using System;class Try_CatchTestpublic static void Main()while(true)trystring s = Console.ReadLine();int x = int.Parse(s);int y = 10/x;Console.WriteLine(0,y);catch(DivideByZeroException e)Console.WriteLine(Catch the DivideByZeroexception!+e.Message);catch(FormatException e) Console.WriteLine(Catch the exception!+e.Message);finallyConsole.WriteLine(End of Main);2. 试找出前面已做过的程序中可能出现异常的程序实例,并插入适当的异常处理程序代码C#程序设计实 验 参 考 代 码实验一 变量的定义和使用三、实验步骤5. 布尔类型实验例题一:输入一个正整数,判断数的奇偶性。using System;public class Paritypublic static void Main()uint x ; / uint 是无符号32位整数类型bool yesEven = true;/定义布尔类型变量yesEven,赋初值为真Console.Write(请输入一个正整数: );/将键入的数字串转换成无符号整型x = uint.Parse(Console.ReadLine(); /if语句是分支结构,表达式x%2!=0为真执行分支体内语句if( x%2!=0 )/ %是“取余”运算符,!=是“不相等”运算符yesEven = false;/if分支结构表达式为真执行是偶数输出,为假执行是奇数输出if(yesEven) Console.WriteLine(输入的是一个偶数。);elseConsole.WriteLine(输入的是一个奇数。);6. 字符类型实验例题二:编写程序,打印26个大写的英文字母。using System;public class UpperLetterspublic static void Main() /char是字符类型,字符型变量ch可存一个字符char ch; /while语句是循环结构,i从65每次循环加1,至90共26次循环int i = 65;while(i= 90) System.Console.WriteLine(优秀的感觉真好!);if (score = 60 & score 90) System.Console.WriteLine(马马乎乎啦!);实验例题3:编写程序,用if嵌套的方式,根据一个人的年龄,给出不同的判断结果。using System;public class Test public static void Main() int age = 60; if( age250 ) Console.WriteLine(是个妖怪!); else Console.WriteLine(此人芳龄 + age + 可以学好C# !); 4. 编写switch语句程序;实验例题4:使用switch语句编写程序,输入0至10之间的整数,判断该数的奇偶性。using System;namespace P6_1class SwitchSamplestatic void Main()Console.WriteLine(请输入一个(010)数:);int x=int.Parse(Console.ReadLine();switch (x)case 0:case 2:case 4:case 6:case 8:case 10:Console.WriteLine(该数为偶数);break;default: Console.WriteLine(该数为奇数);break;实验例题5:使用switch语句编写程序,按五分制

温馨提示

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

评论

0/150

提交评论