c語言實驗課件么噠第7章函數_第1頁
c語言實驗課件么噠第7章函數_第2頁
c語言實驗課件么噠第7章函數_第3頁
c語言實驗課件么噠第7章函數_第4頁
c語言實驗課件么噠第7章函數_第5頁
已閱讀5頁,還剩70頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第六章 函

數1學習目標函數的概念、定義和調用函數參數的傳遞數組參數的傳遞

字符串參數的傳遞變量的作用域規則變量的存儲類型C是模塊化程序設計語言將一個大的程序按功能分割成一些小模塊——稱為子程序。C語言的子程序構造機制——函數。好處:層次清楚;函數相對獨立,任務單一;函數可存于函數庫中,供程序方便地調用它們;C語言程序一般是由大量的小函數而不是由少量的大函數構成,即所謂"小函數構成大程序"。一個C程序可由一個或多個源文件組成。一個源文件由一個或多個函數構成。一個C程序必須有并且只能有一個main函數。

C程序的執行總是從main函數開始,在main中結束主函數可以調用其它函數,其它函數可以相互調用。函數:C程序的最小單元簡單函數舉例main(){ printstar(

);printmessage(

);printstar(

);}void

printstar(){

printf(“*

*

*

*

*

*

*

*

*

*

*

*

*

*\n”);}void

printmessage(){

printf(“ How

do

you

do!\n”);}*

*

*

*

*

*

*

*

*

*

*

*

*How

do

you

do!*

*

*

*

*

*

*

*

*

*

*

*

*int

max(

int

x

,

int y

){

int

z;z

=

x

>

y

?

x

:

y

;return(

z

);}main(

){

int a=5,

b=9,

c;c

=max(

a,b);printf(“Max

=

%d”,c);}例:求最大值函數定義的一般形式數據類型函數名(形式參數表){說明部分語句}C函數只能有一個返回值。類型說明符用來指明返回值的類型。默認類型是整型。定義函數內部需要使用的變量語句部分實現函數的功能函數名的命名規則與所有的標識符一樣形參表用來定義輸入參數的類型和個數,必須是變量。可以為空(無參函數)int

max(int

x,int

y){ int

z;z

=

x

>

y

?

x

:

y;return(z);}void

printstar(){ printf(“*

* *

*

*

*

*\n”);}return語句標準形式return (表達式);或

return

表達式;功能結束本次函數調用并回到進行調用函數的語句,將表達式的值做為函數的返回值返回。函數的返回int

max(int

x,int

y){int

z;z

=

x

>

y

?

x

:

y;return(z);}void

printstar(){

printf(“*

* *

*

*

*

*\n”);}函數中可以有多個return語句,執行到哪一個return語句,就從哪一個return語句返回。return只能返回一個值,而不能返回多個值。 return(x,y);╳ 如明確沒有返回值,則要定義成void型函數,即

“無類型”。void

printstar(){

printf(“*

*

*

*

*

*

*

*

*

*

*\n”);

}return(表達式);語句中的表達式值的類型應與定義函數時函數的類型一致。如果不一致,以定義函數時規定的函數類型為準進行類型轉換。例如:int

fun(){return

10;int

a

=

5;return

a;}該函數只能返回10例:定義函數,用來求兩個實數的和。float

add(float

x,

float

y){

float

z;z=x+y;return(z);}已知條件:兩個實數求: 這兩個數的和max(float

x,

float

y){floatz;z=x>y?x:y;return(z);}main(){float

a,b;floatc;scanf("%f,%f",&a,&b);c=max(a,b);printf("Max

is

%f\n",c);}例:函數返回值類型轉換不指定函數類型的函數,按整型處理4.5,6.3

Max

is

6函數調用的一般形式無參函數:函數名(

);有參函數;函數名(實參表列);實參可以是常量、變量或表達式printstar();int

max(int

x,int

y){

int

z;z

=

x

>

y

?

x

:

y;return(z);}void

printstar(){

printf(“*

* *

*

*

*

*\n”);}c=max(5

,

8);c=max(a

,

b);函數語句printstar();表達式方式函數調用出現在表達式中,函數的返回值參加表達式的運算。c=5*max(a,b);3.作為函數的參數printf(“max=%d”,

max(a,b)

);c=max(k,max(i,j));函數的調用方式void

printstar(){printf(“*

* *

*

*

*

*\n”);}int

max(int

x,int

y){

int

z;z

=

x

>

y

?

x

:

y;return(z);}int

max(

int

x,

int y

){

int

z;z

=

x

>

y

?

x

:

y

;return(

z

);}main(

){

int a=5,

b=9,

c;c

=

max(

a

,

b

);printf(“Max

=

%d”

,

c);}例:求最大值函數的原型聲明int

max(int

x

,int

y){int

z;z

=

x

>

y

?

x

:

y;return(z);}根據C語言的規定在主調函數中,要對被調函數作聲明。函數的聲明又稱作函數原型。函數類型

函數名(參數1的類型

參數1名,參數2的類型

參數2名┅);函數類型函數名(參數1的類型,參數2的類型,┅┅);int

max(int

x

,

int y

)

;int

max(int, int)

;可以省略形參的名稱函數原型必須和被調函數實際的定義一致。例:輸出數字金字塔18main(

){int

num;void

pyramid(int

n);printf(“請輸入金字塔的層數:");scanf(“%d”,

&num);pyramid(num);}void

pyramid(int

n){int

i

,

j;for(i

=

1;

i

<=

n;

i++){ for(

j

=

1;

j

<=

n-i;j++)printf("

");for(

j

=

1;

j

<=

i;

j++)printf("%d

"

,

i

);請輸入金字塔的層數:5}}printf("\n");122333444455555float

area

(float

r);main(

){

float

s,ra;scanf(“%f

”,&ra);s

=

area(ra);printf(“area

is:%f

”,

s);}float area

(float

r){

return

3.14*r*r;

}main(

){

float

area

(floatr);float

s,ra;scanf(“%f

”,&ra);s

=

area(ra);printf(“area

is:%f

”,s);}float area

(float

r){

return

3.14*r*r;

}函數的聲明的位置如果在所有函數定義之前,對程序中的函數原型進行了聲明,則在各個主調函數中不必再對被調用函數進行聲明。int max(int

x

,

int

y);double min(double

x

,

double

y);echoline();voidmain(){…}int max(int

x

,

int

y){…}double min(double

x

,

double

y){…}void echoline(

){…}推薦推薦被調函數定義在前主調函數定義在后則在主調函數中無須再對被調函數進行聲明float area

(

float r

){

return 3.14*r*r

;

}main(

){float

a,ra;scanf(“%f

”,&ra);a=

area(ra);printf(“area

is:%f

,

a);}被調函數出現在主調函數之前,不必函數說明例:判斷1777和1991是否為素數?題目分析:定義一個函數prime用來判斷一個整數是否為素數定義函數頭部由函數prime的功能可知其形式參數為整型函數prime應該有返回值(整型),并能表明判斷結果:0:否,

1:是int

prime(int

n)3)定義函數體素數:

函數返回1非素數:函數返回04)main函數,兩次調用函數prime即可,避免代碼重復。24#include

"math.h"int

prime(

int n

){

int

k

,

i

,

result=1;k

=

sqrt(n);for(i

=

2;

i

<=

k;

i++)if(n%i

=

=

0){

result

=

0;break

;}return

result;}main(

){int a

=

1777,

b

=

1991;if(prime(a)==1)printf("%d是素數\n",a);elseprintf("%d不是素數\n",a);if(prime(b)==1)printf("%d是素數\n",b);elseprintf("%d不是素數\n",b);}1777是素數1991不是素數調用庫函數時,在文件開始的#include“*.h”就是說明被調函數的原型。stdio.hstring.hmath.hstdlib.h例:編寫函數求1+2+3+…+n(前n個自然數的和),主函數中輸入n,然后調用該函數求和,再輸出結果。int

he(int

n){int

i;int

nhe=0;for(i=1;

i<=n;

i++)nhe+=i;return(nhe);}int

he(int

n);main(

){int

n

,

sum;printf(“please

input

n:”);scanf(“%d”,

&n);sum=he(n);printf(“sum=%d”,

sum);}形式參數和實際參數

形參:定義函數時,函數名后括號內的變量。

實參:調用函數時,函數名后括號內的表達式。形式參數與實際參數的關系形參與實參類型一致,個數相同。若形參與實參類型不一致,自動按形參類型轉換。參數傳遞方式函數間的參數傳遞例:比較兩個數并輸出大者int

max(int

x,int

y);main(){int

a,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Max

is

%d",c);}int

max(int

x,int

y){

int

z;z=x>y?

x:y;return(z);}main函數

變量

a5變量b10105swap(a,

b);形參

x

swap函數temp=x;10變量x=y;

temp

55

y=temp;形參y無參返回main(

){ int

a

=

5,

b

=

10;printf("before

a=%d,

b=%d

\n",

a,

b

);swap(

a,

b

);printf("after

a=%d,

b=%d

\n",

a,

b

);}swap

(

int

x

,

int

y

){inttemp;temp

=

x;x

=

y;y

=

temp;}一.表達式或簡單變量傳遞方式(復制數據)單向值傳遞方式方式:函數調用時,為形參分配單元,并將實參的值復制到形參中調用結束,形參單元被釋放,實參單元仍保留并維持原值特點:形參與實參占用不同的內存單元單向值傳遞(形參的改變并不影響實參)參數傳遞方式形式參數為地址(指針),調用時實際參 數為地址:&變量或其它地址形式特點–實參和形參必須是地址常量或變量。–形參與實參指向同樣的存儲單元。二.地址方式傳遞參數數組作為函數的參數數組元素名作函數實參----值傳遞數組元素a[0]、a[1]……,是簡單變量。數組名作函數參數----地址傳遞數組名表示數組在內存中的起始地址。形參應該是指針變量,接受實參傳給的地址。數組元素作函數實參:值傳遞求數組中最大的數組元素main(

){

int i

,

c

,

a[7]

=

{

5

,

6

,

9

,

3

,

7

,

10

,

4

}

;c

=

a[0]

;for

(

i

=

1

;

i

<

7

;

i

++

) c=max

(

c

,

a

[

i

]

)

;printf(

“The

biggest

number

is

%d”

,

c)

;}int max(

int x

,

int y

){

return (

x>y?

x

:

y

)

;}數組名作為參數:地址傳遞形式參數中數組在內存中已分配一塊連續的空間形式參數只是與實際參數數組公用一塊內存空間形式參數中數組長度沒有意義數組長度也作為形式參數int

fun(

int

a[],int

n

)下語句:)如在main函數有如int

fun(int

a[6]{}int

b[6],c;c=fun(b);地址傳遞float aver

(int b[

]);main(){

float

avg;int

a[10]={1,3,4,5,6,7,8,9,10,11};avg=aver

(

a

)

;printf(“average

is

%f”,

avg);}float aver

(

int b[]

){

int

i

,

sum=0;for(i=0;

i<10;

i++)sum=sum+b[i];return

(sum/10.0);}數組名作函數參數:地址傳遞例:求數組的平均值aa[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]134567891011b例:求數組中元素的最大值36#define

N

10float

max(float

a[], int

n);main(

){

float

array[N],

max;int

i;printf(“請輸入%d個實數:\n”,

N);for(i

=

0;

i

<

N;

i++)scanf(“%f”,

&array[i]);max

=

max(array,

N);printf(“最大的數組元素值是%.2f\n",max);}float

max(float

a[],

int

n){int

i;float

max;max

=

a[0];for(i

=

1

;

i

<

n

;

i++)if(a[i]

>

max)max

=

a[i];return

max;}例:比較兩個數組的大小比較兩個數組a和b的大小,比較規則為:①用m,n和k記錄兩個數組對應元素的比較結果如果a[i]>b[i],m++;否則,如果a[i]=b[i],k++;否則n++結果②如果m>n,數組a大于b;否則如果m<n,數組a小于b;否則數組a等于b。3738main(){int

a[N], b[N],

cmp,

i;printf("請輸入數組1:%d個整數:\n",

N);for(i

=

0;

i

<

N;

i++)scanf(“%d”,

&a[i]);printf("請輸入數組2:%d個整數:\n",

N);for(i

=

0;

i

<

N;

i++)scanf(“%d”,

&b[i]);cmp

=cmp(a

,

b,

N);if(cmp>0)

printf("數組1大于數組2\n");else

if(cmp

<

0)

printf("數組1小于數組2\n");else

printf("數組1等于數組2\n");}#define

N

5int

cmp(int

a[],

int

b[],

int

length){int

i,

result, m

,n,k;m=n

=k

=0;for(i

=0;

i

<

length;

i++)if(a[i]

>

b[i])

m++;else

if(a[i]

<

b[i])

n++;else

k++;if(m

>

n) result

=

1;else

if(m

<

n) result

=

-1;else result

=

0;return

result;}result=m-nfloat

aver(int p[]

,

int n

);main()例:求數組的平均值{int

a[10]={1,3,4,5,6,7,8,9,10,11};int

b[5]={77,68,9,25,10};int avga

,

avgb;avga=aver(

a

,

10

);avgb=aver(

b

,

5

);printf(“%d,%d",

avga,

avgb);}float aver

(int

p[],

int

n){

int i

,

sum=0;

for

(i=0;

i<n;

i++)sum=sum+p[i];return

(sum*1.0/n);}10987654321互換的數組元素的下標關系:兩者之和為n-1;若一個為a[i],另一個為a[n-1-i]12345678910a[0]

1

2n-3

n-2

n-1例:編寫函數將數組中各元素位置對調,并調用該函數。a[n]例:求一維數組的最大值、最小值和平均值。int

formax(int

b[] ,

intn){int

i,max=b0];for(i=0;i<10;i++)if(max<b[i])

max=b[i];return

max;}int

formin(int

b[] ,

intn){int

i,min=b[0];for(i=0;i<10;i++)if(min>b[i])

min=b[i];return

min;}float

foraver(int

b[] ,

intn){int

i,sum=0; float

aver;for(i=0;i<10;i++)

sum+=b[i];return

sum/(float)n;}int formax(int

b[], int

n);int formin(int

b[], int

n);float

foraver(int

b[], int

n)

;main(){

int

a[10]={1,2,3,4,5,6,7,8,9,10}int

max,min;float

aver;max=formax(a,

10);min=

formin

(a,

10);aver=foraver(a,

10);printf("%d,%d,%f",max,min,aver);}例:學生成績排名42#define

M

5#define

N

5/*學生人數*//*成績科數*/void

sort_score(

float

score[

][N], float

ave[

]

);main(

){

floatscore[M][N]

={{

80.0,

85.0,

78.0,

97.0,

68.0

},{

90.0,

97.0,

89.0,

88.0,

92.0

},{

60.0,

75.0,

79.0,

95.0,

56.0

},{

98.0,

61.0,

78.0,

99.0,

68.0

},{

80.0,

89.0,

98.0,

97.0,

88.0

}

};float ave[M];

int i

,

j

;43sort_score(

score

, ave

);for(i=0;

i<M;

i++){printf("第%d名學生的平均成績為:%.2f\n",

i+1,

ave[i]);for(j=0;j<N;

j++)printf(“%10.2f

,

score[i][j]);printf("\n");}}【例7-9】編寫函數實現學生成績按平均分排名,學生成績存儲在一個二維數組中。44void sort_score(

float

score[

][N], float

ave[

]

){float sum,

temp;int i,

j,

k;for(i

=

0;

i

<

M;

i++){sum

=

0;for(j

=

0;

j

<

N;

j++)sum

=

sum

+

score[i][j];ave[i]

=

sum/N;}45for(i

=

0

;

i

<

M-1

;

i++)for(j

=

i+1

;

j

<

M

;

j++){if(ave[i]<ave[j])/*分析i=0;j=1*/{temp

=

ave[i];

ave[i]

=

ave[j]; ave[j]

=

temp;for(k

=

0;

k

<

N;

k++){temp

=

score[i][k];score[i][k]

=

score[j][k];score[j][k]

=

temp;}}}}當形式參數是多維數組時,只能忽略第一維的長度,后面的維數必須書寫,46如:sort_score(float

score[][N],

float

ave[])N不能忽略字符串是以一維字符數組形式存放的,所以字符串的傳遞與一維數組的傳遞方式相同。字符串傳遞給函數時,一般采用地址傳遞方式把字符串的首地址傳遞給函數。這時函數的形式參數應該是字符型指針。字符串參數的傳遞例:定義求字符串長度的函數,在主函數中調用int slen(char

s[]){

int

n=0;while(s[n]!=’\0’)n++;return(

n);}main(){

char

str1[20]=“1234”;int

len;len=slen(str1);len=slen(“goodnight”);}例:用函數調用將字符串a復制到字符串b中。Iamateacher\0a

p1b

p2Iamateacher\050#include

"stdio.h"#include

"string.h"#define

N

80void copy_string(char

from[],

char

to[]);void

main(void){

chara[N],

b[N];printf("請輸入一串字符串:\n");gets(a);copy(a

,

b);puts(b);}字符串復制void

copy(char

from[], char

to[]){int

i;for(i

=

0;from[i]

!=

'\0';

i++)to[i]

=

from[i];to[i]

=

'\0';}函數的嵌套調用在調用一個函數的過程中,又調用另一個函數。a(int i

,

int j

);b(double

x

,

double

y);intdoublemain(){

a

(

m

,

n

)

;

}int a(

int

i

,

int

j

){

b

(

x

,

y

);

}double

b(

double

x

,

double

y

){

}函數的嵌套調用main函數{

…………調用函數a;……}函數a{

…………調用函數b;……}函數b{

………………}sum+=jc(i);jc*=i;main(

){

int n=10,

he;he=jcsum(

n)

;printf("%d",he);}int jcsum(

int

n){

int i,

sum=0;for(i=1;

i<=n;

i++)return

sum;}int

jc(int

n){

int

i,

jc=1;for(i=1;

i<=n;

i++)return

jc;}求1~10的階乘之和例:計算數組元素的均方差【例7-11】編寫函數計算數組元素的均方差。方差等于數組中所有元素與其平均值的平方和,它描述的是數據波動的情況,均方差等于方差的平方根。54#include

"stdio.h"#include

"math.h"#define

N

10float

average(float

a[],

int

n);float

variance(float

a[],

int

n,

float

ave);float

rms(float

a[],

int

n);main(

){float

x[N],

var;int

i;printf("輸入%d個數值:\n",N);for(i=0;i<N;

i++)scanf("%f",

&x[i]);var

=

rms(x,

N);printf("這些數值的均方差為:%.4f\n",

var);}【例7-11】編寫函數計算數組元素的均方差。方差等于數組中所有元素與其平均值的平方和,它描述的是數據波動的情況,均方差等于方差的平方根。55float

average(floata[],

int

n){int

i;

float sum

=

0.0;for(i

=

0;

i

<

n;

i++)sum

=

sum

+

a[i];return

sum/n;}float

variance(floata[], int

n, float

ave){inti;

float

var;var

=0.0;for(i

=

0;

i

<

n;

i++)var

=

var

+

pow((a[i]

-ave)

,2

);return

var;}【例7-11】編寫函數計算數組元素的均方差。方差等于數組中所有元素與其平均值的平方和,它描述的是數據波動的情況,均方差等于方差的平方根。56float

rms(float

a[],

int

n){int

i;float

ave,var;ave

=

average(a,

n);var

=

variance(a,

n,

ave);var

=

sqrt(var);return

var;}輸入10個數值:1.0

2.0

3.0

4.0

5.0

6.0

7.0

8.0

9.0

10.0這些數值的均方差為:9.0830C語言可以在不同的位置定義變量。函數體內部:局部變量。函數頭中的形式參數:屬于局部變量。所有函數的外部:全局變量。定義在不同位置的變量,作用的范圍也不同。局部變量在函數內部定義的變量,只能在該函數中使用,稱為“局部變量”。float f1(int

a){ int

b

,c;…….}char

f2(int

x,int

y){

int i

,

j;……}main(){ int

i

,

m

,

n;…….}a,b,c有效x,y,i,j有效i,m,n有效max(intx,inty){intz;if(x>y)

z=x;else

z=y;return(z);}1、main函數內部定義的變量也只能在main函數內部使用。但它2、不同的函數中可以使用相同的變量名,們占據不同的內存單元,是不同的變量。3、形參也是局部變量,作用范圍在定義它的函數內。局部變量的說明

main(){

int

a,b;a=3;b=4;printf("main:a=%d,b=%d\n",a,b);sub();printf("main:a=%d,b=%d\n",a,b);}sub(){

int

a,b;a=6;b=7;printf("sub:a=%d,b=%d\n",a,b);}說明 不同函數中同名變量,占不同的存儲單元baba4367main:a=3,b=4sub:a=6,b=7main:a=3,b=4二、全局變量在函數外部定義的變量稱作外部變量(全局變量)全局變量作用域是從定義變量開始到本源文件結束。在一個函數內部,既可以使用本函數定義的局部變量,也可以使用在此函數前定義的全局變量。局部變量與其它變量重名時,局部優先;即局部變量起作用,全局變量不起作用。

int i,j;

/*外部變量*/float f1(

int a

){ int

b

,

c;i=5;……

}float a,b;

/*外部變量*/float f2(

int x

,

int

y){

int x1

,

y1;…

}main(

){

int

m

,

n;a=0;}a,b的作用域i,j的作用域全局變量的作用域int

a=5;main(){ printf("a=%d",

a);a=10;printf("a=%d",

a);sub();printf("a=%d",

a);}sub(){a=20;printf("a=%d",

a);}a=5a=10a=20a=20inta=3,b=5;main(){

int

a=8;printf("a=%d,b=%d",a,b);sub();}sub(){printf(“a=%d,b=%d”,a,b);}a=8,

b=5a=3,

b=5例:全局變量與局部變量同名,則全局變量被屏蔽?編制一個函數,求數組的最大值和最小值,主函數調用它。void maxmin(

float a[],

int

n);float

Max ,

Min

;void

main(

){ float

a[10]={

9,4,7,9,10,6,8,2,6,4};maxmin(

a,

10);printf(“max=%f,min=%f”,Max,Min

);}v{oid maxmin(

float a[],

int

n)int i

;ax=Min=a[0]

;or

(

i=1;

i<n;

i++)全局變量使得函數間多了一種傳遞數據的方式應盡量少使用全局變量,因為:全局變量在程序全部執行過程中占用存儲單元M

降低了函數的通用性、可靠性,可移植性

f

降低程序清晰性,容易出錯{

if(

a[i]

>

Max

) Max=a[i]

;else

if(

a[i]

<

Min) Min=a[i]

;}}66#define

N

10float

array[N];/*全局變量*/float

max_array();void

main(void){

float

max;int

i;printf("請輸入%d個實數:\n",N);for(i=0;i<N;

i++)scanf("%f",&array[i]);max

=

max_array();printf("數組中最大元素是:%.2f",max);}float

max_array(){int

i;float

max;max

=

array[0];for(i

=

1;i

<

N;

i++)if(array[i]

>

max)max

=

array[i];return

max;}變量的存儲類型規定了該變量數據在內存中的存儲區域(數據段或堆棧段)。在不同存儲區域存儲的數據,有不同的生存期。有些變量的生存期是短暫的,變量會被反復地建立和撤消,還有些變量雖然在離開了說明它們的函數時暫時無法訪問到它的數據,可一旦又調用該函數,那些數據還在。在C語言中變量有四種存儲類型,屬于有兩種存儲期:自動存儲期和靜態存儲期,它們分別是:auto----自動型。

register----寄存器型。

static----靜態型。

extern----外部參照型。一、自動變量 定義格式:auto

類型說明符 變量

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論