循环结构程序设计C语言程序.ppt_第1页
循环结构程序设计C语言程序.ppt_第2页
循环结构程序设计C语言程序.ppt_第3页
循环结构程序设计C语言程序.ppt_第4页
循环结构程序设计C语言程序.ppt_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

While、do-while、for语句 循环嵌套 Break、continue、goto语句 exit()函数 循环结构类型的选择及转换 循环结构程序设计举例 本章小结,学习目标,理解循环结构的含义; 掌握C语言三种循环结构的特点; 掌握while、do-while、for、goto、break、continue语句的使用方法; 掌握不同循环结构的选择及其转换方法; 掌握混合控制结构程序设计的方法。,学习内容,5.1 循环结构的程序设计,1. while语句,一般形式:,while (表达式) 循环体语句;,执行流程:,其中: while后面的括号( )不能省。 while后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑表达式。 表达式的值是是循环的控制条件。 语句部分称为循环体,当需要执行多条语句时,应使用复合语句。,特点:先判断表达式,再执行循环体,说明: 循环体有可能一次也不执行 循环体如包括有一个以上的语句,则必须用 括起来,组成复合语句。 下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break,return,goto 无限循环: while(1) 循环体;,#include void main ( ) int i = 1, sum = 0; while ( i = 100 ) sum += i; i+; printf (“sum = %dn“, sum); ,循环初值,循环终值,循环条件,循环体,循环变量增值,运行结果: sum = 5050,注意:循环要赋初值,初值要放在循环体外。,【例6-1p】显示110的平方,#include void main ( ) int i = 1; while ( i = 10 ) printf (“%d*%d=%dn“, i, i, i*i); i+; ,运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100,(1) 如果while后的表达式的值一开始就为假,循环体将一次也不执行。 (2) 循环体中的语句可为任意类型的C语句。 (3) 遇到下列情况,退出while循环: 表达式为假(为0)。 循环体内遇到break、return或goto语句(break和goto语句将在随后介绍)。,while语句注意事项:,int a = 0, b = 0; while (a 0) /a 0为假,b+不可能执行 b+;,(4) 在执行while语句之前,循环控制变量必须初始化,否则执行的结果将是不可预知的。 (5) 要在while语句的某处(表达式或循环体内)改变循环控制变量,否则极易构成死循环。 (6) 允许while语句的循环体又是while语句,从而形成双重循环。,while语句注意事项:,例:计算10! #include void main ( ) int i; / i应赋初始值10 long s = 1; while (i = 1) s *= i-; printf (“10! = %ldn“, s); ,i = 1; while (i 100) /死循环,因为i的值没变化,永远小于100 sum += i; printf (“sum = %dn“, sum);,i = 1; while (i = 9) j = 1; while (j = 9) printf (“%d * %d = %dn“, i, j, i * j); j+; i+; ,while(1) 循环体;,【例6-2】求两个正整数的最大公因子。 我们采用Euclid(欧几里德)算法来求最大公因子,其算法是: (1) 输入两个正整数m和n。 (2) 用m除以n,余数为r,如果r等于0,则n是最大公因子,算法结束,否则(3)。 (3) 把n赋给m,把r赋给n,转(2)。,#include void main ( ) int m, n, r; printf (“Please input two positive integer: “); scanf (“%d%d“, ,运行结果: Please input two positive integer: 24 56 Their greatest common divisor is 8,main() int a=1,n; printf(“n input n: “); scanf(“%d“, ,输入:n=2,n-=2 a+ a=1 a+*2 输出:2 n=1 a=2,n=1 a=2 a+ a=2 a+*2 输出:4 n-=0 a=3,2. do_while语句,一般形式:,do 循环体语句; while(表达式);,执行流程:,其中: while后面的括号( )不能省。 while最后面的分号;不能省。 while后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑表达式。 表达式的值是是循环的控制条件。 语句部分称为循环体,当需要执行多条语句时,应使用复合语句。,特点:先执行循环体,再判断表达式,【例5.2】 用do_while语句求1100的累计和。,#include void main ( ) int i = 1, sum = 0; do sum += i; i+; while ( i = 100 ); printf (“sum = %dn“, sum); ,运行结果: sum = 5050,空复合词句作为循环体 dowhile(); 空语句作为循环体 do;while(); 死循环 do while(1) ;,do_while语句注意事项:,int a = 0, b = 0; do b+; while (a 0) ;,(1) 如果do-while后的表达式的值一开始就为假,循环体还是要执行一次。 (2)在if语句、while语句中,表达式后面都不能加分号,而在do-while语句的表达式后面则必须加分号,否则将产生语法错误。 (3) 循环体中的语句可为任意类型的C语句。 (4) 和while语句一样,在使用do-while语句时,不要忘记初始化循环控制变量,否则执行的结果将是不可预知的。 (5) 要在do-while语句的某处(表达式或循环体内)改变循环控制变量的值,否则极易构成死循环。 (6) do-while语句也可以组成多重循环,而且也可以和while语句相互嵌套。,例5.3 while和dowhile比较,#include main() int i,sum=0; scanf(“%d“, ,main() int i,sum=0; scanf(“%d“, ,输入:1,输出:55,输出:55,输入:11,输出:11,输出:0,Do while语句先执行循环体i+,sum=0+11. 再判断表达式i=10,不满足,退出。 While语句先判断表达式i=10,不满足,退出,不执行循环体,当while后面的表达式的第一次的值为“真”时,两种循环得到的结果相同;否则不相同,3. for语句,一般形式:,for (表达式1;表达式2;表达式3) 循环体语句;,执行流程:,其中: for后面的括号( )不能省。 表达式1:一般为赋值表达式,给控制变量赋初值。 表达式2:关系表达式或逻辑表达式,循环控制条件。 表达式3:一般为赋值表达式,给控制变量增量或减量。 表达式之间用分号分隔。 语句部分称为循环体,当需要执行多条语句时,应使用复合语句。,for语句很好地体现了正确表达循环结构应注意的三个问题: 控制变量的初始化。 循环的条件。 循环控制变量的更新。,【例5-4】 用for语句求1100的累计和。,#include void main ( ) int i , sum = 0; for (i = 1; i = 100; i+) sum += i; printf (“sum = %dn“, sum); ,运行结果: sum = 5050,for语句注意事项:,例:计算1*2+3*4+5*6+99*100。 int i, j; long sum = 0; for ( i =1, j = 2; i = 99; i = i + 2, j = j + 2 ) sum += i *j; printf (“sum = %ldn“, sum);,(1) 表达式1、表达式2、和表达式3可以是任何类型的表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。,逗号表达式,逗号表达式,#include void main ( ) int i, sum = 0; i = 1; for ( ; i = 100; i+) sum += i; printf(“sum = %dn“, sum); ,#include void main ( ) int i, sum = 0; i = 1; for ( ; i = 100; ) sum += i+; printf(“sum = %dn“, sum); ,for语句注意事项:,省掉表达式1,3,省掉表达式1,(2) 表达式1、表达式2、和表达式3都是任选项,可以省掉其中的一个、两个或全部,但其用于间隔的分号是一个也不能省的。,#include void main ( ) int i, sum = 0; i = 1; for ( ; ; ) if (i 100) break; sum += i+; printf(“sum = %dn“, sum); ,省掉表达式1,2,3,;不能省,main() int i,j,k; for(i=0,j=10;i=j;i+,j-) k=i+j; printf(“%d+%d=%dn“,i,j,k); ,表达式1和表达式3可以是逗号表达式,逗号表达式按从左到右原则,取最右边表达式的值,0+10=10 1+9=10 2+8=10 3+7=10 4+6=10 5+5=10,注意: i=0,j=10 表达式值:10 但i=0 j=10依然被赋值,for语句注意事项:,for (a = 1; ; a+) printf (“,(3) 表达式2如果为空则相当于表达式2的值是真 。,死循环!,(4) 循环体中的语句可为任意类型的C语句。 (5) for语句也可以组成多重循环,而且也可以和while语句和do-while语句相互嵌套。 (6) 循环体可以是空语句。,例:计算用户输入的字符数(当输入是回车符时统计结束)。 #include void main ( ) int n = 0; printf (“input a string:n“); for ( ; getchar( ) != n; n+) ; printf (“%d“,n); ,表示循环体为空语句,并非表示for语句结束,(7)无限循环: for(;)相当于:while(1)语句 (8) for语句可以转换成while结构,expr1; while(expr2) 循环体语句; expr3; ,例 用for循环求,#include main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(“%d“,sum); ,for(i=1; i=100; i+) sum=sum+i; 等同于 i=1; while(i=100) sum=sum+i; i+; ,例1:(用for循环实现) 计算 s=1+2+3+n (n1) 例2:说明以下循环语句的循环次数。 for (i=0; i=0; i-); 答: (3) i=1; while (ij;i+,j-); 答:,n-1次,n+1次,n-1次,1次,0次,0次,for(k=1;k=n;k+) s+=k;,练习,x=3; do x-;printf(“%d,”,x); while(x=0); 答: (2) s=0;for(i=0,j=100;i=j;i+,j-) s+=i+j; printf(“%d”,s); 答:,2,1,0,-1,5100,显然,i+j100,i从0到50,共循环51次,例3:分析以下程序的输出结果,练习,例1:计算s=1+2+3+n (n1) #include “stdio.h” main() int s,k,n; printf(“Input n=“);scanf(“%d”, 则可省去复合词句。,练习,问题与思考: /*L1*/行中,若令k的初值为0,请填空: s=0;k=0; while( ) s+=k+; 答: (2) 将/*L2*/行进行如下改动,请填空: s=0;k= ; while( ) k+; s+=k; 答:,s=0;k=1; /*L1*/ while(k=n) s+=k; k+; /*L2*/,练习,应填入 k=n或kn+1,第一空应填入 0,或-1 第二空应填入kn或k=n-1,s=1+2+n,s=0+1+2+n,k=0 k+=1 k=-1 k+=0,三种循环可互相嵌套,层数不限 外层循环可包含两个以上内循环,但不能相互交叉 嵌套循环的执行流程,(1) while() while() . ,(2) do do while( ); . while( );,(3) while() do while( ); . ,嵌套循环的跳转 禁止: 从外层跳入内层 跳入同层的另一循环 向上跳转,4. 循环嵌套,例 循环嵌套,输出九九表,#include main() int i,j; for(i=1;i10;i+) printf(“%4d“,i); printf(“n-n“); for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?“%4dn“:“%4d“,i*j); ,1.i=1,j=1 i*j=1*1=1,2.i=1 j=2 i*j=1*2=2,3. i=1 j=9 i*j=9 换行,4.i=1,j=10 内循环结束 i=2,j=1,外循环赋初值,先做内循环,内循环结束,跳转到外循环,外循环改变初值,再做内循环。依次类推,直到外循环也不被满足,则跳出整个循环,for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?“%4dn“:“%4d“,i*j);,1.i=1,j=1 i*j=1*1=1,2.i=1 j=2 i*j=1*2=2,3. i=1 j=9 i*j=9 换行,4.i=1,j=10 内循环结束 i=2,j=1,几种循环的比较,四种循环都可以用来处理同一个问题,一般可以互相代替。但一般不提倡用goto型循环。 while和do-while循环,循环体中应包括使循环趋于结束的语句。for语句功能最强。 用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成,而for语句可以在表达式1中实现循环变量的初始化。,5. break与continue语句,break语句 功能:在循环语句和switch语句中,终止并跳出循环体或开关体 说明: (1) break不能用于循环语句和switch语句之外的任何其它语句之中。 (2) break只能终止并跳出最近一层的结构。 (3) break语句对if-else的条件语句不起作用。,while (表达式1) if (表达式2) break; 语句,do if (表达式2) break; while (表达式1); 语句,for (; 表达式1; ) if (表达式2) break; 语句,5.7.1 用break语句提前终止循环,例5.4 在全系1000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。,5.7.1 用break语句提前终止循环,编程思路: 循环次数不确定,但最多循环1000次 在循环体中累计捐款总数 用if语句检查是否达到10万元 如果达到就不再继续执行循环,终止累加 计算人均捐款数,5.7.1 用break语句提前终止循环,编程思路: 变量amount,用来存放捐款数 变量total,用来存放累加后的总捐款数 变量aver,用来存放人均捐款数 定义符号常量SUM代表100000,#include #define SUM 100000 int main() float amount,aver,total; int i; for (i=1,total=0;i=SUM) break; aver=total / i ; printf(“num=%dnaver=%10.2fn“ ,i,aver); return 0; ,指定符号常量SUM代表100000,#include #define SUM 100000 int main() float amount,aver,total; int i; for (i=1,total=0;i=SUM) break; aver=total / i ; printf(“num=%dnaver=%10.2fn“ ,i,aver); return 0; ,应该执行1000次,#include #define SUM 100000 int main() float amount,aver,total; int i; for (i=1,total=0;i=SUM) break; aver=total / i ; printf(“num=%dnaver=%10.2fn“ ,i,aver); return 0; ,达到10万,提前结束循环,#include #define SUM 100000 int main() float amount,aver,total; int i; for (i=1,total=0;i=SUM) break; aver=total / i ; printf(“num=%dnaver=%10.2fn“ ,i,aver); return 0; ,实际捐款人数,方法:通过设置一标志变量tag,然后在每层循环后加上一条语句:if (tag) break; 其值为1表示跳出循环体,为0则不跳出。,for () while () if () break; while循环后的第一条语句 ,int tag = 0; for () while () if () tag = 1; break; if ( tag ) break; for循环后的第一条语句,多重循环中,break的使用,问:在嵌套循环的情况下,如何让break语句跳出最外层的的循环体?,continue语句 功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断。 说明: (1) 仅用于循环语句中。 (2) 在嵌套循环的情况下,continue语句只对包含它的最内层的循环体语句起作用。,for () while () if () continue; while循环后的第一条语句 ,break和continue的区别 (1)break能用于循环语句和switch语句中,continue只能用于循环语句中。 (2) continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环 ,break结束整 个循环,不再判定循环条件是否满足。 (3)循环嵌套时,break和continue只影响包含它们的最内层循环,与外层循环无关。,N,表达式1,Y,表达式2,N,Y,N,表达式1,Y,表达式2,N,Y,break语句,continue语句,强行退出循环,只结束本次循环,5.7.2 用continue语句提前结束本次循环,例5.5 要求输出100200之间的不能被3整除的数。 编程思路: 对100到200之间的每一个整数进行检查 如果不能被3整除,输出,否则不输出 无论是否输出此数,都要接着检查下一个数(直到200为止)。,N,n=100,n200,Y,n能被3整除,N,n=n+1,输出n,Y,for(n=100;n=200;n+) if (n%3=0) continue; printf(“%d “,n); ,例5.6 输出以下4*5的矩阵。 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20,解题思路: 可以用循环的嵌套来处理此问题 用外循环来输出一行数据 用内循环来输出一列数据 按矩阵的格式(每行5个数据)输出,#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,累计输出数据的个数,控制一行内输出5个数据,#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,双重循环,#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,控制输出4行,#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,控制每行中输出5个数据,#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,i=1时,j由1变到5 i*j的值是1,2,3,4,5,#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,i=2时,j也由1变到5 i*j的值是2,4,6,8,10,如何修改程序,不输出第一行的空行?,#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,if (i=3 ,遇到第3行第1列,终止内循环,#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,if (i=3 ,原来第3行第1个数据3没有输出,5.8循环程序举例,例5.7用 公式求 的近似值,直到发现某一项的绝对值小于10-6 为止(该项不累计加)。,5.8循环程序举例,解题思路: 求 近似值的方法很多,本题是一种 其他方法:,5.8循环程序举例,每项的分子都是1 后一项的分母是前一项的分母加2 第1项的符号为正,从第2项起,每一项的符号与前一项的符号相反,5.8循环程序举例,#include #include int main() int sign=1; double pi=0,n=1,term=1; while(fabs(term)=1e-6) pi=pi+term; n=n+2; sign=-sign; term=sign/n; pi=pi*4; printf(“pi=%10.8fn“,pi); return 0; ,求绝对值的函数,只保证前5位小数是准确的,#include #include int main() int sign=1; double pi=0,n=1,term=1; while(fabs(term)=1e-6) pi=pi+term; n=n+2; sign=-sign; term=sign/n; pi=pi*4; printf(“pi=%10.8fn“,pi); return 0; ,改为1e-8,例5.8 求费波那西(Fibonacci)数列的前40个数。这个数列有如下特点:第1、2两个数为1、1。从第3个数开始,该数是其前面两个数之和。即:,这是一个有趣的古典数学问题: 有一对兔子,从出生后第3个月起每个月都生一对兔子。 小兔子长到第3个月后每个月又生一对兔子。 假设所有兔子都不死,问每个月的兔子总数为多少?,#include int main() int f1=1,f2=1,f3; int i; printf(“%12dn%12dn“,f1,f2); for(i=1; i=38; i+) f3=f1+f2; printf(“%12dn“,f3); f1=f2; f2=f3; return 0; ,代码可改进,#include int main() int f1=1,f2=1; int i; for(i=1; i=20; i+) printf(“%12d %12d “,f1,f2); if(i%2=0) printf(“n“); f1=f1+f2; f2=f2+f1; return 0; ,例5.9输入一个大于3的整数n,判定它是否素数(prime,又称质数)。 解题思路: 让n被i整除(i的值从2变到n-1) 如果n能被2(n-1)之中任何一个整数整除,则表示n肯定不是素数,不必再继续被后面的整数除,因此,可以提前结束循环 注意:此时i的值必然小于n,N,N,Y,n=i+1,输入n,i=2,i n-1,Y,n被i整除,i a,输出不是素数,Y,输出是素数,N,#include int main() int n,i; printf(“n=?“); scanf(“%d“, ,#include int main() int n,i; printf(“n=?“); scanf(“%d“, ,k=sqrt(n);,#include int main() int n,i,k; printf(“n=?“); scanf(“%d“, ,k=sqrt(n);,#include ,#include int main() int n,i,k; printf(“n=?“); scanf(“%d“, ,k=sqrt(n);,#include ,例5.10 求100200间的全部素数。 解题思路: 使用例5.9的算法 在例5.9程序中只要增加一个外循环,先后对100200间的全部整数一一进行判定即可, for(n=101;n=k+1) printf(“%d “,n); m=m+1; if(m%10=0) printf(“n”); ,只对奇数进行检查,控制每行输出10个数据,例5.11 译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。 A B C D E F G W X Y Z 非字母字符保持原状不变 输入一行字符,要求输出其相应的密码,解题思路:问题的关键有两个: (1) 决定哪些字符不需要改变,哪些字符需要改变,如果需要改变,应改为哪个字符 处理的方法是:输入一个字符给字符变量c,先判定它是否字母(包括大小写),若不是字母,不改变c的值;若是字母,则还要检查它是否W到Z的范围内(包括大小写字母)。如不在此范围内,则使变量c的值改变为其后第4个字母。如果在W到Z的范围内,则应将它转换为AD(或ad)之一的字母。,c=getchar();,解题思路:问题的关键有两个: (1) 决定哪些字符不需要改变,哪些字符需要改变,如果需要改变,应改为哪个字符 处理的方法是:输入一个字符给字符变量c,先判定它是否字母(包括大小写),若不是字母,不改变c的值;若是字母,则还要检查它是否W到Z的范围内(包括大小写字母)。如不在此范围内,则使变量c的值改变为其后第4个字母。如果在W到Z的范围内,则应将它转换为AD(或ad)之一的字母。,if(c=a & c=A & c=Z),解题思路:问题的关键有两个: (1) 决定哪些字符不需要改变,哪些字符需要改变,如果需要改变,应改为哪个字符 处理的方法是:输入一个字符给字符变量c,先判定它是否字母(包括大小写),若不是字母,不改变c的值;若是字母,则还要检查它是否W到Z的范围内(包括大小写字母)。如不在此范围内,则使变量c的值改变为其后第4个字母。如果在W到Z的范围内,则应将它转换为AD(或ad)之一的字母。,if(c=W ,解题思路:问题的关键有两个: (2) 怎样使c改变为所指定的字母? 办法是改变它的ASCII值 例如字符变量c的原值是大写字母A,想使c的值改变为E,只需执行“c=c+4”即可,因为A的ASCII值为65,而E 的ASCII值为69,二者相差4,char c; c=getchar(); while(c!=n) if(c=a ,可以改进程序,char c; while(c=getchar()!=n) if(c=A ,不能少,基本程序设计类型 一、统计(计数)问题 二、数列求和(求积):累加累乘递推法 三、字符图形 四、搜索(穷举)求解 五、数论有关问题 六、查找排序求最大值(最小值)数组 七、字符串处理 八、链表 九、文件处理,一、统计与计数问题 方法:计数变量c的初值为0,每输入一个数据, 进行必要判断后,若输入的数据满足统 计条件,则计数变量c自加1,这样当对 所有输入进行判断后,计数变量c的值就 是统计的结果,例2:输入一行字符,统计其中的英文字母个数。 提示:即输入到字符n时停止输入,#include “stdio.h” main() char ch; int n=0; printf(“Input a string:n”); while(1) ch=getchar();if(ch=n) brea

温馨提示

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

评论

0/150

提交评论