第6章程序设计基础.ppt_第1页
第6章程序设计基础.ppt_第2页
第6章程序设计基础.ppt_第3页
第6章程序设计基础.ppt_第4页
第6章程序设计基础.ppt_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

第6章程序设计基础 6 1程序文件的建立与运行6 2结构化程序设计初步6 3顺序结构程序设计6 4程序的选择结构6 5循环结构6 6多模块程序设计6 7参数传递与变量作用域 教学目的 了解面向过程的程序设计方法 结构化程序设计的三种基本结构 子程序和过程的使用方法 基本要求 通过对三种结构的学习 可以进行简单的程序设计 教学要点 循环嵌套 模块调用 变量的作用域 6 1程序文件的建立与运行 程序 为完成某一特定任务而组织编写的一系列命令和语句 程序文件 程序以文件的形式存放于磁盘上 这个文件就称为程序文件 1 命令方式 modifycommand或modifyfile 6 1 2vfp程序文件的建立与执行 1 程序文件的建立 默认扩展名为 prg 第一条命令中 文件的默认扩展名为 prg 可省略 第二条命令中 建立程序文件时文件扩展名 prg必须同时输入 不能省略 在文件名前可直接指明该文件保存的路径 用 end 即ctrl end键 以下类似 或 w将编辑结果存盘 或执行 文件 菜单中的 保存 命令存盘 用 q或esc键放弃存盘 并退出编辑程序 执行该命令后 vfp将打开一个用于输入和编辑修改程序的窗口 窗口的标题栏所显示的就是该命令中的文件名 如图所示 2 菜单方式 文件 新建 弹出 新建 的对话框 文件类型 框里选择 程序 单击按钮 新建文件 弹出文本编辑窗口 在这个窗口中就可以输入命令和语句了 最后 选择系统菜单 文件 里的菜单项 保存 按照系统提示将输入窗口中的程序保存起来 3 在 项目管理器 对话框中选择 代码 选项卡中的 程序项 再单击 新建 按钮 4 利用其它编辑软件建立和编辑命令文件由于foxpro的命令文件属于文本文件 因此可在windows操作系统下利用word wps等编辑软件或dos操作系统下利用edit等编辑软件来建立和编辑命令文件 示例 建立应用程序l1 prg 功能为 打开表文件 学生 dbf 根据键入的学生姓名在该表文件中查找并输出该学生的基本情况 关闭文件 返回 命令窗口 modicommvfp l1 prg编辑窗口 l1 prgsettalkoffusevfp 学生 dbfaccept 请输入学生姓名 toxmlocatefor姓名 xm 学号 姓名 性别 班级usesettalkoffreturn 2 程序文件的修改 1 利用系统菜单 操作与建立程序文件相同 2 在命令方式下 其操作与建立程序文件相同 但必须带文件名或 3 若程序包含在一个项目中 可以在 项目管理器 对话框中选定它 再单击 修改 命令按钮 3 程序文件的执行方法一 在命令方式下执行命令文件do 程序文件名 with 方法二 使用系统菜单执行命令文件 程序 运行 d 然后在弹出的 运行 对话框中 选择 程序列表 中要执行的程序文件名 再单击 运行 按钮 程序就可以执行 方法三 若程序包含在一个项目中 则可以在 项目管理器 对话框中选定它 再单击 运行 按钮 4 程序书写规则 1 命令分行程序中每行命令都以回车键结束 一行只能写一条命令 若命令需分行书写 应在一行终了时健入继行符 然后按回车键 继续在下一行输入 2 命令注释程序中可插入注释 以提高程序的可读性 注释行以符号 开头 它是一条非执行命令 仅在程序中显示 命令行的后面也可添加注释 这种注释以符号 开头 例如 本程序用于修改表的指定纪录setdatausa 日期格式置为mm dd yy 6 1 3 常使用的命令 命令 settalk命令格式 settalkon off功能 该命令控制其它命令执行的结果输出 不输出到屏幕上命令 setprint命令格式 setprintoff on功能 该命令控制输出结果不输出 输出到打印机打印输出 命令 文本输出命令格式1 text 文本信息 endtext功能 此命令把 文本信息 内容显示出来 允许文本信息出现多行 它只能在程序工作方式中使用 而且text与endtext必须成对出现 格式2 功能 能将一行文本信息的内容按书写形式的原样显示出来 与 的区别在于前者是在下一行的第一列开始输出 而后者则不换行 在当前光标位置处开始显示 命令5 清屏命令格式 clear功能 清屏 常将此命令用于程序开始 保持屏幕整洁 命令4注释语句格式一 note 注释字符 格式二 注释字符 格式三 注释 功能 格式一 格式二一般对程序作注释 格式三注释某命令语句 只用在被注释的命令行之后 命令6 返回命令格式 return tomaster 功能 return在一个主程序中用于结束此程序的运行并返回命令窗口 在子程序中用于结束子程序并返回到调用此过程中的下一语句 returntomaster将过程的调用直接返回主程序 中止程序执行命令格式 cancel功能 中止foxpro程序的执行 说明 当foxpro程序运行到该语句时 将不再执行其后面的所有语句 而直接退出程序 返回到命令窗口 同时关闭所有已打开的文件 命令8 非格式化交互式命令 单字符接收命令 即等待命令 格式 wait to window at nowait clear noclear timeout 功能 暂停程序的执行 等待用户输入一个字符或按任一键 也可只用于输出一条提示信息 说明 wait命令使用vfp程序暂停运行 等用户按任意键 或回车 后 程序继续执行 用于输出一条提示信息 如缺省 则执行命令后屏幕显示 按任意键继续 提示用户按任意键 系统将继续运行 用于保存从键盘键入的字符 如果不选to子句 则输入的数据不予保存 windows子句可使主屏幕上出现一个wait提示窗口 用于输出提示信息 该窗口的位置由at选项的 来指定 若缺省at选项 在主屏幕右上角显示 若使用nowait选项 系统将不等用户按键 立即往下执行 字符串接收命令格式 accept to 内存变量 功能 暂停程序的执行 等待用户输入字符串数据 任意类型数据接收命令格式 input to功能 暂停程序的执行 等待用户输入数据 系统执行该语句时 暂停正在运行着的程序 并显示提示信息 然后等待用户从键盘输入数据 它允许用户输入多个字符直至输入回车为止 并将输入的信息以字符串的形式存储在内存变量中 故常用于输入字符型的数据 wait和accept的相同点是 它们接收的均是字符型数据 故两者所接收的字符型数据都无需用单 双引号或方括号括起来 wait和accept的最大区别是 wait只接收单个字符 并且不需要输入回车键 而accept可接收多个字符 且必须用回车键来结束字符串的输入 说明 wait和accept只能满足字符型变量的赋值 而input能满足字符 数值 日期 逻辑型变量的赋值 可用于输入各种类型的数据 使用input语句若给变量赋的值是字符型 需加定界符 否则系统会把它当成一个变量名处理 若给变量赋的值是逻辑型常量 需用定界符 括住 输入日期型常量两端须加花括号 输入数值型常量 则直接输入整数或实数 也可以输入一个表达式 提示信息的内容同wait和accept语句 9 格式化输入输出命令 格式化输出语句 say格式 行 列 say 表达式 功能 在指定的行和列输出表达式的值 说明 行 列 确定光标的位置 把显示屏看作是由行和列组成的二维坐标系 其坐标系为25行 80列 规定行值取值范围是整数0 24 列值取值范围是整数0 79 那么 屏幕最左上角字符的坐标就为 0 0 最右下角字符的坐标就为 24 79 例如 5 30say abcd 执行结果将在屏幕的第5行第30列位置开始显示字符串abcd 格式化输入语句 格式 saygetread功能 定位显示get变量的值 read命令激活当前未被激活的所有get变量 用户就可对这些get变量进行编辑 说明 get read给变量赋值的方式为全屏幕操作 开始执行时光标停在get变量显示区的第一个位置上 利用方向键可在显示区内上下左右移动光标 当光标在最后一个get变量的显示位置时 按下回车键则数据存入变量 且全屏幕编辑结束 接着就执行read的后继命令 若缺省say子句 get变量值从由指定的坐标开始显示 含有say子句时先显示其表达式值 然后隔一个字符接着显示get变量的值 get变量必须具有初值 除变量的类型遵照初值外 其长度也将由初值决定 故使用前必须先定义 6 2结构化程序设计初步 1 算法及流程图 1 算法的概念 根据问题要求拟定用计算机求解的策略和步骤 并把它用某种工具描述出来 称之为 算法设计 2 算法的流程图描述 用一些简单的几何框图表示各种类型的操作 然后用带箭头的有向流线将各个框图连结起来 以表示其执行的先后顺序 这种框图称为 流程图 2 结构化程序设计方法结构化程序指整个程序由顺序 选择 循环三种基本结构组成 1 自顶向下逐步求精 从全局出发 通盘考虑 把问题的整体分解成若干个相对独立的小问题 然后再把小问题分解为若干个相对独立的更小的问题 直到能表示成程序为止 2 模块化设计 由一个大问题分解成若干个相对独立的小问题 每个小问题实现一定的功能 称为功能模块 对大的功能模块 采用自顶向下逐步求精的方法划分为更小的功能模块 各功能模块的程序可单独编写和调试 这样便于多人协助完成较大型的程序设计 3 程序设计的步骤 1 分析问题主要是分析待编程序要解决什么问题 需要输入什么数据 需要做哪些处理 需要输出什么数据等等 2 画流程图用流程图来描述处理问题的过程 3 编写程序根据程序流程图 将所需要的vfp的命令 语句组织在一起 4 调试通过运行程序对程序进行正确性检验和测试 4 流程图介绍 1 绘制流程图时所用到的基本符号 说明 处理框中含有一个语句功能或一段程序 一般用自然语言或数学表达式描述 尽量简明扼要 流向线要清晰明确 不能相互交叉 不能出现死循环流向线 无论框图描述的处理过程如何 所画框图总是只有一个入口 最后汇集到一个出口 例 计算1 2 3 100 settalkoffs 0forn 1to100s s nendf 1 2 3 100 sreturn 算法流程图 2 举例 用框图描述求一元二次方程ax2 bx c 0的实根的过程分析 首先输入a b c的值 其次 计算判断求一元二次方程实根的条件b b 4 a c的值 最后判断b b 4 a c的值是否满足实根存在的条件 若不满足 则输出方程无实根 若满足则方程有二个实根 输出两实根x1 x2 x1 b sqrt b b 4 a c 2 a x2 b sqrt b b 4 a c 2 a 6 3顺序结构程序设计 1 顺序结构程序运行时 按照命令 语句 的排列顺序逐条执行 这种结构就称为顺序结构 2 简单的输入输出语句 1 数据输入语句 input1 格式 input to2 功能 暂停程序运行 显示提示信息 等待用户从键盘上输入数据 用户可以输入任意合法的表达式 2 单字符输入语句 wait1 格式 wait to windows 2 功能 暂停程序运行 显示提示信息 等待用户键入任何一个键 然后继续执行程序 3 简单输出语句 1 格式 2 功能 依次计算并显示表达式表中各表达式的值 所显示的值与值之间间隔一个空格 4 信息显示函数 messagebox 1 格式 messagebox 2 功能 暂停程序运行 在对话框中显示提示信息 等待用户单击按钮 并返回一个整数表示单击的是哪个按钮 由三个数码相加产生 即 例 messagebox函数举例 3 环境设置语句环境设置语句 set设置系统环境和状态的语句为set语句 set语句实际上是一个语句组 分为两种格式 格式 seton off格式 setto常用的几个set语句 setdefaultto功能 设置默认的工作目录 2 setpathto功能 设置搜索路径 3 settalkon off功能 控制是否使某些命令产生屏幕显示 4 setprinton off功能 控制屏幕上的输出内容是否同时送打印机打印 4 注释 1 注释语句1 格式 note2 功能注释语句是非执行语句 它们不对计算机产生任何操作 仅仅对程序起注解作用 2 行末注释行末注释用在语句 命令 末尾 以 起头 后跟本行的注释内容 6 3 1顺序结构程序设计 1 概念顺序结构程序 自始至终严格按照程序中语句的先后顺序逐条执行 是最基本 最普遍的结构形式 顺序结构的流程图 顺序结构 例 编程 根据输入的半径值 计算出相应的圆的周长 settalkoffclearinput 请输入圆的半径 torl 2 3 1416 r 5 5say 圆的周长是 str l 6 3 settalkon 6 4程序的选择结构 定义 分支结构 就是按照一定的条件由判断语句或选择语句构成的双重或多重走向的程序 简单分支结构的流程图 1 简单分支格式 ifendif注 if和endif必须成对出现 说明 1 if endif配对组成一条语句 缺一不可 2 if endif语句只能在程序中使用 不能使用于交互式状态 3 该语句的执行过程是 首先对逻辑表达式进行判断 然后根据逻辑表达式的取值确定是否执行 当的值为 真 时 顺序执行if与endif之间的语句序列 然后再执行endif后的语句 当逻辑表达式的值为 假 时 不执行if与endif之间的语句而直接执行endif后面的语句 逻辑表达式也称为条件 故以后叙述中逻辑表达式也简称为条件 例 从键盘接收两个数 在屏幕输出大数 input x toxinput y toyifx y 如果x y 把x与y交换t x 引入第三个变量t 进行三角交换x yy tendif xreturn 2 双边分支格式 ifelseendif y n 双边分支的流程图 说明 该语句执行过程是 首先判断逻辑表达式的值是否为真 若为真 执行 而不执行 并从endif后面的语句开始继续执行 若为假 则不执行 而执行 然后再执行endif后面的语句 例 编一个程序 输入一个教工号 在staff表中查找 若查到就给该教师增加100元基本工资 并在信息窗口提示相应的信息 若查不到则提示 查无此人 opendatabase教学管理 打开 教学管理 库作为当前库usestaff 打开当前库中staff表clearinput 请输入教工号 tojghlocateallfor教工号 jghiffound replace基本工资with基本工资 100 messagebox 该教师的基本工资已增加100元 else messagebox 查无此人 endifclosedatabase 关闭当前库return if语句多重嵌套一般格式 ifelseifelseifelse endif endif endif 3 多分支结构 注 1 if else 可不选 endif必须成对使用 2 最好采用缩格 锯齿形 的书写方式 多分支程序用于解决要根据多种条件 从各种情况中选择一种进行处理的问题 情况判断语句格式 docase分支程序用于解决要根据多种条件 从各种情况中选择一种进casecase case otherwise endcase 说明 docase和endcase须成对出现 在情况语句中 如果逻辑表达式的值为真的情况多于一个 则仅执行第一个逻辑表达式值为真的语句系列 docase语句之间可以嵌套使用 docase语句和if语句也可以嵌套使用docase语句和dowhile也可以嵌套使用 例 显示当前季节程序 m month date 获取当前月份docasecasem 3andm 6andm 9andm 11 messagebox 现在是秋季 endcasereturn 6 5循环结构 定义 按照一定条件重复进行某种特定操作的程序称为循环结构程序 vfp中有三种循环结构 条件循环 当循环while 计数循环 for endfor或for next 库文件记录扫描循环 scan dowhile loop exit enddo y n 1 条件循环 备注 例 用dowhile语句编写程序 实现例6 2算法 s 0 存放累加和的变量s初值为0n 1 取第一个自然数dowhilen 100s s n 累加当前自然数n n 1 取下一个自然数enddo sreturn 2 循环体中两条特殊语句 exit和loop 1 格式跳出循环语句 exit短跳循环语句 loop 2 功能在循环体中执行到exit时 立即无条件跳出循环 转去执行enddo的后一个语句 若执行到loop语句 则立即返回dowhile重判循环条件 而不再执行循环体内的其他语句 dowhiledowhile exitloop enddoenddo 3 exit语句的一个典型应用exit语句常用在下列控制结构中 用于控制循环次数不确定时的循环退出 dowhile t 循环条件为永真ifexitendifenddo 例 从键盘输入若干个非零的数值 当输入数值 0 时结束输入 统计有效数值的个数和它们的平均值 clears 0 存放累加和n 0 存放数值个数dowhile t 这是一个永真循环input 请输入数值 输入零时结束 toszifsz 0exitendifs s szn n 1enddo 共输入有效数值个数 n 平均值是 s nreturn 2 计数循环格式 for to step loop exit endfor next 注 步长可为正值和负值 备注 例 裝有100只鸡蛋的蛋箱 运输过程中打碎了若干鸡蛋 货主开箱取鸡蛋 若5只5只的取 最后剩下一只 若6只6只的取 最后也剩一只 若7只7只的取 最后刚好取完 请问有多少只好鸡蛋 clearfori 1to100ifmod i 5 1andmod i 6 1andmod i 7 0 i endifendfreturn 3 表扫描循环结构格式 scan for while loop exit endscan 备注 scan循环专用于控制对数据表中记录进行逐条操作 功能针对当前表中指定范围内满足条件的每条记录 逐一执行scan与endscan之间的语句序列 例 用scan循环实现对staff表中出生于50年代的教师增加100元工资 opendatabase教学管理usestaffin0scanfor出生日期 1950 01 01 replace基本工资with基本工资 100endscanclosedatabasereturn 4 多重循环格式 以当型循环结构为例 dowhile 条件表达式1 语句序列1 dowhile 条件表达式2 语句序列2 dowhile 条件表达式3 语句序列3 enddo 语句序列4 enddo 语句序列5 enddo 4 循环的嵌套例 某学生食堂采购员带1000元钱去市场买鸡 已知每只小鸡5元 每只公鸡20元 每只母鸡30元 现在要求1000元钱正好买100只鸡且品种齐全 请编程序帮助采购员制订采购方案 clearfori 1to33 最多可以买33只母鸡forj 1to50 最多可以买50只公鸡fork 1to100 最多可以买100只小鸡if30 i 20 j 5 k 1000andi j k 100 i j kendiendfendfendf 循环语句与if语句和docase语句的相互嵌套循环语句与if语句和docase语句的相互嵌套有如下几种形式 形式一 dowhileif else endif enddo 形式二 ifdowhileenddo endif 注意 在嵌套使用时 不能互相交叉 形式四 docasecasedowhile enddocase endcase 形式三 dowhile docasecase endcase enddo 6 6 1子程序6 6 2自定义函数6 6 3过程 6 6多模块程序设计应用程序一般都是多模块程序 可包含多个程序模块 模块是可以命名的一个程序段 可指主程序 子程序和自定义函数 本节介绍模块的构成及调用方法 多模块程序中变量的作用域 程序调用方法以及结构化程序设计等 6 6 1子程序一 调用与返回对于两个具有调用关系的程序文件 常称调用程序为主程序 被调用的程序为子程序 主程序执行时遇到do命令 执行就转向子程序 称为调用子程序 子程序执行到return语句 就会返回到主程序中调用命令处的下一语句继续执行程序 称为从子程序中返回 简称返回 2 带参数子程序的调用与返回do命令允许带一个with子句 用来进行参数传递 格式 do in 说明 1 中的参数可以是表达式 但若为内存变量必须具有初值 2 当是in子句中的一个过程时 do命令调用该过程 调用子程序时参数表中的参数值要传送给子程序 子程序中必须设置相应的参数接收语句接收传递来的参数值 vfp用parameters命令接收参数值和回送参数值 格式 parameters功能 指定内存变量以接收do命令发送的参数值 返回主程序时把内存变量值返回给主程序中相应的内存变量 说明 1 parameters必须是被调用程序的第一个语句 2 命令中的参数被vfp默认为私有变量 返主时回送参数值之后即被清除 3 命令中的参数依次与调用命令with子句中的参数相对应 故两者参数个数必须相同 ymj 0 5 10say 请输入半径 getbjdefault0readdojswithbj ymj 调用子程序 ymj ymj 显示圆面积return子程序js prg如下 parametersr ss pi r r vfp的pi函数返回 值return 返回主程序在调用子程序前 调用语句中的参数变量都赋了值 在调用子程序时 调用语句的bj值传送给子程序的参数r 子程序计算面积后返回主程序时变量s的值回送给参变量ymj 例6 26设计一个计算圆面积的子程序 并要求在主程序中带参数调用它 程序如下 格式 return tomaster to 格式中的tomaster选项 使返回主调程序时直接返回到最外层主程序 选项to强制返回到指定的程序文件 3 子程序嵌套主程序与子程序的概念是相对的 子程序还可调用它自己的子程序 即子程序可以嵌套调用 vfp的返回命令包含了因嵌套而引出的多种返回方式 6 6 2自定义函数1 自定义函数的建立格式 function patameters return 1 若使用function来指出函数名 表示该函数包含在调用程序中 若缺省表示此函数是一独立文件 函数名将在建立文件时确定 其扩展名默认为 prg 并可使用modifycommand来建立或编辑该自定义函数 还需注意 自定义函数的函数名不能和vfp系统函数同名 也不能和内存变量同名 2 为函数体 用于进行各种处理 简单函数的函数体也可为空 3 return语句用于返回函数值 其中的值就是函数值 若缺省该语句 则返回的函数值为 t 4 自定义函数与系统函数调用方法相同 其形式为 函数名 例用自定义函数编写一个计算阶乘的程序 该例题是典型的函数递归调用 程序如下 settalkoffinput 请输入一个正整数 toint factorial int settalkonreturn 函数如下 functionfactorialparameternifn 0r 1elser n factorial n 1 endifreturnr 6 6 3过程过程就是由 procedure 为开始标志 以 return 语句结束的一个子程序段 它通常是包含在调用程序文件中 作为主程序的一部分出现的一个子程序段 是程序文件的一个组成部分 我们习惯上把过程写在程序的最后 一个程序文件可以包含多个过程 引入过程的主要目的是减少同时打开文件的个数以及访问磁盘的次数 1 过程的定义过程的定义是用procedure命令开始的一个命令序列 基本结构如下 procedure 过程名 过程的全部语句序列 return过程名由1 8个字符组成 无扩展名 过程以return命令结束 2 过程的调用格式 do with in 过程文件 说明 do语句出现在主程序中 当主程序执行do语句时 将指明的程序调入内存中 并转入该过程运行 当遇到return语句时 返回主程序 继续执行调用语句的下一条语句 with子句是用来向被调用过程传递参数的 不包含with子句的调用称为无参调用 包含了with子句的调用称为有参调用 in子句指定过程所在的过程文件 主程序过程 3 过程文件一个复杂的应用系统 通常有许多过程 将多个过程存放在同一个文件中 这个文件称为过程文件 一个过程文件允许存放128个过程 一旦过程文件打开 系统认为只打开一个文件 就能根据过程文件执行其中的过程 从而能够减少访问磁盘次数 加快过程执行速度 如果一个过程是作为一个独立文件存放在磁盘上的 我们称它为外部过程 把过程文件中的过程称为内部过程 过程文件的内容形式如下 procedurereturnprocedurereturn procedurereturn 4 过程文件的打开 关闭和内部过程的调用 1 过程文件的打开格式 setprocedureto 过程文件名 说明 过程文件必须打开后 其中所包含的过程才能被其它过程所调用 调用内部过程仍使用do语句 do语句中的文件名是由procedure指明的过程名 vfp规定 任何时候只能打开一个过程文件 当打开一个新的过程文件后 前面被打开的过程文件将被自动关闭 2 过程文件的关闭格式一 setprocedureto格式二 closeprocedure说明 过程文件被关闭后 此过程文件中的内部过程也同时被停止调用 对于不再使用的过程文件应及时关闭 以便为系统调用其它程序或读取数据提供更大的内存空间 3 内部过程调用的主程序setprocedureto do docloseprocedure 6 7参数传递与变量作用域 1 参数的传递1 格式传递参数语句格式 dowith接收参数语句格式 parameters2 规则 1 do语句可以用在调用程序中的任何位置 而parameters语

温馨提示

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

评论

0/150

提交评论