《汽车计算机基础》 课件 2- 利用三种程序结构解决简单问题_第1页
《汽车计算机基础》 课件 2- 利用三种程序结构解决简单问题_第2页
《汽车计算机基础》 课件 2- 利用三种程序结构解决简单问题_第3页
《汽车计算机基础》 课件 2- 利用三种程序结构解决简单问题_第4页
《汽车计算机基础》 课件 2- 利用三种程序结构解决简单问题_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

第1单元:C语言程序设计入门第2单元:利用三种程序结构解决简单问题第3单元:利用数组处理同类型的批量数据第4单元:利用函数实现模块化程序设计第5单元:灵活使用指针处理问题第6单元:利用复杂的构造类型解决实际问题汽车程序设计基础篇

第2单元利用三种程序结构解决简单问题【单元导读】

在现实生活中,经常遇到顺序执行、选择执行和循环执行的问题,这些问题可通过C语言程序来解决。

单元学习目标:能利用C语言中的顺序结构、选择结构、循环结构解决实际问题,并在此基础上,能利用预处理命令提高编程效率。

计算机程序

=数据结构

+算法

+程序代码2.1.1算法及流程图表示任务2.1知识储备1、算法的概念

为解决问题而采用的方法和步骤称为算法。对于同一个问题可以有不同的算法,应尽量选择占用内存小、执行速度快的算法。2、算法的5个特征

(1)有穷性:一个算法应包含有限的操作步骤,且每个步骤都能在有限时间内完成。

(2)确定性:算法中的每一个步骤都应该是确定的,而不应模糊和具有二义性。

(3)可行性:算法的每一个步骤都是切实可行的。

(4)有输入:一个算法可有零个或多个输入(键盘输入或传给算法数据)。

(5)有输出:一个算法必须有一个或多个输出(显示输出或传给算法数据)。2.1.1算法及流程图表示任务2.1知识储备3、算法的流程图表示

常用的算法表示方法:自然语言描述法、流程图法、计算机语言描述法。在此,只介绍最常用的流程图法。2.1.2程序的三种基本结构任务2.1知识储备1、顺序结构

按照程序语句书写的顺序一步一步依次执行。

根据条件判断的结果,从多种路径中选择其中的一种路径执行。

2、选择结构2.1.2程序的三种基本结构任务2.1知识储备

将一组操作重复执行多次。有“当型”和“直到型”两种循环结构。

3、循环结构当型循环结构

先判断

后执行直到型循环结构

先执行

后判断2.1.3C语句分类任务2.1知识储备1、声明语句:对变量、函数、类型(如结构体等类型)等进行声明例如:

变量声明语句:inti;

变量声明语句:inti=12;

在C语言中,分号是语句的结束标志。C语句分为6类。2、表达式语句:在表达式的末尾加分号例如:

a=3(赋值表达式)

a=3;

(赋值语句)i++(自增1表达式)i++;

(自增1语句)2.1.3C语句分类任务2.1知识储备3、函数调用语句:函数调用表达式加分号例如:

printf("这是我写的第1个C程序\n");4、控制语句:控制程序的流程(1)条件语句:if语句、switch语句(3)转向语句:break语句、continue语句、return语句、goto语句(2)循环语句:while语句、do…while语句、for语句2.1.3C语句分类任务2.1知识储备

把多条语句用花括号括起来组成的一个语句,称为复合语句。例如:5、复合语句

例如:下面的for循环体是空语句,在嵌入式软件设计中常用作软件延时。

for(i=10000;i>0;i--) {

;

//空语句

}6、空语句:只有一个分号,什么也不执行2.2.1数据输入输出函数任务2.2利用顺序结构程序解决实际问题1、数据输入输出的概念及在C语言中的实现

(1)从计算机内存向输出设备传送数据称为输出,从输入设备向计算机内存传送数据称为输入。

(2)C语言本身不提供输入输出语句,而用户可以通过调用C标准函数库中的输入输出函数,实现数据的输入和输出。

(3)使用标准输入输出库函数时,要用预处理命令#include将其对应的头文件“stdio.h”包含到源文件中:

#include<stdio.h>或

#include"stdio.h"2.2.1数据输入输出函数任务2.2利用顺序结构程序解决实际问题2、字符输出函数——putchar函数

●向显示器输出一个字符。putchar('H');

//输出字符Hputchar('\n');//换行charc='X';

putchar(c);//输出字符X2.2.1数据输入输出函数任务2.2利用顺序结构程序解决实际问题3、字符输入函数——getchar函数

●读取从键盘上输入的一个字符。

注意:getchar函数只能接收一个字符,输入数字也按字符处理。输入多个字符时,计算机只接收第一个字符。【例2.2】从键盘输入一个字符,并在显示屏显示。#include

<stdio.h>

//包含输入输出头文件intmain(void){

charc;printf("请输入一个字符:");

//原样输出一串字符,增加人机互动性

c

=

getchar();

//从键盘输入一个字符

putchar(c);

//在屏幕上显示输入的字符

putchar('\n');

//换行

}putchar(getchar());//在屏幕上显示输入的字符

【课后作业】同步练习2-1:putchar和getchar函数的应用。2.2.1数据输入输出函数任务2.2利用顺序结构程序解决实际问题4、格式输出函数——printf函数

●向显示器输出若干个任意类型的数据。一般形式:printf(格式控制字符串,输出列表)在1.2.2节中曾学过:按照格式控制字符串中以%开头的格式符指定的格式,将输出列表中对应的数据输出。也可以没有输出列表项。printf("这是我写的第2个C程序\n");

//原样输出一串字符,并换行printf("i=%d\n",i);//原样输出i=,然后以%d形式输出变量i的值,并换行printf("%d,%c\n",

i,c);//分别以%d形式和%c形式输出变量i和变量c的值,并换行2.2.1数据输入输出函数任务2.2利用顺序结构程序解决实际问题【课后作业】同步练习2-2:printf函数应用程序分析。#include<stdio.h>

//包含输入输出库函数头文件intmain(void){

inta=5,b=-1;

floatc=1.2;

chard='a';printf("a=%d,b=%d,c=%f,d='%c'\n",a,b,c,d);//依次按指定的格式将多个数据输出

printf("字母a的ASCII码:%d\n",d);//以十进制格式输出字母a的ASCII码printf("字母a的ASCII码:%x\n",d);//以16进制格式输出字母a的ASCII码printf("输出字符串:%s\n","CHINA");//输出字符串"CHINA"printf("今年的增长率=");//原样输出一串字符printf("50%%\n");//输出50%}【例2.3】printf函数使用:格式化输出数据。2.2.1数据输入输出函数任务2.2利用顺序结构程序解决实际问题5、格式输入函数——scanf函数

一般形式:scanf(格式控制字符串,地址列表)

(2)地址列表:由若干个地址组成的列表。

变量的地址:地址运算符“&”后跟变量名。

多个地址之间要用逗号隔开。

(1)格式控制字符串的作用与printf函数类似。

●按用户指定的格式从键盘把数据输入到指定的变量地址中。%d:输入有符号的十进制整数;%e:以指数形式输入单精度实数(%le用于输入双精度实数)%u:输入无符号的十进制整数;%x:输入无符号的十六进制整数;%c:输入单个字符;%s:输入字符串(将字符串送到一个字符数组中);%f:以小数形式输入单精度实数(%lf用于输入双精度实数);2.2.1数据输入输出函数任务2.2利用顺序结构程序解决实际问题#include<stdio.h>

//包含输入输出库函数头文件intmain(void){

inti,j;

floatk;

doublex;

printf("请输入两个整数和两个实数:\n");//提示输入4个数据

scanf("%d%d%f%lf",&i,&j,&k,&x);//输入4个数据分别赋给4个变量

printf("%d,%d,%f,%f\n",i,j,k,x);//将4个变量的数值输出}

说明:用scanf函数一次输入多个数值或多个字符串时,在两个数据之间可用空格或换行符或Tab符作分隔。【例2.4】用scanf函数输入多个数值数据。①用空格作分隔

②用换行符作分隔③用Tab符作分隔5、格式输入函数——scanf函数【课堂练习】同步练习2-3:scanf函数的正确输入数据方法。2.2.2顺序结构程序设计应用任务2.2利用顺序结构程序解决实际问题【课后作业】同步练习2-4:学以致用。【例2.5】将输入的两个整数交换,然后再输出这两个整数。ABABABAB

两名同学互换位置,如何实现?

需要借助一个临时变量实现两数的交换。//==================================//程序功能:输入两个整数,交换后再输出。//设计日期:2023-07-20//==================================#include<stdio.h>//包含头文件intmain(void){

intx,y,t;//定义三个变量

printf("请输入两个整数(用空格隔开):");scanf("%d%d",&x,&y);//输入两个数据给x和y

t=x;x=y;y=t;//将数x和y交换

printf("将输入的两个整数交换之后:");printf("%d%d\n",x,y);//输出x和y两个数}任务2.3利用选择结构程序解决实际问题

选择结构程序:根据不同的条件,执行不同的语句(根据不同的条件选择不同的道路)。两种选择语句:if语句和switch语句。1、if语句的3种形式

(1)if基本形式if(表达式)语句#include<stdio.h>intmain(void){

inta,b,t;printf("请输入两个整数(用空格隔开):");scanf("%d%d",&a,&b);if(a<b){

t=a;a=b;b=t; }printf("由大到小:%d,%d\n",a,b);}2.3.1if语句及应用【例2.11】输入两个整数,要求按由大到小的顺序输出。【课后作业】同步练习2-8:

拓展应用:输入三个整数,按由大到小的顺序输出。任务2.3利用选择结构程序解决实际问题1、if语句的3种形式

2.3.1if语句及应用(1)if基本形式if(表达式)语句#include<stdio.h>intmain(void){

intscore;

printf("请输入成绩:");

scanf("%d",&score);

if(score>=60)printf("恭喜,通过!\n");}【例2.6】用if语句判断考试结果。要求:当考试成绩不低于60分时,输出“恭喜,通过”。任务2.3利用选择结构程序解决实际问题#include<stdio.h>intmain(void){

intscore;

printf("请输入成绩:");

scanf("%d",&score);

if(score>=60)printf("恭喜,通过!\n");

elseprintf("未通过,继续努力!\n");}2.3.1if语句及应用if(表达式)语句1else语句2(2)if…else基本形式【例2.7】用if…else语句判断考试结果。【课后作业】【例2.8】判断输入的数据是否为0。1、if语句的3种形式

要求:当考试成绩不低于60分时,输出“恭喜,通过!”。

当考试成绩低于60分时,输出“未通过,继续努力!”

同步练习2-5:

用if语句解决实际问题。2.3.1if语句及应用任务2.3利用选择结构程序解决实际问题1、if语句的3种形式

说明:注意if与else的配对关系。else总是与它上面最近的未配对的if配对。(3)if…else嵌套形式——用于解决多分支问题任务2.3利用选择结构程序解决实际问题2.3.1if语句及应用1、if语句的3种形式

(3)if…else嵌套形式——用于解决多分支问题

虚线左侧的嵌套结构,还可写成虚线右侧的更加紧凑的形式。任务2.3利用选择结构程序解决实际问题【例2.9】根据符号函数,编程实现输入一个x值,输出y值。#include<stdio.h>intmain(void){

intx,y;

printf("请输入x的值:");

scanf("%d",&x);

printf("x=%d,y=%d\n",x,y);}if(x<0)y=-1;elseif(x==0)y=0;elsey=1;if(x<0)y=-1;else

if(x==0)y=0;elsey=1;2.3.1if语句及应用1、if语句的3种形式

(3)if…else嵌套形式——用于解决多分支问题【思考与实践】若改用if基本形式,如何实现?执行效率有区别吗?【课后作业】

同步练习2-6:用if…else嵌套形式解决实际问题。2.3.1if语句及应用任务2.3利用选择结构程序解决实际问题2、条件运算符(三目运算符?:)和条件表达式

条件表达式的一般形式:

表达式1?表达式2:

表达式3条件表达式通常用于赋值语句之中。

(2)条件运算符的结合方向是自右至左。

a>b?a:c>d?c:d等价于a>b?a:(c>d?c:d)

(1)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值运算符。因此,max=(a>b)?a:b等价于max=a>b?a:b说明:可简写为:max=(a>b)?a:b;

if(a>b)max=a;

elsemax=b;任务2.3利用选择结构程序解决实际问题#include<stdio.h>intmain(void){

int

a,b,max;

printf("请输入两个整数:");

scanf("%d%d",&a,&b);

max=a>b?a:b;

printf("max=%d\n",max);}2.3.1if语句及应用【例2.10】利用条件运算符求两数的最大值。【课后作业】

同步练习2-7:用条件运算符实现:输入两个整数,输出它们的差值(绝对值)。2、条件运算符(三目运算符?:)和条件表达式

【例2.12】根据输入的课程成绩(整数),判断并输出对应的等级。

输入成绩与输出结果:90~100,优秀;80~89,良好;70~79,中等;60~69,及格;0~59,不及格;其他值,输入有误!2.3.1if语句及应用任务2.3利用选择结构程序解决实际问题#include<stdio.h>intmain(void){

intscore;printf("请输入课程成绩(整数):");scanf("%d",

&score);

if(score>=90&&score<=100)printf("优秀!\n");

elseif(score>=80&&score<90)printf("良好!\n");

elseif(score>=70&&score<80)printf("中等!\n");

elseif(score>=60&&score<70)printf("及格!\n");

elseif(score>=0&&score<60)

printf("不及格!\n");

else

printf("输入有误!\n");}任务2.3利用选择结构程序解决实际问题2.3.2switch语句及应用

处理多分支选择问题时,可采用if…else嵌套形式,还可采用switch语句。

当switch括号内“表达式”的值与某个case后面“常量表达式”的值相等时,即执行该行对应的语句,后面的break语句可用来终止switch语句的执行。若switch括号内“表达式”的值与所有case后面的“常量表达式”均不相等时,则执行default后面的语句。switch语句的一般形式: 值的类型应为整型或字符型

不能是变量,必须是常量表达式,且必须互不相同

多个case可以共用一组执行语句。

每一组允许有多个语句,可以不用{}括起来。带有[]的部分为可选部分2.3.2switch语句及应用任务2.3利用选择结构程序解决实际问题【课后作业】同步练习2-9:用switch语句解决实际问题。【例2.13】用switch语句实现:根据输入的课程成绩(整数),判断并输出对应的等级。

输入成绩与输出结果:90~100,优秀80~89,良好70~79,中等60~69,及格0~59,不及格其他值,输入有误!#include<stdio.h>intmain(void){

intscore;

printf("请输入课程成绩(整数):");

scanf("%d",&score);

if(score>=0&&score<=100)

{

switch(score/10)

{

case10:

case9:printf("优秀!\n");

break;

case8:printf("良好!\n");

break;

case7:printf("中等!\n");

break;

case6:printf("及格!\n");

break;

default:printf("不及格!\n");

}

}

else

printf("输入有误!\n");}

实验:将某个break语句去掉,观察运行结果,体会其作用。思考:若将每一个成绩作为switch语句中的

case常量,是否可行?printf("优秀!\n");

break;score)思考:(1)能否用swtich语句解决多分支选择

结构问题的关键是什么?(2)if语句和switch语句有何区别?任务2.4利用循环结构程序解决实际问题

在许多问题中需要用到循环控制,即重复执行同种性质的任务。例如:在测试例2.13程序时,需要多次单击运行命令;在嵌入式智能设备中,上电后,主函数反复执行一段无限循环程序。C语言中,最基本的有while语句、do…while语句、for语句。while语句的一般形式:while(循环条件表达式)循环体语句2.4.1while循环结构程序设计【例2.14】用while语句实现1+2+3+…+100的和。#include<stdio.h>intmain(void){

inti=1,sum=0;while(i<=100){ sum=sum+i;i++;}printf("sum=%d\n",sum);}【课堂练习】同步练习2-10:1)1+3+5+…+992)2+4+6+…+100任务2.4利用循环结构程序解决实际问题while语句的一般形式:while(循环条件表达式)循环体语句2.4.1while循环结构程序设计说明:

循环条件表达式一般是关系表达式或逻辑表达式,只要循环条件表达式的值为真(非0),即可继续执行循环体语句。如嵌入式系统软件的主函数一般用while(1)构成无限循环结构。请读者将例2.13程序的执行语句作为while(1)的循环体语句,运行程序并体会循环结构的作用。【课后作业】同步练习2-10:1+2+3+…+n;while循环程序分析。任务2.4利用循环结构程序解决实际问题2.4.2do…while循环结构程序设计do…while语句的一般形式:

do

循环体语句

while(表达式);【例2.15】用do…while语句实现1+2+3+…+100的和。#include<stdio.h>intmain(void){

inti=1,sum=0;

do

{

sum=sum+i;

i++;

}while(i<=100);

printf("sum=%d\n",sum);}do…while循环至少要执行一次循环体语句。2.4.2do…while循环结构程序设计任务2.4利用循环结构程序解决实际问题【例2.16】while和

do…while循环的比较。

经测试,当输入i<3时,两者运行结果相同;但当输入i≥3时,运行结果则不同。

【课后作业】(1)同步练习2-11:程序分析。

(2)【例2.17】统计输入的非负整数的位数。#include<stdio.h>intmain(void){

inti;printf("请输入1个整数:");scanf("%d",

&i);while(i<3){i++;}printf("i=%d\n",i);}#include<stdio.h>intmain(void){

inti;printf("请输入1个整数:");scanf("%d",

&i);do{i++;}while(i<3);printf("i=%d\n",i);}2.4.3for循环结构程序设计任务2.4利用循环结构程序解决实际问题for语句的一般形式:for(表达式1;

表达式2;

表达式3)循环体语句for语句最常用、最容易理解的应用形式:

for(循环变量赋初值;

循环条件;

循环变量变化)循环体语句2.4.3for循环结构程序设计任务2.4利用循环结构程序解决实际问题【例2.18】用for语句实现1+2+3+…+100的和。#include<stdio.h>intmain(void){inti,sum=0;for(i=1;i<=100;i++)sum=sum+i;printf("%d\n",sum);}inti=1,sum=0;for(;i<=100;i++)【课堂练习】同步练习2-12:(1)1+3+5+…+99(2)2+4+6+…+100inti=1,sum=0;for(;i<=100;){sum=sum+i;i++;}inti,sum;

for(sum=0,i=1;i<=100;i++)2.4.3for循环结构程序设计任务2.4利用循环结构程序解决实际问题(2)for(;;)与while(1)等价,表示无限循环。主函数一般为无限循环结构。嵌入式软件设计中常用的两种for语句形式:(1)for循环体可以是空语句,常用于软件延时。例如:

for(i=0;i<1000;i++);

for(i=1000;i>0;i--);【课后作业】同步练习2-12:1)

1+2+3+…+n。2)输出所有的“水仙花数”。3)传帮带(乐于助人,利人利己)。2.4.4循环嵌套任务2.4利用循环结构程序解决实际问题一个循环体内又包含另一个完整的循环结构,称为循环嵌套。

#include<stdio.h>intmain(void){

inti,j;//定义两个循环变量

intk=0;//存放循环次数

for(i=1;i<=3;i++)

{for(j=1;j<=4;j++)

k++;

}printf("循环次数:%d\n",k);}说明:

(1)这几行代码是一条语句,因此可以不加{}。但为了程序的规范性和可读性,建议加{}(2)在嵌入式软件设计中,常用此方式实现更长时间的软件延时。

【思考与实践】循环嵌套结构执行完毕后,变量i和j的值分别是多少?

i=:j=:k=111234567891011123242345【例2.19】统计循环次数。【课后作业】同步练习2-13:输出九九乘法表。2.4.5break语句和continue语句任务2.4利用循环结构程序解决实际问题【例2.20】break语句和continue语句在循环结构中的应用。

#include

<stdio.h>intmain(void){

inti;for(i=1;i<=5;i++){

if(i==3)break;printf("%d\n",

i);}}#include

<stdio.h>intmain(void){inti;for(i=1;i<=5;i++){

if(i==3)continue;printf("%d\n",

i);}}break语句可提前结束“整个”循环过程。continue语句可提前结束“本次”循环(跳过循环体中下面尚未执行的语句),接着执行下次循环。2.4.5break语句和continue语句任务2.4利用循环结构程序解决实际问题

总结:break语句和continue语句在循环结构中的控制作用区别continue语句可提前结束“本次”循环(跳过循环体中下面尚未执行的语句),接着执行下次循环。break语句可提前结束“整个”循环过程,接着执行循环结构下面的语句。【课后作业】同步练习2-14:break语句和continue语句在循环控制程序中的应用。任务2.5

利用预处理命令提高编程效率几乎所有的C语言程序,都使用以“#”开头的预处理命令,例如包含命令#include、宏定义命令#define等。C语言中,最常用的3种预处理命令(功能):文件包含、宏定义、条件编译。需要注意,预处理命令不是C语句。为了与一般C语句相区别,这些命令均以#开头。

当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理命令做处理,处理完毕自动进入对源程序的编译。

灵活使用预处理命令,可以提高编程效率。2.5.1宏定义任务2.5

利用预处理命令提高编程效率1、不带参数的宏定义

例如:#define

PI

3.1415926

在编译预处理时,对程序中所有的宏名“PI”,都用“3.1415926”去替换,此过程称为“宏替换”。两种形式:

用一个简单且见名知意的“宏名”代表“替换文本”,“替换文本”可以是常数、表达式、格式串等。该形式的宏定义可以提高编程效率。(1)

#define宏名(2)#define宏名

替换文本仅说明宏名对应的标识符被定义。2.5.1宏定义任务2.5

利用预处理命令提高编程效率2、带参数的宏定义

带参宏定义的一般形式:#define宏名(形参表)

替换文本其中,在替换文本中含有形参表中的各个形参。

带参宏调用的一般形式:宏名(实参表)在宏调用时,不仅要宏展开,而且要用实参去代换宏定义的形参。

带参宏定义也称为宏函数。在宏定义中的参数称为形式参数(简称形参),在宏调用中的参数称为实际参数(简称实参)。2.5.1宏定义任务2.5

利用预处理命令提高编程效率【例2.21】使用宏定义:根据输入的半径,求圆的面积。#include<stdio.h>#definePI

3.14159

//宏定义符号常量PI(不带参数)#defineS(r)

PI*(r)*(r)

//宏定义面积计算公式(带参数)intmain(void){

floata,area;//定义半径、面积变量

while(1)

{

printf("请输入半径:");

scanf("%f",&a);

if(a<0)break;

//若输入的半径是负值,则退出循环

area=S(a);

//宏调用

printf("半径=%6.2f\n",a);

printf("面积=%6.2f\n",area);

}}宏定义不是C语句,不要在行末加分号!“%6.2f”表示以实型数据格式输出,输出的数据最小宽度是6,并且保留2位小数。2.5.1宏定义任务2.5

利用预处理命令提高编程效率

在嵌入式软件设计中,经常用到对寄存器的位操作。根据表1-8:

说明:

(1)宏定义中的宏名一般都用大写字母。(2)带参宏定义,对其替换文本中的参数和表达式外加括号是为了不引起歧义,提高程序设计的可靠性。【课后作业】同步练习2-15:写出带参宏函数。2.5.2文件包含任务2.5

利用预处理命令提高编程效率文件包含命令行的一般形式:#include<文件名>或#include"文件名"在前面已多次使用此命令包含库函数的头文件。例如:

#include<stdio.h>

功能:在编译预处理时,将指定的文件插入该命令行位置取代该命令行,从而将指定的文件和当前的源程序文件连成一个源文件。(1)在#include命令中,文件名可以用尖括号或双撇号括起来。例如:

#include<stdio.h>或 #include"stdio.h"

一般来说,若要包含的是库函数头文件,则用尖括号;若要包含的

温馨提示

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

评论

0/150

提交评论