清华大学C课程第2讲市公开课一等奖省赛课微课金奖课件_第1页
清华大学C课程第2讲市公开课一等奖省赛课微课金奖课件_第2页
清华大学C课程第2讲市公开课一等奖省赛课微课金奖课件_第3页
清华大学C课程第2讲市公开课一等奖省赛课微课金奖课件_第4页
清华大学C课程第2讲市公开课一等奖省赛课微课金奖课件_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

第二章C++简单程序设计清华大学C++语言程序设计1第1页本章主要内容C++语言概述基本数据类型和表示式数据输入与输出算法基本控制结构自定义数据类型2第2页C++语言起源BjarneStroustrup用Simula语言写了一个模拟器。程序编写顺利,但Simula实现太糟,编译与运行非常慢。

好工具:1.含有Simula那样对程序组织支持,类、类层次结构等;2.编译、运行速度快;3.可移植性好C非常流行,很多操作系统都是用C编写,移植性和灵活性非常好。C++语言设计是想为系统程序设计提供Simula程序组织功效,又提供C语言高效与灵活性。该目标当初不含有任何创新性,但它非常成功。

C++语言概述3第3页C++语言产生C++是从C语言发展演变而来,首先是一个更加好C引入了类机制,最初C++被称为“带类C”1983年正式取名为C++从1989年开始C++语言标准化工作于1994年制订了ANSIC++标准草案于1998年11月被国际标准化组织(ISO)同意为国际标准。年公布了C++标准第二版,成为当前C++C++仍在不停发展,下一次标准公布预计在年C++语言概述4第4页C++特点全方面兼容C它保持了C简练、高效和靠近汇编语言等特点对C类型系统进行了改革和扩充C++也支持面向过程程序设计,不是一个纯粹面向对象语言支持面向对象方法C++语言概述5第5页C++语言同Java和C#关系

C++是Java和C#始祖,语法和面向对象模式相同。C++、Java和C#是为处理不一样类型问题而设计。C++主要用来编写高性能软件。Java和C#用于实现有跨平台需求应用开发。

6第6页C++程序实例—例2-1/*2_1.cppc++程序结构由注释、编译预处理和程序主体组成*/#include<iostream>usingnamespacestd;intmain()//main()函数是C++程序入口点,必须{cout<<"Hello!\n";//cout是预定义流类对象

cout<<"Welcometoc++!\n";//<<是流操作符

return0;}//大括号把函数体与其它部分分隔开

运行结果:Hello!Welcometoc++!C++语言概述7第7页C++字符集大小写英文字母:A~Z,a~z数字字符:0~9特殊字符:空格 ! # % ^ & *

_(下划线) + = - ~ < > / \ ' " ; . , () [] {}C++语言概述8第8页词法记号关键字

C++预定义单词标识符

程序员申明单词,它命名程序正文中一些实体文字 在程序中直接使用符号表示数据操作符 用于实现各种运算符号分隔符(){},:;

用于分隔各个词法记号或程序正文空白符 空格、制表符(TAB键产生字符)、换行符(Enter键所产生字符)和注释总称C++语言概述9第9页标识符组成规则以大写字母、小写字母或下划线(_)开始。能够由以大写字母、小写字母、下划线(_)或数字0~9组成。大写字母和小写字母代表不一样标识符。不能用C++关键字。不能中间有空格。C++语言概述10第10页C++简单程序举例

——计算圆周长和面积/*程序功效:计算圆周长与面积*/#include<iostream>usingnamespacestd;intmain(){constfloatPI=3.1415926;//float型常量 floatr,length=0,area=0;//用float型常量初始化变量 cin>>r; //输入圆半径 length=2*PI*r; //计算圆周长 cout<<“Length=”<<length<<endl; //输出圆周长 area=PI*r*r; //计算圆面积 cout<<"Area="<<area<<endl; //输出圆面积 return0;}11第11页简单输入、输出向标准输出设备(显示器)输出例:intx;doubley;cout<<“x=“<<x<<endl;cout<<“y=\n“<<y<<endl;从标准输入设备(键盘)输入例:intx;floaty;cin>>x;cin>>y;12第12页数据类型

——C++基本数据类型

整数类型:short,int,long,unsignedint,unsignedshort,unsignedlong

实数类型:float,double,longdouble字符类型:char布尔型:bool13第13页数据类型

——常量与变量

常量是指在程序运行整个过程中其值一直不可改变量。变量是指在程序执行过程中其值能够改变量,变量是需要用名字来标识。变量一定要先申明其类型和名称,然后才使用。符号常量在使用前也要先申明,而且申明同时就要初始化。程序中常量不能再被赋值。常量和变量都有数据类型。

14第14页数据类型

——常量与变量#include<iostream>usingnamespacestd;intmain(){constintPRICE=30;intnum,total;floatv,r,h;num=10;total=num*PRICE;cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;cout<<v<<endl;}变量变量先声明后使用符号常量Page15基本数据类型和表示式15第15页#include<iostream>usingnamespacestd;intmain(){constintPRICE=30;intnum,total;floatv,r,h;num=10;total=num*PRICE;cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;cout<<v<<endl;}数据类型

——整型数据整型常量shortunsignedshort2字节int、unsignedint

4字节longunsignedlong4字节整型变量整型变量申明基本数据类型和表示式16第16页数据类型

—整型数据及取值范围类型 说明符 位数 数值范围 短整 short 16 -32768~32767基本 int 32 -231~(231-1)长整 long 32 -231~(231-1)无符号

unsignedshort 16 0~65535

unsignedint 32 0~(232-1)

unsignedlong 32 0~(232-1) 基本数据类型和表示式17第17页数据类型

——整型数值溢出例子

#include<iostream>usingnamespacestd;intmain(){shortinti;//signedshort类型整数(-32768-32767)shortunsignedintj;//unsignedshort类型整数(0-65535)j=50000;i=j;//将unsignedshort赋值给signedshort变量cout<<"Theshortintis:"<<i<<endl; //整型数值溢出cout<<"Theshortunsignedintis:"<<j<<endl;return0;}Theshortintis:-15536Theshortunsignedintis:5000018第18页#include<iostream>usingnamespacestd;intmain(){constintPRICE=30;intnum,total;

floatv,r,h;num=10;total=num*PRICE;cout<<total<<endl;r=2.5;h=3.2f;v=3.14159*r*r*h;cout<<v<<endl;}

数据类型

——实型数据实型常量float4字节3.4×10±387位有效数字double8字节1.7×10±30815位有效数字longdouble

8字节

1.7×10±30815位有效数字实型变量缺省为double型后缀F(或f)

为float型后缀L(或l)

为longdouble

型基本数据类型和表示式19第19页

数据类型

——字符型数据(一)字符常量单引号括起来一个字符,如:'a','D','?','$'字符变量用来存放字符常量

例:charc1,c2;

c1='a';

c2='A';字符数据在内存中存放形式以ASCII码存放,即以整数表示,占1字节,用7个二进制位Page20基本数据类型和表示式20第20页字符数据使用方法字符数据和整型数据之间能够运算。charc=65;字符数据与整型数据能够相互赋值。chard=c+1;字符串常量例:"CHINA"

"a"

'a'所以:charc;

c="a";CHINA\0a

\0aPage21

数据类型

——字符型数据(二)基本数据类型和表示式21第21页数据类型

——布尔型数据布尔型变量说明:

例:boolflag;布尔型数据取值:

只有false和true两个值基本数据类型和表示式22第22页数据类型

——变量初始化例:

inta=3;

doublef=3.56;

charc='a';

intd(5);Page23基本数据类型和表示式23第23页变量存放类型auto属于一时性存放,其存放空间能够被若干变量屡次覆盖使用。变量申明默认存放类型。register存放在通用存放器中。extern在全部函数和程序段中都可引用。static在内存中是以固定地址存放,在整个程序运行期间都有效。基本数据类型和表示式24第24页算术运算符与算术表示式基本算术运算符+-*/(若整数相除,结果取整)%(取余,操作数为整数)优先级与结合性先乘除,后加减,同级自左至右++,--(自增、自减)例:i++;--j;

5++;//error,自增、自减操作数不能是常数Page25基本数据类型和表示式25第25页赋值运算符和赋值表示式

简单赋值运算符"="举例

sum=sum+5表示式类型

等号左边对象类型表示式值

等号左边对象被赋值后值Page26基本数据类型和表示式26第26页赋值运算符和赋值表示式

复合赋值运算符有10种复合运算符:

+=,-=,*=,/=,%=,

<<=,>>=,&=,^=,|=例

a+=3等价于a=a+3

x*=y+8等价于x=x*(y+8)基本数据类型和表示式27第27页赋值运算符和赋值表示式

——赋值表示式举例a=5 表示式值为5a=b=c=5

表示式值为5,a,b,c均为5a=5+(c=6)

表示式值为11,a为11,c为6a=(b=4)+(c=6)

表示式值为10,a为10,b为4,c为6a=(b=10)/(c=2)

表示式值为5,a为5,b为10,c为2a+=a-=a*a相当于

a=a+(a=a-a*a)Page28基本数据类型和表示式28第28页逗号运算和逗号表示式格式表示式1,表示式2,…,表示式n求解次序及结果先求解1表示式,再求解表示式2,…再求解表示式n,最终止果为表示式n值例a=3*5,a*4最终止果为60Page29基本数据类型和表示式29第29页关系运算与关系表示式关系运算是比较简单一个逻辑运算,优先次序为:

<<=>>===!=

优先级相同(高)优先级相同(低)关系表示式是一个最简单逻辑表示式其结果类型为bool,值只能为true或false。比如:a>b,c<=a+b,x+y==3注意==与=在使用中不要搞错,同时注意四舍五入所带来逻辑错误。基本数据类型和表示式30第30页关系运算

——四舍五入带来逻辑错误

#include<iostream>usingnamespacestd;intmain(){doublex=10/7.0;cout<<"x="<<x<<endl; if(x==1.142857142857)cout<<"x==10/7.0\n";//存在四舍五入带来逻辑错误 elsecout<<"xdoesnotequal10/7.0\n"; return0;}结果:x=1.42857xdoesnotequal10/7.031第31页逻辑运算与逻辑表示式逻辑运算符

!(非)&&(与)||(或)

优先次序:高→低逻辑表示式

比如:(a>b)&&(x>y)

其结果类型为bool,值只能为true或false基本数据类型和表示式32第32页条件运算符与条件表示式普通形式表示式1?表示式2:表示式3表示式1必须是bool类型执行次序先求解表示式1,若表示式1值为true,则求解表示式2,表示式2值为最终止果若表示式1值为false,则求解表示式3,表示式3值为最终止果例:x=a>b?a:b;基本数据类型和表示式33第33页条件运算符与条件表示式注意:条件运算符优先级高于赋值运算符,低于逻辑运算符和关系运算符。表示式2、3类型能够不一样,条件表示式最终类型为2和3中较高类型。例:x=a>b?a:b;基本数据类型和表示式①②34第34页sizeof运算符语法形式

sizeof(类型名)

或sizeof(表示式)结果值:

“类型名”所指定类型或“表示式”结果类型所占字节数。例:sizeof(short)sizeof(x)基本数据类型和表示式35第35页位运算——按位与(&)运算规则将两个运算量每一个位进行逻辑与操作举例:计算3&53:000000115:(&)000001013&5:00000001用途:将某一位置0,其它位不变。比如:

将char型变量a最低位置0:

a=a&0376;取指定位。

比如:有charc;inta;

取出a低字节,置于c中:c=a&0377;基本数据类型和表示式36第36页位运算——按位或(|)运算规则将两个运算量每一个位进行逻辑或操作举例:计算3|53:000000115:(|)000001013|5:00000111用途:将一些位置1,其它位不变。

比如:将int型变量a低字节置1:

a=a|0xff;基本数据类型和表示式37第37页位运算——按位异或(^)运算规则两个操作数进行异或:

若对应位相同,则结果该位为0,

若对应位不一样,则结果该位为1,举例:计算071^052071: 00111001052:(^)00101010071^052: 00010011基本数据类型和表示式38第38页位运算——按位异或(^)用途:使特定位翻转(与0异或保持原值,与1异或取反)比如:要使01111010低四位翻转: 01111010(^) 00001111 01110101基本数据类型和表示式39第39页位运算——取反(~)单目运算符,对一个二进制数按位取反。例:025:0000000000010101~025:1111111111101010基本数据类型和表示式40第40页位运算——移位左移运算(<<)左移后,低位补0,高位舍弃。右移运算(>>)右移后,低位:舍弃

高位:无符号数:补0有符号数:补“符号位”基本数据类型和表示式41第41页运算符优先级括号++,--,sizeof*,/,%+,-==,!=位运算&&||?:赋值运算逗号运算低高基本数据类型和表示式加括号强制优先级把复杂算式分解42第42页混合运算时数据类型转换

——隐含转换一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个操作数类型一致。在算术运算和关系运算中假如参加运算操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本标准是将低类型数据转换为高类型数据。

charshortintunsignedlongunsignedlongfloatdouble

低高基本数据类型和表示式43第43页混合运算时数据类型转换

——隐含转换当参加运算操作数必须是bool型时,假如操作数是其它类型,编译系统会自动将非0数据转换为true,0转换为false。赋值运算要求左值与右值类型相同,若类型不一样,编译系统会自动将右值转换为左值类型。基本数据类型和表示式44第44页混合运算时数据类型转换

——强制类型转换语法形式:类型说明符(表示式)或(类型说明符)表示式强制类型转换作用是将表示式结果类型转换为类型说明符所指定类型。比如:

floatc;

inta=1,b=5;

c=float(a)/float(b);或c=(float)a/(float)b;基本数据类型和表示式45第45页语句语句是程序基本组成单元,它实现了程序功效,表示式是为语句所用。申明语句表示式语句选择语句循环语句复合语句46第46页表示式语句格式:表示式;表示式语句与表示式区分:表示式能够包含在其它表示式中,而语句不可。例:if((a=b)>0)t=a;不可写为:if((a=b;)>0)t=a;//error语句47第47页复合语句将多条语句用一对大括号包围,便组成一个复合语句。比如{ sum=sum+i; i++;} 语句48第48页次序结构分支结构循环结构算法基本控制结构49第49页怎样处理分支问题?例2-2输入一个年份,判断是否闰年。假如是闰年,输出闰年信息;假如不是闰年,输出不是闰年信息。算法基本控制结构50第50页#include<iostream>usingnamespacestd;intmain(){ intyear;

boolIsLeapYear;cout<<"Entertheyear:";cin>>year;

IsLeapYear=((year%4==0&&

year%100!=0)||(year%400==0));

if(IsLeapYear) cout<<year<<"isaleapyear"

<<endl;

else cout<<year<<"isnotaleapyear"

<<endl;}5151第51页运行结果:Entertheyear:isaleapyear5252第52页if(表示式)语句例:if(x>y)cout<<x;if(表示式)语句1else语句2例:if(x>y)cout<<x;elsecout<<y;if(表示式1)语句1

elseif(表示式2)语句2

elseif(表示式3)语句3

else语句nif语句

——三种形式算法基本控制结构53第53页怎样处理多分支问题?例2-3输入两个整数,比较两个数大小。算法基本控制结构54第54页#include<iostream>usingnamespacestd;intmain(){intx,y;cout<<"Enterxandy:";cin>>x>>y;

if(x>y)

cout<<"x>y"<<endl;else

if(x<y)cout<<"x<y"<<endl;else

cout<<"x=y"<<endl;return0;}5555第55页运行结果1:Enterxandy:58x<y运行结果2:Enterxandy:88x=y运行结果3:Enterxandy:128x>y5656第56页普通形式if()if()语句1else语句2elseif()语句3else语句4注意语句1、2、3、4能够是复合语句,每层if与else配对,或用{}来确定层次关系。if语句

——嵌套算法基本控制结构57第57页特殊多分支结构例2-4输入一个0~6整数,转换成星期,并输出活动内容。算法基本控制结构58第58页#include<iostream>usingnamespacestd;intmain(){ intday; cin>>day;

switch(day) {

case0: cout<<“星期日,购物"<<endl;break;

case1: cout<<“星期一,微积分课"<<endl;break;

case2: cout<<“星期二,物理课"<<endl;break;

case3:cout<<“星期三,英语课"<<endl;break;

case4: cout<<“星期四,班会"<<endl;break;

case5: cout<<“星期五,体育"<<endl;break;

case6: cout<<“星期六,老乡聚会"<<endl;break;

default:

cout<<“数据非法。"<<endl; }return0;}5959第59页普通语法形式switch(表示式){case常量表示式1:语句1case常量表示式2:语句2┆case常量表示式n:语句ndefault:语句n+1}switch语句执行次序以case中常量表示式值为入口标号,由此开始次序执行。所以,每个case分支最终应该加break语句。每个常量表示式值不能相同,次序不影响执行结果。能够是多个语句,但无须用{}。能够是整型、字符型、枚举型算法基本控制结构60第60页使用switch语句应注意问题case分支可包含多个语句,且不用{}。表示式、判断值都是int型或char型。若干分支执行内容相同可共用一组语句。算法基本控制结构61第61页怎样有效地完成重复工作例2-5求自然数1~10之和分析:本题需要用累加算法,累加过程是一个循环过程,能够用循环语句实现。While语句,do-while语句,for语句算法基本控制结构62第62页#include<iostream>usingnamespacestd;intmain(){inti(1),sum(0);

while(i<=10){sum+=i;//相当于sum=sum+i;

i++;

}cout<<"sum="<<sum<<endl;}运行结果:sum=556363第63页while语句语法形式while(表示式)语句

能够是复合语句,其中必须含有改变条件表示式值语句。执行次序先判断表示式值,为true时,再执行语句。算法基本控制结构64第64页先执行循环体,后判断条件情况例2-6输入一个整数,将各位数字反转后输出。算法基本控制结构65第65页#include<iostream>usingnamespacestd;intmain(){ intn,right_digit,newnum=0; cout<<"Enterthenumber:"; cin>>n; cout<<"Thenumberinreverseorderis";

do { right_digit=n%10;//取出右边数字 cout<<right_digit; n/=10;

}while(n!=0);cout<<endl;return0;

}6666第66页运行结果:Enterthenumber:365Thenumberinreverseorderis5636767第67页do-while语句普通语法形式do语句while(表示式)能够是复合语句,其中必须含有改变条件表示式值语句。执行次序先执行循环体语句,后判断条件。

表示式为true时,继续执行循环体与while语句比较:While语句执行次序

先判断表示式值,为true时,再执行语句算法基本控制结构68第68页对比以下程序:程序1:#include<iostream>usingnamespacestd;intmain(){inti,sum(0);cin>>i;

while(i<=10){sum+=i;i++;}cout<<"sum="<<sum<<endl;}算法基本控制结构程序2:#include<iostream>usingnamespacestd;intmain(){inti,sum(0);cin>>i;

do{sum+=i;i++;}while(i<=10);cout<<"sum="<<sum<<endl;}6969第69页for语句语法形式:for(表示式1;表示式2;表示式3)语句

循环前先求解为true时执行循环体每次执行完循环体后求解算法基本控制结构70第70页例2-8输入一个整数,求出它全部因子。算法基本控制结构71第71页#include<iostream>usingnamespacestd;intmain(){ intn,k; cout<<"Enterapositiveinteger:"; cin>>n; cout<<"Number"<<n<<"Factors";

for(k=1;k<=n;k++){ if(n%k==0)//算法 cout<<k<<"";}cout<<endl;return0;}7272第72页运行结果1:Enterapositiveinteger:36Number36Factors123469121836运行结果2:Enterapositiveinteger:7Number7Factors177373第73页例2-9编写程序输出以下列图案*************************算法基本控制结构74第74页#include<iostream>usingnamespacestd;intmain(){inti,j,n=4;for(i=1;i<=n;i++)//输出前4行图案{for(j=1;j<=30;j++)cout<<'';//在图案左侧空30列for(j=1;j<=8-2*i;j++)cout<<'';for(j=1;j<=2*i-1;j++)cout<<'*';cout<<endl;}7575第75页for(i=1;i<=n-1;i++)//输出后3行图案{for(j=1;j<=30;j++)cout<<'';//在图案左侧空30列for(j=1;j<=7-2*i;j++)cout<<'*';cout<<endl;}}7676第76页循环结构与选择结构相互嵌套#include<iostream>usingnamespacestd;intmain(){ intn; for(n=100;n<=200;n++) {

if(n%3!=0) cout<<n; }return0;}算法基本控制结构77第77页例2-10读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。分析:需要读入一系列整数,不过整数个数不定,要在每次读入之后进行判断,所以使用while循环最为适当。循环控制条件应该是n!=0。因为要判断数正负并分别进行统计,所以需要在循环内部嵌入选择结构。算法基本控制结构78第78页#include<iostream>usingnamespacestd;intmain(){inti=0,j=0,n;cout<<"请输入若干整数(输入0则结束):";cin>>n;

while(n!=0){if(n>0)i++;

if(n<0)j++;cin>>n;}cout<<"正整数个数:"<<i<<"负整数个数:"<<j<<endl;}7979第79页break和continue语句break语句使程序从循环体和switch语句内跳出,继续执行逻辑上下一条语句。不宜用在别处。continue语句结束此次循环,接着判断是否执行下一次循环。算法基本控制结构80第80页#include<iostream>usingnamespacestd;intmain(){ cout<<"Theevennumbersareasfollows:"<<endl; for(inti=0;i<=20;i++) {if(i%2)continue;//break?//依据条件使用continue结束此次循环 cout<<i<<''; } return0;}81第81页自定义数据类型C++语言不但有丰富内置基本数据类型,而且允许声明自定义数据类型。枚举类型结构类型联合类型类类型

而且使用类型定义语句能够为一个已经有数据类型定义多个别名。

82第82页typedef语句为一个已经有数据类型另外命名,注意并没有实际定义一个新数据类型。目标是增加程序可读性。语法形式typedef已经有类型名新类型名表;比如typedefunsignedintsize_t;size_tlen1;typedeflongtime_ttime_tstart_time;自定义数据类型83第83页枚举类型—enum只要将需要变量值一一列举出来,便组成了一个枚举类型。枚举类型申明形式以下:enum枚举类型名{变量值列表};比如:enumweekday{SUN,MON,TUE,WED,THU,FRI,SAT};weekdaya1;a1=SUN;通常使用枚举方式创建符号常量。自定义数据类型84第84页枚举类型—enum枚举类型应用说明:对枚举元素按常量处理,不能对它们赋值。比如,不能写:SUN=0;枚举元素含有缺省值,它们依次为:0,1,2,。也能够在申明时另行指定枚举元素值,如:enumweekday{SUN=7,MON=1,TUE,WED,THU,FRI,SAT};枚举值能够进行关系运算。整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。自定义数据类型85第85页例2-11设某次体育比赛结果有四种可能:胜(win)、负(lose)、平局(tie)、比赛取消(cancel),编写程序次序输出这四种情况。分析:因为比赛结果只有四种可能,所以能够申明一个枚举类型,申明一个枚举类型变量来存放比赛结果。自定义数据类型86第86页#include<iostream>usingnamespacestd;enumgame_result{WIN,LOSE,TIE,CANCEL};intmain(){game_resultresult;game_resultomit=CANCEL;intcount;for(count=WIN;count<=CANCEL;count++){result=(game_result)count;if(result==omit){cout<<"Thegamewascancelled\n";}else{cout<<"Thegamewasplayed";if(result==WIN)cout<<"andwewon!";if(result==LOSE)cout<<"andwelost.";cout<<"\n";}}return0;}8787第87页运行结果Thegamewasplayedandwewon!Thegamewasplayedandwelost.Thegamew

温馨提示

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

评论

0/150

提交评论