c语言实用教程(精品课件).ppt_第1页
c语言实用教程(精品课件).ppt_第2页
c语言实用教程(精品课件).ppt_第3页
c语言实用教程(精品课件).ppt_第4页
c语言实用教程(精品课件).ppt_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

程序设计基础 (C语言),第一章 程序设计基础,程序设计概述 算法概述及其表示 程序开发过程 C语言概述,1.1 程序设计概念,1.什么是程序设计,程序,制图,制表,设计,聊天,游戏,视频,软件,计算机,程序设计:用某种程序语言编写程序的过程,2.计算机语言的发展 计算机语言:人与计算机交流的工具。 种类: 机器语言 汇编语言 算法语言 面向对象语言 C语言是算法语言的一种。 C+是面向对象语言的一种,高级语言,机器语言 汇编语言 高级语言 Fortran 、 Basic 、 C 、C+等程序设计语言,10110000 00001111 00101100 00001010,MOV AX,15 ADD AX,10,a=15+10,计算:A=15+10,机器语言 1010 1001 0001 0110 0000 0001 0011 1100 0001 1000 0000 0001 0000 0000 0000 0000 0000 0000 0000 0000 高级语言(C语言) if (XY) Y=X+15; else Y=X-15;,3.结构化程序设计思想:三种基本结构 顺序结构:操作顺序执行。 选择结构:根据给定的条件是否成立 而选择执行某种操作。 循环结构:反复执行某些操作。,三种基本结构,顺序结构 选择结构 循环结构,#include #include void main() float a,b,c,d,x1,x2; scanf(“%f,%f,%f”, ,顺序结构示例:,#include #include void main() float a,b,c,d,x1,x2; scanf(“%f,%f,%f”, ,选择结构示例:,循环结构程序示例: void main( ) int i,sum=0; for(i=1;i=100;i+) sum=sum+i; printf(“sum=%d”,sum); ,反复执行,void main( ) int a,b=0,i; scanf(“%d”, ,a0时,a0时,自顶向下 逐步细化 模块化设计 结构化编码,程序设计的思想,1.2 算法的概念,从事各种工作和活动,都必须事先想好进行的步骤,然后按部就班地进行。 算法:解决一个问题而采取的方法和步骤。 对同一个问题,可以有不同的解题方法和步骤。方法有优劣之分。,算法也有优劣。,常用的有: 自然语言(人的日常使用语言) 伪代码 传统流程图 结构化流程图(N-S)等,怎样表示一个算法,算法的特点: 1、有穷性 2、确定性 3、有零个或多个输入 4、有一个或多个输出 5、有效性,用最原始的方法进行。 步骤1: 12=2 步骤2: 23=6 步骤3: 64=24 步骤4: 245=120。 这就是最后的结果。 这样的算法虽然是正确的,但太繁琐。,例 求12345。,传统流程图,例 求12345。,弊端流程线,图2.8,在传统流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其他的从属于它的框,或者说,由一些基本的框组成一个大的框。这种流程图就称N-S结构化流程图。这种流程图适于结构化程序设计。,N-S结构化流程图表示算法,(2) 选择结构,(1) 顺序结构,N-S流程图用以下的流程图符号:,(3) 循环结构:,直到型循环结构,当型循环结构,直到p1条件不成立为止。,直到给定的p1条件成立为止,例 求12345。,程序的开发过程:,目标程序,可执行程序,计算结果,编译,链接,运行,源程序,编辑,程序设计一般包括以下几个步骤:,(1)分析问题并建立相应的数学模型。 (2)确定数据结构和算法。 (3)编程。 (4)调试。 (5)整理并写出文档资料。,例1:计算面积为12.5 cm2的园的半径。 分析:s=r2 r=sqrt(s /); 程序: #include #include #define PI 3.14 void main( ) float r,s; s=12.5; r=sqrt(s/PI); printf(“半径为:%f”,r); ,N-S流程图?,例2: 输入3个数,输出最小的数。,分析问题: 定义4变量x、y、z 、min ,从键盘依次输入3个数给x、y、z赋值, min存放最小数。 用自然语言描述该算法: (1)输入x,y,z。 (2)若xy,则xmin,否则ymin。 (3)若zmin,则zmin。 (4)输出min,min即为最小数。,程序: #include void main( ) int x,y,z,min; scanf(“%d%d%d”, ,鸡兔同笼 枚举算法,例3:今有鸡兔同笼,上有三十五头,下有九十四 足,问鸡兔各几何?”,分析如下: 问题数学化。 设:有x只鸡,y只兔,列出二元一次方程组: x+y=35 (1) 2*x+4*y=94 (2),具体程序,#include int x,y ; void main() for(x=1;x=35;x+) for(y=1;y=35;y+) if(x+y=35) if(2*x+4*y=94) printf(“鸡:%d 兔:%dn”,x,y); ,for(y=1;y=35-x;y+),减少循环次数?,C语言是国际上广泛流行的计算机高级语言,既可用来写系统软件,也可用来写应用软件。它既具有一般高级语言特性,又具有低级语言特性,集高级语言和低级语言优点于一身。,1.3 C语言概述,其特点: (1)语言简洁、紧凑,自由。 (2)运算符丰富,共有34种运算符。,(3) 数据结构丰富。有整型、实型、字符型、 数组类型、指针类型、结构体类型等,(4)是模块化的程序设计语言,各模块功能独立。,(5) C语言具有很好的通用性,既可以用于编 写应用软件,也适合编写系统软件。,C语言与C+?,一、 C语言的基本符号,void main( ) printf(“这是一个示例n”); ,程序示例,C语言的基本符号包括三类符号: 英文字母: AZ,az 数字符号: 09 特殊字符: ! # % _ ,二、关键字 概念:关键字又称保留字,它是C语言系统已定义了的专用名字,共有32个。它们主要是一编制C语言源程序会用到的类型名、命令名等。,类型名:int float char long double short union struct unsigned signed 结构控制:if else for while do goto switch countinue break,三、标识符,1 标识符 程序员定义的名字:函数名,变量名等。,2 定义规则 只能由字母(A-Z, a-z)、数字(0-9)或下划线(_)组成。 必须以字母或下划线开头。 不能使用保留字。,标识符示例:,sum array_1 _num1 SUM,1num num-1 边_a -3 int,SUM与sum是两个不同的标识符。 C语言区分大小写字母。,注意,正确:,错误:,四、C语言程序的结构,示例1 仅由main( )函数构成的C语言程序。 void main( ) printf(“This is a C program.n”); ,1 总体结构 一个完整的C语言程序由若干个函数组成。 必须有且只能有一个主函数main( )函数。 没有、有一个或多个若干个其它函数。,示例2 由main()函数和1个其它函数max()构成的语言程序。 int max(int x, int y) return( xy ? x : y ); void main() int num1,num2; scanf(“%d”, ,函数,主函数, 函数是C语言程序的基本单位 main()函数的作用,相当于网站的主页;其它函数的作用,相当于超链接的网页。被(超链接)调用的函数可以是系统提供的库函数,也可以是用户自己设计的自定义函数。, C语言程序总是从main( )函数开始执行,不考虑其在程序中的位置。当主函数执行完毕时,程序也就执行完毕。 习惯上,将主函数main()放在最前头,2 函数的一般结构,任何函数都是由: 函数首部 函数体 其一般结构如下: 函数类型 函数名(函数参数表) 说明语句部分; 执行语句部分; ,函数首部 函数类型 函数名(函数参数表),int max (int x, int y) return( xy ? x : y ); ,函数类型,函数名,参数表,主函数名为:main 函数可以没有参数,但括号不能省略。 void main(),注意,函数体,void main() int n1,n2; scanf(“%d”, ,在函数首部(说明部分)的下面、大括号内的部分。 由说明语句和可执行语句两部分构成:,五、C语言程序的书写格式,1.所有语句都必须以分号“;”结束,函数的最后一个语句也不例外。 2.程序行的书写格式自由,既允许1行内写几条语句,也允许1条语句分写在几行上。 3. C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。C对输入输出实行“函数化”。 4.允许使用注释。 C语言的注释格式为: /* */,例:求两数之和 #include void main ( ) /*求两数之和*/ int a,b,sum; /*这是声明部分,定义变量a,b,sum为整型*/ a=123; b=456; /* 以下3行为C语句 */ sum=a+b; printf (“sum is %d/n“, sum); ,输出: sum is 579,使用标准函数库中的函数声明,空类型:不产生函数值,复习,算法:解决一个问题而采取的方法和步骤。 表示算法的方法:自然,流程图,N-S,伪代 三个基本结构及3个共同特点 结构化程序设计方法及基本思想: 计算机语言种类:机器,汇编,高级(算面) 计算机语言执行过程 关键字(保留字),标示符3点要求 C语言程序的结构:main ,其他函数 函数结构:首,函数体,自顶向下 逐步细化 模块化设计 结构化编码,1 数据类型 C语言的数据类型是指数据的存在形式 及数据之间的联系。 2 C语言的数据类型,数据类型总表,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,在程序中所有数据都必须规定其数据类型,基本数据类型,整型,字符型,实型,有,无,说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例:,一、变量的概念 变量是指在程序的执行过程中其值可以发生变化的量。,#define PI 3.14 void main( ) float r,s; s=12.5; r=sqrt(s/PI); printf(“半径为:%f”,r); ,变量,二、变量的四要素 变量名 类型 值 存储单元,1 变量名,变量名:是变量的标识符。 注意:遵循标识符的命名规则。 一般使用小写字母,不超过8个字符。 如:sum ,num_1 2 变量的类型 类型不同存储不同 3 变量的值 。 4 变量的存储单元,整型变量存放形式。 int i; /* 定义为整型变量 */ i=10; /* 给i赋以整数10 */,内存中实际存放的情况。,实际上,数值是以补码表示的,-32767?,三、变量的定义 在C语言中,要求对所有用到的变量作强制定义,也就是“先定义,后使用”。,例: char a1,a2=a;(可以赋初值,但int a=b=c=3;错) int a=4,b; (指定变量a、b为整型) float x,y,z=10.7; unsigned int c,d; (指定变量c、d为无符号短整型) long e,f; (指定变量e、f为长整型),1 定义格式: 类型说明符 变量名列表;,四、说明 整型数据溢出:在turbo c中一个int型变量的 范围:-32768-32767,32767+1,会出现什么情况? 例:整型数据的溢出。 void main() int a,b; a=32767; b=a+1; printf(“%d,%d“,a,b); ,结果:32767, -32768 解决办法?,浮点型变量,1. 浮点型数据在内存中的存放形式 :4个字节(32位) 。,小数位多:精度高 指数位多:数值范围大,2.浮点型变量的分类 4B单精度(float型) :接收7位有效数字 8B双精度(double型):15位有效数字 16B长双精度型(long double):一般18位,例: float x,y; (指定x、y为单精度浮点数) double z; (指定z为双精度浮点数),3. 浮点型数据的舍入误差 由于有限的存储单元,提供有限有效数字,有效位以外的数字将被舍去。由此可能会产生一些误差。,例如,a 加 20的结果显然应该比a大。请分析下面的程序: 例3.4 浮点型数据的舍入误差。,void main() float a,b; a = 123456.789e5; b = a + 20 ; printf(“%f ,%f n“,a, b); b应为12345678920,结果:a和b的值都是 12345678848.000000,可以看到前8位是准确的,把20加在后几位上,是无意义的。应当避免将一个很大的数和一个很小的数直接相加或相减,用程序计算1.0/3*3的结果并不等于1。,字符变量 一个字符型变量只能放一个字符。 字符变量的定义形式如下: char c1,c2; c1=a;c2=b; 一个字符变量在内存中占一个字节。,存储单元中放什么?。,字符型数据和整型数据之间可以转换, 但有个条件:0-255(1个字节)。 一个字符数据:字符形式输出 整数形式输出 可以对字符数据进行算术运算 c= a+11; d=c+d;,字符数据与整型数据可以互相赋值。如: int i, s; char c; i=a; c=97;s=i+c;,变量初始化:定义时赋初值,例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;,变量的使用:先定义,后使用,例1 int student; stadent=19; /Undefined symbol statent in function main,例2 float a,b,c; c=a%b; /Illegal use of floating point in function main,变量定义位置:一般放在函数体开头,Ch2_005.c,例: 向字符变量赋以整数。 #include void main() char c1,c2; c1=97; c2=98; printf(“%c ,%cn“,c1,c2); printf(“%d ,%dn“,c1,c2); ,程序运行时输出如下: a,b 97,98,例3.7大小写字母的转换。 #include void main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“%c %c“,c1,c2); ,运行结果为 AB,printf(“%c,%dn“,c1+1,c1); printf(“%c,%dn“,c2+1,c2);,运行结果为 B, 65 C, 66,一、概念 常量:在程序的执行过程中,值不能变化的量。,#define PI 3.14 void main( ) float r,s; s=12.5; r=sqrt(s/PI); printf(“半径为:%f”,r); ,常量,二、种类 1一般常量: 一个数或字符。123(整)、A (字符) 、4.6、-1.23(实) 2 符号常量:用一个标识符表示一个常量。 PI、PRICE,一般常量,符号常量,符号常量的使用:,注意,定义语句在函数的外部:在首部的上面。 标识符一般使用大写字母,变量用小写, 且不与程序中的其它标识符相同。,定义格式: #define 标识符 常量 例: #define PI 3.14 #define G 9.8,注意:符号常量不同于变量,它的值在其作用域(本例中为主函数)内不能改变,也不能再被赋值。如再用以下赋值语句给PI赋值是错误的。 PI = 3.9 ;,表示方法,十进制整数:0 9,+,- 如:a=123,-543,0 八进制整数: 0 7,+、-,以数字0开始。 如:a=0123, 054 十六进制整数: 0 9、A F ,+、-, 以 0x开始。 如:a=0x123,0xa1,三、常量类型及表示方法,1 整型常量 类型 基本整型:值在-32768+32767(2个字节) 短整型:值在-32768+32767 (2个字节) 长整型:值在-2147483648 +2147483647 (4个字节) 无符号整型:值在0+65536 (2个字节),长整型数的表示: 在整型常量的后面加一个字母l或L。 如:345L 无符号整型数的表示: 在整型常量的后面加一个字母U。 如:234u,(1) 一个整数,如果其值在-32768+32767范围内,认为它是int型,它可以赋值给int型和long int型变量。 (2) 一个整数,如果其值超过了上述范围,而在-2147483648+2147483647范围内,则认为它是长整型,可以将它赋值给一个long int型变量。 int?,2 实型常量,表示: 十进制小数形式:由数字、小数点、+、-组成。 如:3.14159,-2.767 指数形式:由数字、小数点、+、-、字母e或E 组成。aen等价于a10n 如:1.2345e-19,0.3215E+23 规范化的指数形式:在字母e或E之前的小数部分 中,小数点左边应有一位(且只能有一位) 非零的数字(输出时),类型 单精度float:有效数位为7位。(32bit) 双精度double:有效数位为15位。(64bit) 表示时:默认为double型,可在数的后面 加字母f或F表示float型。,1.5f 13.456F 2.4 23.675,3 字符常量,表示 用单引号(即撇号)括起来的一个字符。 如:a,3,A 特殊形式的字符常量(转义字符,P48 表3.3 ) 以“”开始的一个字符序列,代表特殊的含义。 如:“n” 表示一个换行符这是一种“控制字符”也称转义字符,在屏幕上是不能显示的。,字符常量,字符常量的值:该字符的ASCII码值,如 101 -A 012 -n 376 - x61 -a 60 -0 483 -(),例: A-101-x41-65,如 A65, a97, 048 , n10,如 a A ? n 101,转义字符:反斜线后面跟一个字符或一个代码值表示,例 转义字符举例(ch2_001.c,ch2_004.c) void main() printf(“101 x42 Cn“); printf(“I say:“How are you?“n“); printf(“C Programn“); printf(“Turbo C“); ,运行结果:(屏幕显示) A B C Isay:”How are you?” C Program Turbo C,例 void main() printf(“Yb=n”); ,运行结果: 屏幕显示:= 打印机输出:,例3.5转义字符的使用。 #include void main() printf(“ ab ct derftgn“); printf(“htibbj k“); ,显示屏上最后看到是: f gde h j k,原有的“ ab c ”被ft 刷去。,t刷到下一个制表区 (8个格内),字符常量与字符串常量不同,4.字符串常量 定义:用双引号(“”)括起来的字符序列 存储:每个字符串尾自动加一个 0 作为字符串结束标志,例如: 10+a+1.5-8765.1234 *b 是合法的。在进行运算时,不 同类型的数据要先转换成同一 类型,然后进行运算。转换的 规则按图3.10所示。,各类数值型数据间的混合运算,横向向左的箭头表示必定的转换(只要运算) 纵向的箭头表示当运算对象为不同类型时转换。,不同类型数据间的转换 隐式转换 什么情况下发生 运算转换-不同类型数据混合运算时 赋值转换-把一个值赋给与其类型不同的变量时 输出转换-输出时转换成指定的输出格式 函数调用转换-实参与形参类型不一致时转换 运算转换规则:不同类型数据运算时先自动转换成同一类型,强制转换:转换得到所需类型的中间变量,原变 量类型不变. (int)(x+y) (显式转换) 一般形式:(类型名)(表达式) 例 (int)x%y (double)(3/2) (int)3.6,例 void main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 结果:x=3.600000,i=3,int(x+y),精度损失问题,运算符和表达式,学习运算符应注意: 运算符功能 与运算量关系 要求运算量个数 要求运算量类型 运算符优先级别 结合方向 结果的类型,算术运算符和表达式 基本算术运算符: + - * / % 结合方向:从左向右 优先级: 负号:- -* / % - + - (2) (3) (4) 说明: “-”可为单目运算符时,右结合性 两整数相除,结果为整数 %要求两侧均为整型数据,例 5/2 = -5/2.0 =,例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2,例 a= 5/2 = 2 f=-5/2.0 = -2.5,例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 (),自增、自减运算符+ - 作用:使变量值加1或减1 种类: 前置 +i, -i (先执行i=i+1或i=i-1,再使用i值) 后置 i+,i- (先使用i值,再执行i=i+1或i=i-1),例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,说明: + - 不能用于常量和表达式,如5+,(a+b)+ + -结合方向: 自右向左 优先级:- + - -* / % -+ - (2) (3) (4),例 -i+ -(i+) i=3; printf(“%d”,-i+); /-3,例 -i+ i=3; printf(“%d”,-i+);,Ch2_009.c,优先级及结合性 优先级:按运算符执行的先后顺序。 +,-,- (负号运算) *,/,% (P365附录C) +,- 例: 3*5+100/3,高,低,15,33,48,运算规则:按运算符的优先级由高到低计算。 相邻的同级运算符按结合性计算。,结合性:相邻两个同级运算符的运算顺序。 种类:左结合:自左至右计算。 右结合:自右至左计算。 基本运算: 双目运算符 %,*,/,+,- 左结合。 100%15/3 单目运算符 !,+,- 右结合 1+!5-+i,算术表达式的写法 注意运算符的写法:乘、除、乘方 例如:3A 3*A 括号的使用:只能使用小括号,表示运算次序。,适当使用内部函数: 例如:e-3+sin300 EXP(-3.0)+SIN(3.14/6) 所有字符写在同一行上。,(x+y)/(x-y),类型转换的几种情况: (1) 实型赋给整型:舍弃小数部分。 例如:int a a=15.0/2 (2) 整型赋给实型: 小数部分用0补充。 例如: float x x=15/2 (3) 字符型赋给整型:将ASCII码值放到 整型变量低8位中,高8位补0。 若字符最高位为1,高8位补1。 (4) 整型赋给字符型:取低八位赋值。,(5) 将一个double型数据赋给float变量时,截取 其前面7位有效数字(注意数值范围不能溢出) 如: float f; double d=123.456789e100; f=d; 出现溢出的错误。,不同类型的整型数据间的赋值归根到底就是一条: 按存储单元中的存储形式直接传送。, Int a=13,b=6; float c; c=a/b; printf(“c=%fn”,c); ,C=2.000000,例:有符号数据传送给无符号变量。 #include void main() unsigned int a; int b=-1; a=b; printf(“%u“,a); “%u” 是输出无符号数时所用的格式符。运行结果为:65535,赋值运算符和表达式 简单赋值运算符 符号: = 格式: 变量标识符=表达式 作用:将一个数据(常量或表达式)赋给一个变量,复合赋值运算符 种类:+= -= *= /= %= = = &= = |= 含义: exp1 op= exp2 exp1 = exp1 op exp2,例 a=3; d=func(); c=d+2;,说明: 结合方向:自右向左 优先级: 14 左侧必须是变量,不能是常量或表达式,赋值表达式的值与变量值相等,且可嵌套,赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型,例 3=x-2*y; a+b=3;,例 float f; int i; i=10; f=i; 则 f=10.0,例 int i; i=2.56; /结果i=2;,例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/表达式值为5,a,b,c值为5,/ b=5;a=5,/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=5,b=10,c=2,例: a=12; a+=a-=a*a,例: int a=2; a%=4-1; a+=a*=a-=a*=3;,/a=-264 等价于a=a+(a=a-(a*a),/a=0 等价于a=a+(a=a*(a=a-(a=a*3),逗号运算符和表达式 形式:表达式1,表达式2,表达式n 结合性:从左向右 优先级: 15 逗号表达式的值:等于表达式n的值(最后表达式值) 用途:常用于循环for语句中,例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a 例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表达式值60,/a=15,表达式值20,/赋值表达式,表达式值18,x=18,/逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3,例: #include void main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(“x=%dn“,x); ,运行结果:x=3,关系运算符和表达式 关系运算符 种类:= != 结合方向:自左向右 优先级别:,例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc),关系表达式的值:是逻辑值“真”或“假”,用1和0表示,例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc,/表达式值1,/表达式值1,/表达式值0,/d=1,/f=0,关系运算注意:,

温馨提示

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

评论

0/150

提交评论