VisualFortran90第3章.ppt_第1页
VisualFortran90第3章.ppt_第2页
VisualFortran90第3章.ppt_第3页
VisualFortran90第3章.ppt_第4页
VisualFortran90第3章.ppt_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

第3章 基本语句,3.1类型说明语句,3.2 算术表达式和赋值语句,3.3 输入与输出语句,3.4 输入和输出编辑符,基本语句概述,前面已经介绍了Fortran90的语言组成元素及有关程序单元等概念,也了解了程序是由语句组成。Fortran90的程序具有强大的功能,语句很多,但支持程序的最基本的语句主要有四种:类型说明语句、赋值语句、输入语句、输出语句。运用这些基本的语句,就可以编写一些简单的程序。,Fortran90中的变量通常要进行类型说明,然后才能使用。类型说明语句的形式是: 类型说明(种别说明),属性说明1,属性说明2,属性说明n:变量名表 例如: Integer(kind2),dimension(1:15):A 说明变量A的类型是整型、种别是2、属性是Dimension(1:15),即A被说明为种别参数为2的一维整型数组,具有15个元素。这里的种别说明和属性说明不是必选的,有时也可以省略。,3.1 类型说明语句,例 INTEGER : A,SUM,TOTOL REAL X,Y(缺省双冒号) CHARACTER:C !Character类型的长度缺省为1。 其余类型的说明语句请自己练习。,类型:变量名表 (注意:此处双冒号可以省略,但不提倡),省略了种别说明和属性说明后具有最基本形式:,选择恰当的数据类型:运算速度、范围、精度、注意实数的误差,整型数据运算速度快,在机内存储没有误差,但能表达的值的范围较小; 实型数据能表示小数、分数及不同的精度,表达的值的范围大,但数的外部表示和机器存储会有误差。 例,10.2,在机内表示可能为10.999998。 使用实数时,尽量避免作相等或不相等的比较 例:A是实型变量,对其与10.2作相等与否比较,不能写成 :IF(A=10.2) PRINT *,A 应改写为:IF(ABS(A-10.2)1.0E-6)PRINT*,A,FORTRAN以前版本对未说明类型变量使用隐含规则,即I-N规则:凡以I-N开头的变量都为整型,其余为实型。 FORTRAN90不提倡使用隐式说明,为抑制隐式说明发生作用,应在程序一开始就写出语句: IMPLICIT NONE,淘汰隐式说明,程序中常需要为一些变量预先设置初值,FORTRAN90规定可在说明变量的同时使变量初始化。(注意:双冒号不可省略) 例: REAL:score=89.5 INTEGER:x,y=0,z,类型说明时,可进行变量的初始化,3.1.2 种别说明,1、种别的说明方法: 关键字KIND,后跟=及种别参数,写在类型关键字后面的括号内。 例如: INTEGER(KIND=2):X !X是整型,种别为2 或: INTEGER(2):X 或: INTEGER *2:X 种别说明可以缺省,若缺省则为标准种别。,2 、有关种别的函数,KIND(X) SELECTED_INT_KIND(N) SELECTED_REAL_KIND(M,N) 测试标准种别: KIND(0) 4(整型) KIND(0.0) 4(实型) KIND(.FALSE.) 4(逻辑类型) KIND(A) 1(字符类型),各种基本类型种别可取值,INTEGER:1,2,4,8 REAL:4(单精度),8(双精度) LOGICAL:1,2,4 COMPLEX:4(单精度),8(双精度) CHARACTER:1,3、常数种别的表示,后缀法:INTEGER、REAL、LOGICAL、COMPLEX。 例:15_2, 14.56_4, .false._4 复型常数的种别由两个实数成分的种别来标明。 例:(3.5_4,8.6_4) 前缀法:字符型 例:1_abc,3.1.3 属性说明,属性是被说明对象的所属性质。使该对象具有某种附加功能、特殊的使用方式与适用范围。 属性关键字写在说明语句种别说明符之后,双分隔符之前,各属性关键字之间用逗号分开,次序任意。 属性关键字(P38): PARAMETER DIMENSION PUBLIC INTENT PRIVATE OPTIONAL POINTER SAVE TARGET EXTERNAL ALLOCATABLE INTRINSIC,(1)功能:用一个符号代表一个常量,称为符号常量(常数) (2)写法: Real,Parameter :G=9.8 &说明类型时赋值 (3)位置:位于可执行语句之前,PARAMETER 属性, 程序中不得改变其值 与普通常量的区别: 不作语句标号和FORMAT中重复系数 类型: 一般采用I-N规则,否则,需先定义其类型 例:parameter(n=5),(4)使用规则,DIMENSION也称数组属性。定义一个数组必须在说明语句中附加数组属性关键字。 DIMENDION(数组形状说明) 例如: INTEGER,DIMENSION(1:10):X,DIMENSION属性,表达式: 将常量,变量,函数用运算符连接起来的式子。 FORTRAN90有四种表达式: 算术表达式 关系表达式 逻辑表达式 字符表达式,3.2 算术表达式和赋值语句,以后章节再介绍,3.2.1 算术表达式,1、 5个算术运算符:,* 乘方 * 乘 / 除 + - (正,负,加,减),由算术运算符和括号将各运算元素(也称为操作数,如:常数、变量、函数、数组元素)连接起来的有意义的式子。,2、运算符的优先级,3、内在函数,FORTRAN 90配置的函数称为内在函数。内在函数分为三种: 基本函数 转换函数 查询函数 使用函数应注意的四个问题: 1、函数名及函数的功能 2、自变量的个数及类型 3、函数值的个数及类型 4、对函数的限制,注意: 三角函数单位为弧度 sinD cosD tanD 可以为度(F90) (2)某些函数参数只能为实型 如:log(2.0) (loG(2)错) (3)自变量个数、次序 例:MOD(5,3)=2 MOD(3,5)=3 (4)自变量可以是有值的常量、变量、表达式 例: ABS(B*2+SIN(A+B),(2) 转换函数(P41),(3)查询函数(P41),KIND( ) SELECTED_INT_KIND( ) SELECTED_REAL_KIND() PRECISION( ) RANGE( ) ,4、算术表达式,用Fortran来编写数学表达式的规则和方法都很“直观化”,和在纸上做四则运算只有一点点的差别。例:,书写表达式注意事项:,例: 1、 2、,答案: 1、2.0*SIN(3.14/4)/3.0 2、(Sin(4.0)+cos(10*3.14/180)*exp(2.5)/ (Sqrt(2.0)+abs(a*x)+log(3.0*5),5、表达式的计算,(1)表达式中运算的优先次序是: 括号 函数 * * 或 / +或- 同一层内运算符自左向右依次执行,多层括号中最内层括号优先级别最高,逐层向外。 对于连续的乘方运算,采用先右后左的方式 例:3*2*3,先计算2*3=8,再进行3*8=6561,(2)表达式的类型与种别,运算对象类型相同时,运算结果的类型为同一类型 注意:5/2=2 1/2=0 !,想一想: 1/2*3.6-1.2的值? 有何 3.6*1/2-1.2的值? 不同?,运算对象类型不同时,系统一般先转换成相同类型后再运算 转换规则是:较低级的类型转换为较高级的类型 数据类型隐含的高低次序为(由低到高): 整型实型 双精度 复型 例: 8/5+2.0*5/2=6.0(逐步转化),两个不同种别参数的数据运算,结果取精度或允许范围较大的那个参数的种别,例: 3.1_4+4.5_8 得7.6_8 2.1_4+(6.5,3.8_8) 得(8.6_8,3.8_8),注意有效位数的限制引起的误差 计算机存储数据的有效位数是有限的 一般为十进制数的6至7位 例:1.0/3.0的结果在内存中不是0.3333333333333,而是0.3333333 注意溢出 计算结果超出了存储单元所允许的数的范围 程序中的表达式,要避免两个很大的数相乘、或一个很大的数除以一个很小的数,二、赋值语句,1、作用:将一个表达式的值赋给一个变量(或一个数组元素) 2、写法 V=表达式e 例:A=3.14159*R*2 注意读法 B=A C=3,3、赋值语句的功能,a、计算表达式e的值 b、转化为V类型、种别 c、赋值,例:I=6.2*2 A=6*2 C=A+B(C复型,A,B实型) 例: m为整型,x为实型 M=(1.0,2.0)*2 :2 X=(1.5,2.0)+(2.0,1.0) :3.5,A=B B=A,错例:x+y=1 3=A sin(x)=0.5,2、赋值号左边只能是变量名(或数组元素名、数组名),不能是表达式。,4、注意,正确:A=A+1 计数器,3、类型要求 逻辑型、字符型的赋值语句要求“=”两边类型相同 数值型赋值,不区别整型、实型和复型,允许两边的数值类型不同 执行赋值语句后,把e的值转化为V的类型后再赋值给V V是整型、e是实型,把尾数丢掉化为整型后赋值 4、种别方面 字符型要求种别相同 其余类型的e、V种别允许不同 执行赋值语句后,e的值的种别转化为V的种别后再赋值,A=10;B=20 C=A A=B B=C,例:使用赋值语句交换A,B值,简单程序示例 例:输入圆半径,求圆面积和周长,PROGRAM main REAL:r,l,s READ *,r l=2*3.14159*r s=3.14159*r*2 PRINT *,l,s END PROGRAM MAIN,real,parameter:p=3.14159或 parameter(p=3.14159),3.3 输入输出语句,用FORTRAN语言解决实际问题的过程,如下图所示:,3.3.1 输入/输出(I/O)的概念,I/O概念共有四个: 一、I/O的定义 I/O是相对于内存而言的, 键盘属于输入设备, 显示器属于输出设备, 优盘、硬盘既是输入设备,又是输出设备。,1、I/O的对象 列在中 2、I/O的方向及语句 READ (U,f) WRITE 其中:输入 READ语句 输出 PRINT语句,只输出到显示器 WRITE语句,适合任何输出设备,二、I/O需确定的三个因素,格式,设备(部件),3、设备与格式 U(部件) * : 系统约定设备 某个值: 指定通道号(设备逻辑号、文件号) 表控格式I/O(*): 系统约定的格式。 f(格式) 基本格式(自定格式)I/O:按用户要求的格式 组织I/0。 带控制信息表的I/O:,三、的内容,READ中的输入表的内容可以是: 变量名,数组名,数组片段名,结构成员名,隐循环表(隐DO表),不能是表达式 WRITE 中的输出表内容可以是: PRINT 变量名,数组名,数组片段名,结构成员名,隐循环表(隐DO表), 常数,函数和表达式。,四、记录和文件,1、记录:以回车(ENTER)作为记录的分隔标记。 每执行一个I/O语句就启动一个新记录。 I:碰到回车(ENTER)为一个记录。 O:一行为一个记录。 2、文件:文件为同类记录的集合,文件的读取单位为记录。,3.3.2表控输入语句,一、含义 输入:数据 内存(变量) 赋值语句:定值,少量,程序中变值 输入语句:变动(待定),批量,执行时送值,二、写法 简单的输入语句: Read *,变量名表 Read(*,*)变量名表,例:Read*,A,D,F,三、功能:执行时,暂停,等待用户从键盘输入数据, 分别赋给各变量,赋值顺序自左向右。 四、程序执行过程中按表控格式输入数据 各数据间有分隔符:,或空格。 类型匹配:整型:带小数点只取整数部分; 实数:可以为整数; 复数:(实部,虚部); 字符:一串字符:赋值时长度转化 或一串字符 即可省略。 逻辑:以T或F作为第一个字母的字符串 (点号1个、空格多个在前忽略),例:read *,I 输入:2.5 取2 3.输入的数据必须是常数,不能是变量和表达式 如输入2+1,则出错。出错信息: run-time error F6601:Read(con)-Invalid Integer 含义: 输入了无效的整数 4.输入数据个数: 1)不得少于变量的个数; 2)可分行输入; 3)多余的数据不起作用,5.空格可以多个,/表示输入数据结束,后面的数据被取消,没有输入数据的变量值为原值; Read*,A,B,C 输入: 2,1/3 结果: A=2 B=1 C=0 6、如果几个连续变量需要赋同一个值,可以使用重复因子r,即r*c: r为重复数 4*0.5,2*3,2*AB,3*(1.0,-1.0),7.多个Read语句 每个Read必须从一个新的行输入数据 例:read*,a,b,c,d read*,e 1,2,3 数据不够,继续读取下一行 4,5 5 作为无效数据被放弃 6,3.3.3表控输出语句,一、含义:数据 显示 二、写法:WRITE (*,*)输出表 PRINT*,输出表,表控格式,变量名,表达式:值 常量:原样输出 空:空行 变量之间用逗号分隔,三、功能:按表控格式依次输出各数据的值。 例:PRINT*,N=,N,固定的输出宽度,类型:复型: 带( )输出 逻辑型:T,F 输出一个字符 字符型:丢失,采用左对齐输出,表控输出的格式,3.一行显示不下,数据自动换行输出 4.多个PRINT语句:每个开始输出一个新的记录,输入输出的三种不同的格式: 1表控格式的输入输出 2有格式的输入输出 3带控制信息表的输入输出 要素: 1在什么外部设备上输入或输出 2用什么格式输入输出 3输入输出哪些数据,3.4 输入与输出编辑符,READ (,) READ , WRITE (,) PRINT , 常用输入设备:键盘、卡片机、磁盘 常用输出设备:显示器、打印机、磁盘 如:READ(5,*)X WRITE(*,*)X,输入与输出的一般形式,格式说明:*、格式字符表达式 作用:精确地说明每一个数据应该怎样输入或输出,包括类型、小数点位置、有效位数、输出结果的形式,例:字符表达式或变量 WRITE(*,( I5,3F5.4,A16 )IOLIST 或: CHARACTER(80)MYLIST MYLIST=( I5,3F5.4,A16 ) WRITE(*,MYLIST)IOLIST,1I 编辑符控制输出: 功能:用于整型数据的输入输出 格式: Iw Iw.m rIw w输入输出数据字段总宽度 m至少m位数字 r为重复系数,一. 整型编辑符:Iw.m,例1设 J=10, K=-12,L=123 WRITE (*,”(I3,I5,I7)”)J,K,L,10-12123,注意: 1数字在指定的区域内右端对齐,不足w则左边补空格。 2负数的符号也包含在字段宽度内 3如果应输出的列数超过了规定的字段宽度,则不输出有效数据,以w个*填充。,例2在上例中,如果 J=-100,则结果为: *-12123 例3如果将格式串改为: “(I3,I5.4,I7.5)” 则输出: 10-001200123 例4如果L=123456 10-0012123456 !Iw.m :m位数,则按照实际数输出,例1设 J=10, K=-12,L=123 WRITE (*,”(I3,I5,I7)”)J,K,L,例5 如下表所示: 数据 格式 输出结果 -150 I5 -150 1234 I6.5 01234 4357 I7.3 4357 -2468 I4 *,注意:利用I编辑符输出时,应注意选择的w的值不能太小,以免出现字段宽度不够现象。一般选择w稍大一些。,则格式串: print “(2I3,I4)”,I,J,K 则输出结果为: 10-12123,例6设 J=10, K=-12,L=123,2I 编辑符控制输入: rIw w控制数据所占的列数。,例7 READ(*,”(I4,I5)”)I,J 输入数据如下: 345415 输入数据后按回车键,则I=345,J=415,例8程序如下: READ(*,(I3,I3,I3)I,J,K !注意格式串的使用 或 READ(*,(3I3)I,J,K 输入123456789 如I=14,J=-25,K=234,按格式(I2,I4,I4) 输入则应为:14-25234,例9如下表所示:,说明:BN, BZ :Blank interpretation Specifies interpretation of blanks in numeric fields (空格是否当0处理)仅用于输入格式语句,如 read “(BN,2I3)”,I,J,210,543,1编辑符格式 rFw.d 将数据按小数形式输出 rEw.d 将数据按指数形式输出 rGw.d 根据数据大小决定采用E或F格式 r重复系数 w字段宽度(总宽度) d小数部分宽度,二、实型编辑符,F编辑符 功能:用于实数编辑,小数形式的输出(浮点数:单精度实数,4个字节,7个有效数字) 当实型数值小于0.0(负数)时,则w=n+d+2 当实型数值大于或等于0.0时,则w=n+d+1 用此来确定w的宽度,1)实数的输入(三种方式) READ(*,(F4.1,2F10.6))A,B,C 输入:124567-83527,则a=1.2;b=45.67;c=-8.3527 !不带小数点 输入不带小数点,则由编辑符指定位置自动加上小数点。按w截取数据,由d决定小数点的位置,按右对齐,空格当0,(2)1.245.67-8.3527,READ(*,(F4.1,2F10.6))A,B,C,!带小数点。输入的数据本身带小数点,如果编辑符中规定的小数点位置和数据本身的小数点位置有矛盾,按“自带小数点优先”原则,d不起作用,小数点记入w中,READ(*,(F4.1,2F10.6))A,B,C,(3)1.2,45.67,-8.3527(表控格式) !用自由格式,逗号分隔,但每个数连同后随逗号必须=w,否则出错。,注意:d可以为0,但不能省略。如下表所示:,例:X=25.6 Y=-378.456 Z=873.2 PRINT (F5.1,2F8.2) , X,Y,Z,2)实数输出:,结果:25.6-378.46873.20,注意: 1 w包括数符和小数点两位 2 若数据小于w位,则左边补空格 3 输出值时舍入,而不是截断 4. 如果是科学计数法则转换小数形式,例:REAL*4:G,H,E,R G=12345.678;H=12345678.;E=-4.56E+1;R=-365. WRITE(*,(F8.2) G,H,E,R WRITE(*,(4F10.1) G,H,E,R END,结果: 12345.68 !舍入,取2位小数 *!所给描述符整数位不够 -45.60 !输出时转换为小数形式 -365.00 !输出时小数点占宽度 123456.712345678.0-45.6-365.0 说明:优点,输入时准备数据方便,和数学中实数的写法相同,输出时,数据便于阅读。 缺点,必须预先知道输出数据的范围。另容易产生“大数印错”、“小数印丢”。,大数印错”、“小数印丢”,X=123567890.876543 Y=0.000001245 WRITE(*, (1X,F15.6,F15.2) X,Y 输出结果: * 0.00 15列 15列 X Y,E编辑符 Ew.dEe 格式:数符+0+小数点+小数部分+E+符号+指数部分2位 3 d 4 指数部分宽度固定4列,w=d+3+4 优点:不必事先估计数的大小,能容纳任意大小的数据。 Ew.dEe e指定指数的宽度,例:用E格式输出数据 X=-84.31 Y=3.141592 Z=0.0187 WRITE(*, (E10.3,E13.6,E15.6) )X,Y,Z 结果?,-0.843E+020.314159E+010.187000E-01,规则: 1wd+7 数据右对齐,左边用空格填满w位 若wd 四舍五入取d位 尾数位数d 其后用0补齐 注意:一般格式E16.7 7+7+2(2个空格,以便阅读),改写该格式为: X=-84.31 Y=3.141592 Z=0.0187 WRITE(*,200)X,Y,Z 200 FORMAT(E10.3,E13.6,E15.6) 或 CHARACTER(30):MYLIST MYLIST=( E10.3,E13.6,E15.6 ) WRITE(*,MYLIST)X,Y,Z,G编辑符 功能: 根据输出实数大小决定用F或E格式输出。 较大或较小,自动按E格式 Gw.d 条件:1.abs(A)10d 使用E格式输入输出 条件:10dabs(A)=0.1 使用F格式输入输出,A=758321.6 G14.7 ABS(A)107 用E格式 0.7583216E+08 注意:采用F格式,d为全部数字的位数 优先满足整数位,格式: Dw.d 数符+0+小数点+小数部分+D+符号+指数部分2位 3 d 4 方法同E格式,三、 双精度数的输入输出,复型数据是用两个实型编辑符(例如,用2Fw.d或(Fw.d,Fw.d)或2Ew.dEe来分别描述该复型的实数部分与虚数部分的。 如:COMPLEX:X X=(2.8,4.6) PRINT (2F4.1),X 输出结果为: 2.8 4.6,四. 复型编辑,格式:rLw 功能:逻辑值的输入输出 规则: 输出一个字母,在字段最右端,前面补空格 输入时按宽度读取,以第一个字母作为逻辑值,五.逻辑型数的输入输出,六、字符型编辑A,A用来编辑字符型变量,它不关心该字符串的长短如何。例: CHARATER*5 A,B,C READ(*,(A,A,A))A,B,C WRITE(*,(A,2X,A,2X,A))A,B,C END 输入:ABCDBASICFORMAT,结果:ABCDBASICFORMA,注意: 对于字符型数据的输入: 1、 在表控格式输入的时候,输入的字符串可以加上撇号,也可省略,撇号不起作用 2、 在有格式输入的时候,输入的字符串的时候不需要加上撇号,如果输入带撇号,则撇号算入W宽度,,1)X编辑描述符 功能1:在输出时产生空格,它的一般形式为: nX 例: K=123 L=2001 A=34.5 WRITE(*,(I3,2X,I4,3X,F4.1))K,L,A,六. 其他格式编辑符,结果:123200134.5,功能2:输入时,表示跳过n个字符 READ(*,(2X,F7.1))A 输入:1234.51,A=34.51 !12跳过,2撇号编辑符(单或双) 功能:撇号内的字符串原样输出。 3H编辑符: 描述字符串 nH 注意:1. N 必定等于字符串长度,否则编译出错 2. 字符串中空格有意义,X=45.7 Y=289.7 WRITE(*,100)X,Y 100 FORMAT(2HX=,F5.1,4HY=,F6.2) END,结果:X=45.7Y=289.70 也可FORMAT( X=,F5.1,Y=,F6.2),4斜杠编辑描述符 作用:结束本记录的输出并开始下一个记录的输出 WRITE(*,(5HABCDE,/,5HBCDEF,/,1X,5HCDEFG)) 结果如下所示: ABCDE BCDEF CDEFG 注意:1.如两个连续斜杠,在输完前面记录后,空一行再输出 2.如在编辑符的最后出现一个斜杠在输出完记录后,再输出一个空行,作用:当输入表、输出表输完后,阻止后面的编辑符起作用。但若输入、输出表未结束之前,不起作用。,5冒号编辑符:,INTEGER:X,Y,Z X=1;Y=2;Z=3 PRINT (1x,I1:“+“,I1:,“+“,I1:“+“),X,Y,Z END,输出结果为: 1+2+3,带控制信息表的输入输出,1、带控制信息表的读语句(P49) READ(说明符1,说明符2,说明符n)输入表 关键字=指定参数 这里的说明符是指一些附加的功能(例如,指示读入是否出错,出错如何处理等),这些功能每一个可写成一个控制说明符,彼此用逗号分开,全部控制说明符用一对括号括起,写在读关键字和输入表之间,称为控制信息表。,例如:,WRITE(说明符1,说明符2,说明符n)输出表 WRITE(UNIT=6,FMT=(1X,2F8.2),IOSTAT=M)X,Y 各部分与输入语句中基本相同。,带控制信息的输出语句(P51),例:,program main real:a,b integer:m read(UNIT=5,FMT=*,IOSTAT=m)a,b print *,A,B print *,m end,read(*,*,IOSTAT=m) A,B,1 一个记录的编辑格式由它所需的各种类型编辑符组合在一起,彼此用逗号分开,并用括号括起来,再在外面加上单撇号(或双撇号)做定界符。如: (编辑符1,编辑符2,编辑符n) 例:PRINT (1X,F3.1,”AND”,F3.1),X,Y,3.4.2 有关一个记录的编辑格式说明,3 记录编辑格式如有相连的几个相同的编辑符,则可简化为一个编辑符,但在前边需加上重复系数。 例:PRINT (1X,F6.1,F6.1,I7,I7),A,B,C,D 可写为: PRINT (1X,2F6.1,2I7),A,B,C,D,2. 编辑符的类型必须与输入(或输出)表中对应位置数据

温馨提示

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

评论

0/150

提交评论