C++程序设计-大模型思维与实践课件 第05章 分支程序设计_第1页
C++程序设计-大模型思维与实践课件 第05章 分支程序设计_第2页
C++程序设计-大模型思维与实践课件 第05章 分支程序设计_第3页
C++程序设计-大模型思维与实践课件 第05章 分支程序设计_第4页
C++程序设计-大模型思维与实践课件 第05章 分支程序设计_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

第五章分支结构程序设计C++程序设计——大模型思维与实践内容导航引言switch语句应用if语句大模型实践关系表达式与逻辑表达式程序测试If语句应用大模型探究条件表达式本章小结switch语句引言3分支结构允许程序根据不同的条件执行不同的代码块现实生活中的判断和选择如果天气预报有雨,出门要带伞,否则不带伞交叉路口看到绿灯,前行过马路,否则停下等待……C++程序设计中,可以使用if语句和switch语句实现分支结构。根据分支情况不同,可以分为单分支、双分支、多分支。引言4妻子:去超市买1个锅如果看到有鸡蛋,那么买20个丈夫:好勒!内容导航引言switch语句应用if语句大模型实践关系表达式与逻辑表达式程序测试If语句应用大模型探究条件表达式本章小结switch语句If语句6基本语法if(条件){语句块}“条件”:布尔值(true或false)条件为true,花括号{}内的语句块(可以包含多条语句)将被执行。条件为false,跳过if语句块中的代码如果语句块中只包含一个语句,花括号可省略:if(条件)一个语句举例有两个变量a和b,如果a大于b则交换它们的值。单分支if语句单分支结构流程图inta,b,temp;cin>>a>>b;if(a>b){temp=a;

a=b;

b=temp;}cout<<a<<","<<b;交换a、b流程图必须加上花括号,不能省略7基本语法if(条件){

语句块1}else{

语句块2}条件为true:语句块1(then子句)将被执行。条件为false:语句块2(else子句)将被执行。如果语句块只包含一个语句,可以省略花括号。举例

双分支if语句boolisRaining=true;//变量根据需要赋值if(isRaining){cout<<"记得带伞!"<<endl;}elsecout<<"不需要带伞。"<<endl;双分支结构流程图判断带伞流程图可以省略,变成单分支if语句。花括号可加可不加花括号可加可不加,此处省略8基本语法if(条件1){

语句块1}elseif(条件2){

语句块2//当条件1为false且条件2为true时执行}//可以有多个elseifelse{

语句块n+1//以上条件都不为true时执行}多分支if语句多分支结构流程图可以省略,则所有条件都不满足时,将不执行任何语句。elseif分支可以有多个,也可以没有。9举例输入一个成绩,输出成绩对应的等级A、B、C、D,代码如下:intscore;//一个变量表示学生的分数cin>>score;if(score>=90){cout<<"等级A"<<endl;}elseif(score>=80){cout<<"等级B"<<endl;}elseif(score>=70){cout<<"等级C"<<endl;}else{cout<<"等级D"<<endl;}多分支if语句成绩等级流程图10if语句嵌套

以上每种if语句的各个语句块中可以包含任意语句,包括if语句。举例

已知男性60岁退休、女性55岁退休。现要求输入性别和年龄,判断是否已经退休。intmain(){chargender;intage;cin>>gender>>age;if(gender=='M')if(age>=60)cout<<"退休\n";elsecout<<"未退休\n";elseif(gender=='F')if(age>=55)cout<<"退休\n";elsecout<<"未退休\n";elsecout<<"无效输入\n";return0;}if语句嵌套判断是否退休流程图11if语句的then子句和else子句可以包含一个或多个语句。当这些子句只包含一个语句时,可以省略花括号当它们包含多个语句时,必须使用花括号。“一个语句”的含义简单语句:以分号(;)结尾的语句。控制结构语句:一个if语句(包括else与elseif部分)一个switch语句(本章);

一个for、while、do-while语句(下一章)复合语句:用花括号({})括起来的一组语句

子句是否需要花括号inta;a=10;

cout<<"Hello"<<endl;{inta=10;cout<<a<<endl;}if(score>=90){cout<<"等级A"<<endl;}elseif(score>=80){cout<<"等级B"<<endl;}elseif(score>=70){cout<<"等级C"<<endl;}else{cout<<"等级D"<<endl;}12举例(1)then或else子句中包含多个简单语句,需要加花括号if(condition){cout<<"Conditionistrue."<<endl;//第一个语句intx=5;//第二个语句//...可能还有其他语句}else{;//空语句(只有一个分号的语句)也算一个语句cout<<"Conditionisfalse."<<endl;//这是第二个语句}子句是否需要花括号以分号(;)结尾的简单语句13举例(2)每个if语句(不管是单分支、双分支还是多分支)都只算“一个”语句if(outerCondition){

if(innerCondition)cout<<"Bothconditionsaretrue."<<endl;elsecout<<"Outertrue,innerfalse."<<endl;}else

if(innerCondition){ cout<<"Outerfalse,innertrue.";cout<<endl;}elsecout<<"Bothconditionsarefalse."<<endl;子句是否需要花括号“一个”语句“一个”语句两个语句花括号可加可不加必须加花括号花括号可加可不加14举例(3)空语句,最好加上花括号if(condition);//这是一个空语句,后面的代码不会被if控制 cout<<"会无条件执行."<<endlif子句是否需要花括号if(condition){;}//将空语句用花括号括起来cout<<"会无条件执行."<<endl;避免误解初学者容易犯错:随手加分号内容导航引言switch语句应用if语句大模型实践关系表达式与逻辑表达式程序测试If语句应用大模型探究条件表达式本章小结switch语句关系表达式和逻辑表达式16关系表达式

操作数1

op

操作数2

例如:age>=55

操作数可以是变量、常量或表达式,op是关系运算符关系运算符关系表达式运算符含义==、!=等于、不等于运算符,用于测试两个操作数是否“相等/不相等”。<、<=、>、>=用于测试操作数1是否“小于/小于等于/大于/大于”等于操作数2。运算规则两个参与比较的操作数必须是可以进行比较的数据类型。两个参与比较的操作数必须是相同类型。关系运算符的优先级低于算术运算符,高于赋值运算符。==用来判断是否相等不要误写为==为赋值操作17关系表达式举例

假设有变量inta=15和intb=20关系表达式表达式结果解释a+5==btrue先执行算术运算a+5,得到20,再与b判断相等。a-10>=b/4true先计算a-10等于5,b/4等于5,最后计算5>=5的结果为true。‘a’>atrue‘a’是字符,a是整型变量,需要先将‘a’转换为整数,即转换为它对应的ASCII码的值97,再测试97>a的结果,为true。18关系表达式举例

假设有变量inta=15和intb=20关系表达式表达式结果解释(a/2+3)<(b-10)false算术运算的优先级比关系运算高。“<”左边的计算过程为:计算15/2+3,等于7+3,结果为10。“<”右边的计算结果也为10最终结果为false。flag=a>bfalse先执行关系运算,a>b的结果为false,再赋值给flag。19布尔值被转换成数值当布尔值参与需要数值参与的运算操作时,把true和false分别转换成1和0参与运算。举例boolflag=true;inta=3,b=5;intsum1=flag+2;//true转换为1,因此sum1=1+2=3intsum2=(a>b)+5;//false转换为0,因此sum2=0+5=5关系表达式20布尔值被转换成数值常犯的错误,例如:charch;cin>>ch;if(‘A’<=ch<=’Z’)ch+=32;//小写字母的ASCII码比大写字母大32,加32可实现大写转小写关系表达式<=是双目运算符,只能判断两个数值的大小关系if(‘A’<=ch&&ch<=’Z’)

注意:不能使用表达式a<=b<=c判断b是否在a和c之间。需要改成a<=b&&b<=c21数值转换成布尔值数值可以当作布尔值使用,因为非零值转换为true,零值转换为false。举例关系表达式等价于if(b!=0)inta=3,b=-5;if(a)//a的值为3,作为布尔值时,为真cout<<"a为非0值"<<endl;elsecout<<"a为0值"<<endl;if(b)//b的值为-5,作为布尔值时,为真cout<<"b为非0值"<<endl;elsecout<<"b为0值"<<endl;if(a+b+2)//a+b+2表达式的值为0,作为布尔值时,为假cout<<"a+b+2为非0值"<<endl;elsecout<<"a+b+2为0值"<<endl;等价于if(a!=0)22数值转换成布尔值数值可以当作布尔值使用,因为非零值转换为true,零值转换为false。举例a=10;b=7;if(c=b%a){cout<<"不能整除,余数为:"<<c;}关系表达式等价于:c=b%a;if(c){…}注意:“=”:赋值“==”:判断相等。常犯的错误:if(sum=a+b)cout<<"sum与a+b相等";等价于:c=b%a;if(c!=0){…}23逻辑表达式表达式1

op

表达式2

例如:a>3&&a<5

表达式1和表达式2可以是关系表达式、逻辑表达式或布尔值,op是逻辑运算符逻辑运算符逻辑表达式运算符含义&&:逻辑与运算符表达式1的结果为true并且表达式2的结果也为true,最后结果为true,否则为false。||:逻辑或运算符表达式1的结果为true或者表达式2的结果为true,最后结果为true,否则为false。!:逻辑非运算符反转表达式的结果。优先级顺序:逻辑非(!)>逻辑与(&&)>逻辑或(||)>赋值(=)。24逻辑表达式举例

假设有变量intage=21,boolisStudent=true逻辑表达式表达式结果解释age>=18&&isStudenttrueage>=18结果为true,isStudent为true,逻辑关系为&&,因此表达式结果为true。age<18||isStudenttrueage<18结果为false,isStudent为true,逻辑关系为||,因此表达式结果为true。!(age>25)trueage>25结果为false,再取反,结果为true。25逻辑表达式表达式结果解释age>=18&&age<=40&&isStudenttrue表达式有两个&&运算符,按照从左到右的顺序计算。先计算age>=18&&age<=40,结果为true,再计算true&&isStudent,结果仍然为true。!(isStudent)||age>=18&&age<=40true表达式中,逻辑或||的优先级最低,因此,表达式等价于!(isStudent)||(age>=18&&age<=40),其中,!(isStudent)为false,继续测试逻辑或的右边表达式(age>=18&&age<=40),其结果为true,因此,整个表达式结果为true。逻辑表达式举例

假设有变量intage=21,boolisStudent=true运算符的优先级26逻辑表达式优先级运算符描述种类1!,++,--单目运算符(逻辑非、前置递增、前置递减)单目运算符2*,/,%算术运算符(乘法、除法、取模)算术运算符3+,-算术运算符(加法、减法)4<,<=,>,>=关系运算符关系运算符5==,!=相等运算符6&&逻辑与逻辑与、逻辑或7||逻辑或8=,+=,-=,*=,/=,%=赋值运算符及其复合形式赋值运算符单目运算符>算术运算符>关系运算符>逻辑与和逻辑或>赋值运算符根据表达式记忆:flag=3+2>4&&3-2<527举例假设有声明:intx=3,y=2;charch;逻辑表达式语句结果解释boolflag=x+y>5||!(x==y);true先将||运算符两边的结果分别计算出来:x+y>5结果为false,(x==y)结果为false,!(x==y)结果为true,赋值号右边的表达式为false||true,结果为true,最后赋值给flagx+y>5||!(x==y)&&y-xtrue由于优先级&&>||,所以先分别计算x+y>5和!(x==y)&&y-x,最后再进行“||”的运算。由上可知x+y>5结果为false,下面分析!(x==y)&&y-x:1、首先计算!(x==y),为true。2、计算y-x,等于2-3,即-1。3、计算&&的结果,其左侧为true,右侧为-1(非0的值转换为true),因此结果为true。因此可知,运算符||的左侧为false,右侧为true,最后结果为true。28举例假设有声明:intx=3,y=2;charch;逻辑表达式语句结果解释if(ch=cin.get()=='\n')cout<<ch<<"是换行符";读入回车时输出乱码读入字符后,先判断该字符是否为’\n’,将判断结果赋值给ch,ch得到的结果是1或0。再根据ch的值,判断它是true还是false,决定是否输出。读入回车时,cin.get()=='\n'等于true,再将该结果赋值给ch,ch的值等于1,输出的ch是个乱码(为ASCII码等于1的那个字符)。if((ch=cin.get())=='\n')cout<<ch<<"是换行符";输出正常相对上一个语句,本语句增加了一对圆括号,因此读入字符后,首先赋值给ch,再判断ch是否为’\n’,如果是,输出信息,该语句能正常输出。29逻辑表达式的短路运算逻辑表达式的计算过程中,一旦当前的操作数能够确定整个表达式的值,计算就会立即停止。好处:1)提高效率2)避免不必要的错误。逻辑与(&&)如果表达式的第一个操作数为false,那么整个表达式的结果都将是false,第二个操作数不会被使用。逻辑或(||)如果表达式的第一个操作数为true,那么整个表达式的结果都将是true,第二个操作数不会被使用。例如:判断b能否整除a以及余数多少,要求保证a不等于0,否则程序运行出错。if语句可如下编写:inta,b;cin>>a>>b;if(a!=0&&(c=b%a)){cout<<"不能整除,余数为:"<<c;}只有当a不为0时才执行c=b%a,避免除0错误逻辑表达式30逻辑表达式的短路运算inta=0;intb=10;if(a>0&&++b>10){

//此处不会执行}inta=10;intb=10;if(a>0||++b>0){//此处将会执行}逻辑与逻辑或被短路,不会被执行。被短路,不会被执行。逻辑表达式考虑到短路运算特性,++、--不管前置还是后置,都不能用拆分法进行理解:if(a>0&&++b>10)拆分成:++b;if(a>0&&b>10)将使得b的值加1,发生错误而使用打包法进行理解不会出错。打包成:if(a>0&&fp(b)>10)因为&&的后面不会执行,所以不会执行fp(b)去取++b的值内容导航引言switch语句应用if语句大模型实践关系表达式与逻辑表达式程序测试If语句应用大模型实践条件表达式本章小结switch语句If语句应用32例1从键盘输入一个字符,将其中的大写英文字母转换成小写字母,其它字符不变。if语句应用#include<iostream>usingnamespacestd;intmain(){charch;cout<<"Pleaseenteracharacter:";cin>>ch;//从键盘读取一个字符if(ch>='A'&&ch<='Z'){//判断字符是否为大写字母ch=ch+32;//转换为小写字母}cout<<"Theresultis:"<<ch<<endl;//输出结果return0;}if('A'<=ch<='Z')33例2

输入一个年份,判别该年是否闰年。闰年的条件是符合下面二者之一:①能被4整除,但不能被100整除,如2008。②能被400整除,如2000。if语句应用intmain(){intyear;cout<<"Pleaseenterayear:";cin>>year;//从键盘读取一个年份if((year%4==0&&year%100!=0)||(year%400==0)){cout<<year<<"isaleapyear."<<endl;}else{cout<<year<<"isnotaleapyear."<<endl;}return0;}34例3编写程序,输入x的值,根据以下函数求得y的值并输出:

解法1:intmain(){intx,y;cin>>x;if(x<0)y=-1;if(x==0)y=0;if(x>0)y=1;cout<<"x="<<x<<",y="<<y<<endl;return0;if语句应用注意:单分支if的判断条件需要互斥35intscore;//一个变量表示学生的分数cin>>score;if(score>=90){cout<<"等级A"<<endl;}elseif(score>=80){cout<<"等级B"<<endl;}elseif(score>=70){cout<<"等级C"<<endl;}else{cout<<"等级D"<<endl;}intscore;//一个变量,表示学生的分数cin>>score;if(score>=90)cout<<"等级A"<<endl;if(score>=80)cout<<"等级B"<<endl;if(score>=70)cout<<"等级C"<<endl;elsecout<<"等级D"<<endl;注意:单分支if的判断条件需要互斥36例3编写程序,输入x的值,根据以下函数求得y的值并输出:

解法2:if(x<0)y=-1;else{if(x==0)y=0;elsey=1;}if语句应用

if(x<0)y=-1;elseif(x==0)y=0;elsey=1;解法3:if(x>=0)if(x==0)y=0;elsey=1;elsey=-1;解法4:y=-1;if(x!=0){if(x>0)y=1;}elsey=0;else与if的匹配原则:当没有使用花括号{}明确界定if语句的主体时,else子句将与其之前的、最近的、未与任何else配对的if语句匹配。这被称为“最近匹配原则”。当使用花括号{}定义复合语句,语句之间有了层级区分。else只与其之前的、最近的、未与任何else配对的、同层级的if语句匹配。注意加花括号内容导航引言switch语句应用if语句大模型实践关系表达式与逻辑表达式程序测试If语句应用大模型探究条件表达式本章小结switch语句条件表达式38语法格式

条件?表达式1:表达式2;条件:一个逻辑表达式。如果为true,返回表达式1结果;为false,返回表达式2结果。举例-改写冗长的if-else语句inta=10,b=20;intmax;if(a>b)max=a;//如果a大于b,则max为aelsemax=b;//否则,max为b条件表达式inta=10,b=20;intmax=(a>b)?a:b;//判断a和b哪个更大,并将较大的值赋给maxintnum=-5;//示例数值,可以根据需要更改intabsValue=(num<0)?-num:num;//使用条件表达式求绝对值相应的if语句?39语法格式

条件?表达式1:表达式2;条件:一个逻辑表达式。为true,返回表达式1结果;为false,返回表达式2结果。举例-根据条件不同而输出不同的内容if(flag)cout<<"true"<<endl;elsecout<<"false"<<endl;条件表达式cout<<(flag?"true":"false")<<endl;条件表达式?内容导航引言switch语句应用if语句大模型实践关系表达式与逻辑表达式程序测试If语句应用大模型探究条件表达式本章小结switch语句switch语句41基本语法

switch(表达式){case常量1:

代码块1//如果表达式的值等于常量1,则执行这里的代码break;case常量2:

代码块2//如果表达式的值等于常量2,则执行这里的代码break;...default:

代码块n+1//如果表达式的值既不等于常量1,也不等于常量2,...//那么将执行default后的代码(可选)break;}适用于处理多个执行路径的情况,相较于嵌套if-else语句,更清晰、更简洁switch语句圆括号括起来,跟随一对花括号,结果必须是可枚举的值。空格+常量(表达式)+冒号

不能出现重复值。相对次序无规定冒号后可跟多个语句(不必加花括号),也可以不包含语句。42举例-根据输入等级发放奖金switch语句intmain(){intrank,prize;cin>>rank;switch(rank){case1:prize=10000;break;case2:prize=8000;break;case3:prize=5000;break;case4:case5:case6:prize=1000;break;default:prize=0;break;}cout<<prize<<endl;return0;}表达式类型,为整型常量case标签,不重复case穿透,共享case6后的代码块default标签,提供默认处理路径如果不存在,表达式值匹配不到任何case时将直接退出switch结构。避免穿透错误工作流程计算表达式的值查找匹配项执行匹配的代码块无匹配项则转到default标签执行break语句:立即退出switch语句。结束switch语句当switch语句中的代码执行完毕,程序将继续执行switch之后的代码。内容导航引言switch语句应用if语句大模型实践关系表达式与逻辑表达式程序测试If语句应用大模型探究条件表达式本章小结switch语句switch语句应用44例1按下表将百分制成绩转换成5级记分制。

score>=90:A90>score>=80:B80>score>=70:C70>score>=60:Dscore<60:Eswitch语句应用intmain(){intscore;cout<<"Enterthescore:";cin>>score;switch(score/10){

case10:case9:cout<<"A";break;case8:cout<<"B";break;case7:cout<<"C";break;case6:cout<<"D";break;default:cout<<"E";}return0;}映射到10的时候,将“穿透”到case9的标签case10,9:cout<<"A";break;最后可省略break;错误代码2:intmain(){charch;cin>>ch;switch(ch){casech=='1':cout<<"one";break;casech=='2':cout<<"two";break;casech=='3':cout<<"three";break;default:cout<<"error";}return0;}错误代码1:intmain(){charch;cin>>ch;switch(ch){case1:cout<<"one";break;case2:cout<<"two";break;case3:cout<<"three";break;default:cout<<"error";}return0;}45例2

输入一个字符,判断如果是数字字符1-3,则输出它对应的英文one、two、three,其它字符则输出“error”。switch语句应用整数1与字符’1’不匹配不能使用关系表达式正确代码2:switch(ch){case49:cout<<"one";break;case50:cout<<"two";break;case51:cout<<"three";break;default:cout<<"error";}正确代码1:switch(ch){case'1':cout<<"one";break;case'2':cout<<"two";break;case'3':cout<<"three";break;default:cout<<"error";}

错误代码3:intmain(){charch;cin>>ch;switch(ch){case'1':cout<<"one";case'2':cout<<"two";case'3':cout<<"three";default:cout<<"error";}return0;}46例2

输入一个字符,判断如果是数字字符1-3,则输出它对应的英文one、two、three,其它字符则输出“error”。switch语句应用缺少break语句内容导航引言switch语句应用if语句大模型实践关系表达式与逻辑表达式程序测试If语句应用大模型探究条件表达式本章小结switch语句大模型实践48大模型实践例1现代公历以地球围绕太阳公转为基础,每年约365.25天,通过设立闰年和闰月来调整与太阳年的微小偏差。现代公历以12个月为一年,其中1月、3月、5月、7月、8月、10月和12月各有31天,4月、6月、9月和11月各有30天,而2月则有28天或29天(闰年为29天)。请编写程序,输入年和月,输出这个月的天数。49大模型实践例2光盘行动与节约美德:传承中华节俭精神

在中国传统文化中,节俭一直被视为一种美德,它不仅体现了对资源的尊重,也反映了个人品德的高尚。为了弘扬这一美德,并推动社会各界共同参与到节约粮食的行动中来,某自助餐馆特别推出了“光盘行动”的优惠政策与惩罚机制。

该餐馆为每位顾客提供88元的自助餐服务。然而,为了体现对老年人和儿童的关爱,餐馆特别规定:60岁(含)以上的老人和12岁(含)以下的儿童在就餐时可享受8折优惠。同时,考虑到3岁以下的婴儿饮食需求特殊,餐馆更是为他们提供免费的就餐服务。

然而,在享受美食的同时,我们也应该时刻铭记“粒粒皆辛苦”的道理。为了引导顾客合理消费,避免食物浪费,餐馆制定了一项严格的惩罚措施:顾客在离开时,如果剩余食物超过100克,则需要根据超出部分按每克0.5元的价格额外缴纳餐费。这一措施旨在让每一位顾客都深刻认识到食物的来之不易,从而养成珍惜粮食、勤俭节约的好习惯。

现在,请你根据提供的顾客年龄和剩余食物重量,计算出他们的总就餐费用。内容导航引言switch语句应用if语句大模型实践关系表达式与逻辑表达式程序测试If语句应用大模型探究条件表达式本章小结switch语句程序测试51测试的必要性测试的目的不只是为了验证程序的正确性。GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中提出了对测试的独特见解:(1)软件测试是执行程序以发现潜在错误的过程。(2)测试的目的在于证明程序存在错误,而非证明其无误。(3)一个优质的测试用例应具备发现未知错误的能力。(4)一个成功的测试是那些能够揭示出尚未被发现的错误的测试。52在理解问题的基础上,可以开始设计测试数据,无需等待程序完全编写完成。在输入测试数据时,测试人员应预先知道这些数据将产生何种输出结果。例如,在测试求圆面积的程序时,我们选择输入半径为1而非253,因为后者对应的圆面积计算较为繁琐,容易给测试带来不便。根据程序中表达式的运算符类型,将测试技巧分为以下几类:相等比较类测试大小比较类测试逻辑表达式测试设计测试用例的基本要求53相等比较类测试测试分析:

温馨提示

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

评论

0/150

提交评论