C語(yǔ)言程序設(shè)計(jì) 課件 于紅 模塊四 編程高級(jí)應(yīng)用_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 于紅 模塊四 編程高級(jí)應(yīng)用_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 于紅 模塊四 編程高級(jí)應(yīng)用_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 于紅 模塊四 編程高級(jí)應(yīng)用_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì) 課件 于紅 模塊四 編程高級(jí)應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩88頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐模塊四編程高級(jí)應(yīng)用任務(wù)4.1數(shù)組C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)4.1數(shù)組01問(wèn)題引入05技能點(diǎn)檢測(cè)一問(wèn)題引入足球場(chǎng)上,雙方球員在快速奔跑,搶斷,為了團(tuán)隊(duì)的榮譽(yù)拼搏。作為觀眾的我們,無(wú)法看見(jiàn)球員的面孔,我們通過(guò)球衣的顏色和圖案區(qū)別球隊(duì)。但是,如何區(qū)別哪一位球員呢?有的時(shí)候解說(shuō)員在解說(shuō)比較激烈的場(chǎng)面的時(shí)候,通常喊的是球員身后的號(hào)碼,當(dāng)我們看到號(hào)碼的時(shí)候,就知道是哪位球員,比如C羅的7號(hào),馬拉多拉的10號(hào)。這種用球隊(duì)多少號(hào)球員的命名方式,在C語(yǔ)言中就是數(shù)組的命名方式。那么數(shù)組在使用時(shí)我們應(yīng)該注意哪些事項(xiàng)呢?04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.1數(shù)組二技能點(diǎn)分析1.掌握一維數(shù)組的應(yīng)用2.掌握多維數(shù)組初始化的3.掌握訪問(wèn)數(shù)組元素的方法學(xué)習(xí)目標(biāo)1.什么是數(shù)組?2.如何聲明一維數(shù)組和二維數(shù)組?3.?dāng)?shù)組如何被初始化?4.如何訪問(wèn)數(shù)組元素?元素的索引是什么?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.1數(shù)組數(shù)組是一組具有相同數(shù)據(jù)類型的變量集合,它是一系列相同類型的變量。一維數(shù)組的定義typename[size1];C語(yǔ)言支持多維數(shù)組。多維數(shù)組聲明的一般形式如下:typename[size1][size2]...[sizeN];數(shù)組中的每一項(xiàng)稱為數(shù)組的元素,每個(gè)元素都有對(duì)應(yīng)的下標(biāo)(n),用于表示元素在數(shù)組中的位置序號(hào),下標(biāo)從0開(kāi)始。數(shù)組的聲明是聲明一個(gè)數(shù)組變量,有一個(gè)統(tǒng)一的名稱,比如定義一個(gè)數(shù)組name,然后用name[n]的形式訪問(wèn)其中的每一個(gè)變量,稱為數(shù)組元素。三技能點(diǎn)詳解——數(shù)組數(shù)組中的每一項(xiàng)稱為數(shù)組的元素,每個(gè)元素都有對(duì)應(yīng)的下標(biāo)(n),用于表示元素在數(shù)組中的位置序號(hào),下標(biāo)從0開(kāi)始。數(shù)組的聲明是聲明一個(gè)數(shù)組變量,有一個(gè)統(tǒng)一的名稱,比如定義一個(gè)數(shù)組name,然后用name[n]的形式訪問(wèn)其中的每一個(gè)變量,稱為數(shù)組元素。三技能點(diǎn)詳解——數(shù)組1)聲明數(shù)組在C中要聲明一個(gè)數(shù)組,需要指定元素的類型和元素的數(shù)量,如下所示:typearrayName[arraySize];這叫做一維數(shù)組。[]中的arraySize必須是一個(gè)大于零的整數(shù)常量,type可以是任意有效的C數(shù)據(jù)類型。要聲明一個(gè)類型為float的包含6個(gè)元素的數(shù)組b,聲明語(yǔ)句如下:floatb[6];現(xiàn)在b是一個(gè)可用的數(shù)組,可以容納6個(gè)類型為float的數(shù)字。三技能點(diǎn)詳解——1一維數(shù)組三技能點(diǎn)詳解——1一維數(shù)組2)初始化數(shù)組(1)直接對(duì)數(shù)組中的所有元素賦值。需要注意的是:大括號(hào){}中的值的數(shù)目不能大于我們?cè)跀?shù)組聲明時(shí)在方括號(hào)[]中指定的元素?cái)?shù)目。比如下例中定義的數(shù)組b長(zhǎng)度是5,那么初始化的值的數(shù)目最多也只能是5個(gè)。floatb[5]={9990.0,1.0,5.0,7.0,56.0};(2)只對(duì)數(shù)組中的一部分元素賦值。

結(jié)果是給b[0],b[1]賦了初始值,其他元素沒(méi)有初始值(也可以理解為是個(gè)隨機(jī)數(shù)值)floatb[5]={9990.0,1.0};(3)對(duì)數(shù)組全部元素賦值,但不指定長(zhǎng)度。如果省略掉了數(shù)組的大小,這時(shí)數(shù)組的長(zhǎng)度等于初始化時(shí)元素的個(gè)數(shù)。floatb[]={9990.0,1.0,5.0,7.0,56.0};這將創(chuàng)建一個(gè)數(shù)組,雖然沒(méi)有指定數(shù)組長(zhǎng)度,它與前一個(gè)實(shí)例中所創(chuàng)建的數(shù)組是完全相同的,也是5個(gè)數(shù)組元素。3)訪問(wèn)數(shù)組元素

數(shù)組元素可以通過(guò)數(shù)組名稱加索引進(jìn)行訪問(wèn)。元素的索引是放在方括號(hào)內(nèi),跟在數(shù)組名稱的后邊。b[4]=56.0;這個(gè)語(yǔ)句把數(shù)組中第五個(gè)元素的值賦為56.0,b[4]可以看作是一個(gè)獨(dú)立的變量,我們可以通過(guò)這個(gè)變量直接修改數(shù)組中的元素值或者引用其中的值。三技能點(diǎn)詳解——1一維數(shù)組1)聲明二維數(shù)組聲明一個(gè)x行y列的二維整型數(shù)組,形式如下:typearrayName[m][n];其中,type可以是任意有效的C數(shù)據(jù)類型,arrayName

是一個(gè)有效的C標(biāo)識(shí)符。一個(gè)二維數(shù)組在邏輯上就是一個(gè)m行和n列的表格。下面是一個(gè)二維數(shù)組,包含4行和3列:inta[4][3];因此,數(shù)組中的每個(gè)元素是使用形式為a[m][n]的元素名稱來(lái)標(biāo)識(shí)的,其中a是數(shù)組名稱,m和n是唯一標(biāo)識(shí)數(shù)組a中每個(gè)元素的下標(biāo)。三技能點(diǎn)詳解——2二維數(shù)組2)初始化二維數(shù)組inta[3][4]={{0,1,2,3},//初始化索引號(hào)為0的行 {4,5,6,7},//初始化索引號(hào)為1的行 {8,9,10,11}//初始化索引號(hào)為2的行 };多維數(shù)組可以通過(guò)在括號(hào)內(nèi)為每行指定值來(lái)進(jìn)行初始化。下面是一個(gè)帶有3行4列的數(shù)組。內(nèi)部嵌套的括號(hào)是可選的,下面的初始化與上面是等同的:之所以可以這樣初始化,是因?yàn)閿?shù)組的物理結(jié)構(gòu)還是一個(gè)數(shù)據(jù)列表,數(shù)組中的數(shù)據(jù)存放在內(nèi)存中時(shí)還是按照線性結(jié)構(gòu)順序存儲(chǔ)在內(nèi)存空間中的。例如上例中的a數(shù)組在內(nèi)存中的結(jié)構(gòu)實(shí)際是這樣的:三技能點(diǎn)詳解——2二維數(shù)組二維數(shù)組中的元素是通過(guò)使用下標(biāo)(即數(shù)組的行索引和列索引)來(lái)訪問(wèn)的。例如:int

val=a[2][3];上面的語(yǔ)句將獲取數(shù)組中第3行第4個(gè)元素賦值給變量val。3)訪問(wèn)二維數(shù)組元素三技能點(diǎn)詳解——2二維數(shù)組三技能點(diǎn)詳解——1訪問(wèn)二維數(shù)組元素二維數(shù)組中的元素是通過(guò)使用下標(biāo)(即數(shù)組的行索引和列索引)來(lái)訪問(wèn)的。例如:intval=a[2][3];上面的語(yǔ)句將獲取數(shù)組中第3行第4個(gè)元素賦值給變量val。案例4.1.1讀寫(xiě)一維數(shù)組/****************************************************內(nèi)容簡(jiǎn)述:一位數(shù)組初始化和輸出***************************************************/#include

<stdio.h>

//頭文件

intmain(void){

intn[10]; //n是一個(gè)包含10個(gè)整數(shù)的數(shù)組

int

i,j;

for(i=0;i<10;i++) //初始化數(shù)組元素 { n[i]=i+100; //設(shè)置元素

i

i+100 }

for(j=0;j<10;j++) //輸出數(shù)組中每個(gè)元素的值 {

printf("Element[%d]=%d\n",j,n[j]); }

return0;}三技能點(diǎn)詳解——案例三技能點(diǎn)詳解——案例實(shí)例4.1.2讀寫(xiě)二維數(shù)組/****************************************************內(nèi)容簡(jiǎn)述:二維數(shù)組初始化和輸出***************************************************/#include

<stdio.h>

intmain(void){

/*一個(gè)帶有5行2列的數(shù)組*/

inta[5][2]={{0,0},{1,2},{2,4},{3,6},{4,8}};

inti,j;

for(i=0;i<5;i++)//輸出數(shù)組中每個(gè)元素的值{

for(j=0;j<2;j++){printf("a[%d][%d]=%d\n",i,j,a[i][j]);}}

return0;}三技能點(diǎn)詳解——案例04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.1數(shù)組四技能點(diǎn)拓展——1數(shù)組越界數(shù)組的下標(biāo)都有一個(gè)范圍,即“0~[數(shù)組長(zhǎng)度-1]”,假設(shè)數(shù)組的長(zhǎng)度為:5,其下標(biāo)范圍為0~4。當(dāng)訪問(wèn)數(shù)組中的元素時(shí),下標(biāo)不能超出這個(gè)范圍,否則程序會(huì)出錯(cuò)。/****************************************************內(nèi)容簡(jiǎn)述:數(shù)組越界顯示問(wèn)題***************************************************/#include

<stdio.h>

//頭文件intmain(void){

inta[5]={1,2,3,4,5};//一維數(shù)組的5個(gè)元素

int

i;

for(i=0;i<6;i++)//輸出5個(gè)數(shù)值 {

printf("a[%d]=%d\n",i,a[i]); }

return0;}四技能點(diǎn)拓展——2字符數(shù)組字符數(shù)組是由字符類型的元素所組成的數(shù)組,字符串就存儲(chǔ)在字符數(shù)組中,在訪問(wèn)字符數(shù)組時(shí),可使用下標(biāo)法讀取指定位置的字符。字符數(shù)組定義方式與整型數(shù)組類似:chararrname[size];//一維字符數(shù)組定義字符數(shù)組:charcha[6];charchb[5]={'a','b','c','d','e'};//定義一個(gè)字符數(shù)組并初始化數(shù)組元素四技能點(diǎn)拓展——3字符串?dāng)?shù)組字符串是由數(shù)字、字母、下劃線、空格等各種字符組成的一串字符,由一對(duì)英文半角狀態(tài)下的雙引號(hào)(“”)括起來(lái),例如”abcde”。字符串在C語(yǔ)言中,字符串的存儲(chǔ)和處理都是通過(guò)字符數(shù)組來(lái)實(shí)現(xiàn)的,存儲(chǔ)字符串的字符數(shù)組必須以空字符’\0’(空字符)結(jié)尾。當(dāng)把一個(gè)字符串存入一個(gè)字符數(shù)組時(shí),也把結(jié)束符’\0’存入數(shù)組,因此該字符數(shù)組的長(zhǎng)度是字符串實(shí)際字符數(shù)加1。字符串由字符數(shù)組進(jìn)行存儲(chǔ),那么可以直接使用一個(gè)字符串常量來(lái)為一個(gè)字符數(shù)組賦值。charcha[11]={"helloworld"};charchb[]={"helloworld"};上述兩個(gè)字符數(shù)組的大小都是11,這是因?yàn)樽址┪灿幸粋€(gè)’\0’結(jié)束符。04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.1數(shù)組五技能點(diǎn)檢測(cè)完成課堂任務(wù),在線提交;完成技能檢測(cè),在線提交;C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐模塊四編程高級(jí)應(yīng)用任務(wù)4.2指針C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)4.2指針01問(wèn)題引入05技能點(diǎn)檢測(cè)一問(wèn)題引入現(xiàn)實(shí)生活中,我們總會(huì)碰到很多指示牌,它們的作用是告訴尋路者要找到一個(gè)地方應(yīng)該怎么走,以便我們找到自己的目的地或者所需的東西,比如車站出口、物品擺放地等等。在程序設(shè)計(jì)中,有時(shí)也需要“指示牌”,告訴程序所需要的數(shù)據(jù)、代碼在哪,以便于更好的調(diào)用數(shù)據(jù)、代碼。那么指針在使用時(shí)我們應(yīng)該注意哪些事項(xiàng)呢?04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.2指針二技能點(diǎn)分析1.指針概念2.指針運(yùn)算3.指針與數(shù)組學(xué)習(xí)目標(biāo)1.什么是指針?2.如何聲明指針?3.指針的算術(shù)運(yùn)算有哪些?4.什么是指針數(shù)字?如何定義一維指針數(shù)組?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.2指針指針也就是內(nèi)存地址,指針變量是用來(lái)存放內(nèi)存地址的變量。就像其他變量或常量一樣,您必須在使用指針存儲(chǔ)其他變量地址之前,對(duì)其進(jìn)行聲明。指針變量聲明的一般形式為:type*v_name;type是指針的基類型,它必須是一個(gè)有效的C數(shù)據(jù)類型,v_name是指針變量的名稱。用來(lái)聲明指針的星號(hào)*與乘法中使用的星號(hào)是相同的。但是,在這個(gè)語(yǔ)句中,星號(hào)是用來(lái)指定一個(gè)變量是指針。int*intp;/*一個(gè)整型的指針*/double*doup;/*一個(gè)double型的指針*/float*flop;/*一個(gè)浮點(diǎn)型的指針*/char*chp;/*一個(gè)字符型的指針*/三技能點(diǎn)詳解——指針不同數(shù)據(jù)類型的指針之間唯一的不同是,指針?biāo)赶虻淖兞炕虺A康臄?shù)據(jù)類型不同。例如一個(gè)int型變量inta:編譯器會(huì)根據(jù)變量inta的類型int,為其分配4個(gè)字節(jié)地址連續(xù)的存儲(chǔ)空間。假如這塊連續(xù)空間的首地址為0x0048EFAA,那么這個(gè)變量占據(jù)0x0048EFAA~0x0048EFAD這四個(gè)字節(jié)的空間,0x0048EFAA就是變量inta的地址。三技能點(diǎn)詳解——指針三技能點(diǎn)詳解——1指針的算術(shù)運(yùn)算1)取址運(yùn)算符在程序中定義變量時(shí)系統(tǒng)會(huì)為變量在內(nèi)存中開(kāi)辟一段空間,用于存儲(chǔ)該變量的值,每個(gè)變量的存儲(chǔ)空間都有唯一的編號(hào),這個(gè)編號(hào)就是變量的內(nèi)存地址。C語(yǔ)言支持以取址運(yùn)算符“&”獲得變量的地址。&符號(hào)的使用方法:&vary_name;intinta=99;//定義變量intaint*intp=&inta;//定義int類型的指針intp,并取變量inta的地址賦值給intp三技能點(diǎn)詳解——1指針的算術(shù)運(yùn)算2)取值運(yùn)算符指針變量存儲(chǔ)的數(shù)值是一個(gè)地址,直接對(duì)地址操作容易出錯(cuò),針對(duì)指針變量的取值并非取出它所存儲(chǔ)的地址,而是間接取得該地址中存儲(chǔ)的值。C語(yǔ)言支持通過(guò)使用一元運(yùn)算符*來(lái)返回位于操作數(shù)所指定地址的變量的值。*符號(hào)使用方法:*指針表達(dá)式。案例如下:通過(guò)上述代碼,最終實(shí)現(xiàn)變量intb的值也是99。其效果等同于intb=inta。intinta=99;//定義變量intaint*intp=&inta;//定義int類型的指針intp,并取變量inta的地址賦值給intpintintb=*intp;//定義int型變量intb,并取指針變量p中存儲(chǔ)的變量值賦給intb三技能點(diǎn)詳解——1指針的算術(shù)運(yùn)算3)指針的算術(shù)運(yùn)算C指針是一個(gè)用數(shù)值表示的地址。因此,您可以對(duì)指針執(zhí)行算術(shù)運(yùn)算??梢詫?duì)指針進(jìn)行四種算術(shù)運(yùn)算:++、--、+、-。指針的每一次遞增,它其實(shí)會(huì)指向下一個(gè)元素的存儲(chǔ)單元。指針的每一次遞減,它都會(huì)指向前一個(gè)元素的存儲(chǔ)單元。指針在遞增和遞減時(shí)跳躍的字節(jié)數(shù)取決于指針?biāo)赶蜃兞繑?shù)據(jù)類型長(zhǎng)度,比如int型就是4個(gè)字節(jié),char型就移動(dòng)1個(gè)字節(jié)。3)指針的比較指針可以用關(guān)系運(yùn)算符進(jìn)行比較,如==、<和>。如果intp1和intp2指向兩個(gè)相關(guān)的變量,比如同一個(gè)數(shù)組中的不同元素,則可對(duì)intp1和intp2進(jìn)行大小比較。三技能點(diǎn)詳解——1指針的算術(shù)運(yùn)算1)指針與一維數(shù)組定義了指向數(shù)組的指針,則指針可以像使用數(shù)組名一樣,使用下標(biāo)取值法對(duì)數(shù)組中的元素進(jìn)行訪問(wèn),指針還可以通過(guò)“*”符號(hào)訪問(wèn)數(shù)組元素,還可以直接移動(dòng)指針訪問(wèn)數(shù)組中的數(shù)據(jù)。三技能點(diǎn)詳解——2指針與數(shù)組charcha1[6]="hello";//定義一個(gè)字符數(shù)組,長(zhǎng)度為6,hello后還要有一個(gè)/0字符char*chp,t; //定義一個(gè)chp字符指針和字符型變量tchp=cha1; //將數(shù)組地址賦值給指針chpt=chp[4]; //通過(guò)下標(biāo)訪問(wèn)字符數(shù)組中的’o’字符,賦值給字符變量tt=*(p+4)//不移動(dòng)指針,通過(guò)指針運(yùn)算訪問(wèn)數(shù)組元素’o’字符

/***************************************移動(dòng)指針,通過(guò)指針p+4后指向數(shù)組元素’o’字符,*然后通過(guò)*取值運(yùn)算符訪問(wèn)字符****************************************/p=p+4;t=*p;2)指針與二維數(shù)組在二維數(shù)組arr中,arr[0]就表示第一行數(shù)據(jù),arr[1]表示第二行數(shù)據(jù)。arr[0]、arr[1]相當(dāng)于二維數(shù)組中一維數(shù)組的數(shù)組名,指向二維數(shù)組對(duì)應(yīng)行的第一個(gè)元素,arr[0]=&arr[0][0],arr[1]=&arr[1][0]。在二維數(shù)組中,arr+i雖然指向的是該行元素的首地址,但它代表的是整行數(shù)據(jù)元素,只是一個(gè)地址,并不表示某一元素的值。*(arr+i)仍然表示一個(gè)地址,與arr[i]等價(jià)。*(arr+i)+j表示二維數(shù)組元素arr[i][j]的地址,等價(jià)于&arr[i][j],也等價(jià)于arr[i]+j。三技能點(diǎn)詳解——2指針與數(shù)組通過(guò)ptr訪問(wèn)二維數(shù)組arr中的第2行第2列的元素:ptr[1][1]*(ptr[1]+1)*(*(ptr+1)+1)案例4.1.1一維數(shù)組指針/*******************************************內(nèi)容簡(jiǎn)述:在程序中經(jīng)??吹绞褂弥羔槾鏀?shù)組,*因?yàn)樽兞恐羔樋梢赃f增,而數(shù)組不能遞增,數(shù)組*可以看成一個(gè)指針常量。下面的程序遞增變量指*針,以便順序訪問(wèn)數(shù)組中的每一個(gè)元素******************************************/#include

<stdio.h>intmain(){

int

arr[]={100,200,300};

int

i,*ptr;

ptr=arr; /*指針中的數(shù)組地址*/

for(i=0;i<3;i++){

printf("地址值:arr[%d]=%p\n",i,ptr);

printf("存儲(chǔ)值:arr[%d]=%d\n",i,*ptr);

ptr++; /*通過(guò)自增運(yùn)算讓指針指向下一個(gè)位置*/}

return0;}三技能點(diǎn)詳解——案例實(shí)例4.1.2二維數(shù)組指針通過(guò)指針數(shù)組p和一維數(shù)組a構(gòu)成一個(gè)3×2的二維數(shù)組,并為a數(shù)組賦初值2、4、6、8、…。要求先按行的順序輸出此“二維數(shù)組”,然后再按列的順序輸出它。/****************************************內(nèi)容簡(jiǎn)述:利用數(shù)組指針訪問(wèn)二維數(shù)組**************************************/#include

<stdio.h>intmain(){int

i,j,a[3][2]={2,4,6,8,10,12},*p[3];//定義一個(gè)指針數(shù)組*p[]

for(i=0;i<3;i++) p[i]=a[i];//利用指針p[i]獲取每行數(shù)組a[i]的地址

for(i=0;i<3;i++){for(j=0;j<2;j++)

printf("%4d",p[i][j]);

printf("\n");}

for(i=0;i<2;i++){for(j=0;j<3;j++)

printf("%4d",p[j][i]);

printf("\n");}}三技能點(diǎn)詳解——案例04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.2指針?biāo)募寄茳c(diǎn)拓展——1NULL指針在變量聲明的時(shí)候,如果沒(méi)有確切的地址可以賦值,為指針變量賦一個(gè)NULL值是一個(gè)良好的編程習(xí)慣。賦為NULL值的指針被稱為空指針。NULL指針是一個(gè)定義在標(biāo)準(zhǔn)庫(kù)中的值為零的常量。在大多數(shù)的操作系統(tǒng)上,程序不允許訪問(wèn)地址為0的內(nèi)存,因?yàn)樵搩?nèi)存是操作系統(tǒng)保留的。然而,內(nèi)存地址0有特別重要的意義,它表明該指針不指向一個(gè)可訪問(wèn)的內(nèi)存位置。但按照慣例,如果指針包含空值(零值),則假定它不指向任何東西。如需檢查一個(gè)空指針,您可以使用if語(yǔ)句,如下所示:if(ptr)/*如果ptr非空,則完成后續(xù)操作*/if(!ptr)/*如果ptr為空,則完成后續(xù)操作*/四技能點(diǎn)拓展——2指向指針的指針指向指針的指針是一種多級(jí)間接尋址的形式,或者說(shuō)是一個(gè)指針鏈。通常,一個(gè)指針包含一個(gè)變量的地址。當(dāng)我們定義一個(gè)指向指針的指針時(shí),第一個(gè)指針包含了第二個(gè)指針的地址,第二個(gè)指針指向包含實(shí)際值的位置。一個(gè)指向指針的指針變量必須如下聲明,即在變量名前放置兩個(gè)星號(hào)。例如,下面聲明了一個(gè)指向int類型指針的指針:int**vptr;四技能點(diǎn)拓展——3

無(wú)類型指針使用void*修飾的指針。無(wú)類型指針指向一塊內(nèi)存,但其類型不定,程序無(wú)法根據(jù)這種定義確定為該指針指向的變量分配多少存儲(chǔ)空間,所以若要使用該指針為其他基類指針賦值,必須先轉(zhuǎn)換成其他類型的指針。void *p1=NULL,*q1;//定義一個(gè)無(wú)類型的指針變量int *m1=(int*)p1;//將無(wú)類型的指針變量p強(qiáng)制轉(zhuǎn)換為int*型再賦值四技能點(diǎn)拓展——3

案例1

/****************************************在程序中經(jīng)??吹绞褂弥羔槾鏀?shù)組,因?yàn)樽兞?指針可以遞增,而數(shù)組不能遞增,數(shù)組可以看成*一個(gè)指針常量。下面的程序遞增變量指針,以便*順序訪問(wèn)數(shù)組中的每一個(gè)元素***************************************/#include

<stdio.h>intmain(){

intarr[]={100,200,300};

inti,*ptr;ptr=arr; /*指針中的數(shù)組地址*/

for(i=0;i<3;i++){printf("地址值:arr[%d]=%p\n",i,ptr);printf("存儲(chǔ)值:arr[%d]=%d\n",i,*ptr);ptr++; /*通過(guò)自增運(yùn)算讓指針指向下一個(gè)位置*/}

return0;}四技能點(diǎn)拓展——3

案例2

/****************************************利用數(shù)組指針訪問(wèn)二維數(shù)組**************************************/#include

<stdio.h>intmain(){inti,j,a[3][2]={2,4,6,8,10,12},*p[3];//定義一個(gè)指針數(shù)組*p[]

for(i=0;i<3;i++) p[i]=a[i];//利用指針

p[i]獲取每行數(shù)組a[i]的地址

for(i=0;i<3;i++){for(j=0;j<2;j++) printf("%4d",p[i][j]);printf("\n");}

for(i=0;i<2;i++){for(j=0;j<3;j++) printf("%4d",p[j][i]);printf("\n");}}04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.2指針五技能點(diǎn)檢測(cè)完成課堂任務(wù),在線提交;完成技能檢測(cè),在線提交;C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐模塊四編程高級(jí)應(yīng)用任務(wù)4.3結(jié)構(gòu)體C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)4.3結(jié)構(gòu)體01問(wèn)題引入05技能點(diǎn)檢測(cè)一問(wèn)題引入現(xiàn)實(shí)生活中,我們對(duì)某一個(gè)物體的描述往往都是通過(guò)多個(gè)信息的組合來(lái)完成,比如一個(gè)人,他要有姓名、性別、身高、體重等等基本信息,否則無(wú)法完整描述一個(gè)人的所有特征。再比如描述書(shū)本的信息、動(dòng)物的信息等等,也是如此。為了描述這類數(shù)據(jù),在C語(yǔ)言中設(shè)計(jì)了一類數(shù)據(jù),它描述的是一個(gè)對(duì)象的信息,但是是通過(guò)多種基本類型信息組合來(lái)完成,這種數(shù)據(jù)我們稱之為“結(jié)構(gòu)體”,那么結(jié)構(gòu)體在使用時(shí)我們應(yīng)該注意哪些事項(xiàng)呢?04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.3結(jié)構(gòu)體二技能點(diǎn)分析1.結(jié)構(gòu)體類型2.結(jié)構(gòu)體與函數(shù)3.結(jié)構(gòu)體數(shù)組學(xué)習(xí)目標(biāo)1.什么是結(jié)構(gòu)體?2.如何聲明結(jié)構(gòu)體?3.結(jié)構(gòu)體變量訪問(wèn)有哪些方式?4.如何定義結(jié)構(gòu)體數(shù)組?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.3結(jié)構(gòu)體C數(shù)組允許定義可存儲(chǔ)相同類型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是C編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許您存儲(chǔ)不同類型的數(shù)據(jù)項(xiàng)。結(jié)構(gòu)用于表示一條記錄,假設(shè)您想要跟蹤圖書(shū)館中書(shū)本的動(dòng)態(tài),您可能需要跟蹤每本書(shū)的下列屬性:標(biāo)題作者小標(biāo)題出版號(hào)……struct結(jié)構(gòu)體類型名稱{

數(shù)據(jù)類型

成員1;

數(shù)據(jù)類型

成員2;

數(shù)據(jù)類型

成員n;}變量1,…變量n;三技能點(diǎn)詳解——結(jié)構(gòu)體三技能點(diǎn)詳解——1結(jié)構(gòu)體類型聲明(1)結(jié)構(gòu)體類型聲明以關(guān)鍵字struct開(kāi)頭,后面跟的是結(jié)構(gòu)體類型的名稱,該名稱的命名規(guī)則與變量名相同;(2)結(jié)構(gòu)體類型與整型、浮點(diǎn)型、字符型等類似,只是數(shù)據(jù)類型,而非變量。(3)聲明好一個(gè)結(jié)構(gòu)體類型后,編譯器并不為其分配內(nèi)存。structBook{

chartitle[250]; //書(shū)的標(biāo)題

charauthor[250]; //書(shū)的作者

charsubject[200]; //書(shū)的主題

int

bookid; //書(shū)的出版號(hào)}三技能點(diǎn)詳解——2結(jié)構(gòu)體變量定義1)先聲明結(jié)構(gòu)體類型,再聲明結(jié)構(gòu)體變量,例如:structBookbk1={“C語(yǔ)言編程”,“王教授”,“入門(mén)技術(shù)”,20220001},bk2={“BASIC語(yǔ)言編程”,“張教授”,“高級(jí)技術(shù)”,20220002};三技能點(diǎn)詳解——2結(jié)構(gòu)體變量定義2)在定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體變量structBook{

chartitle[250]; //書(shū)的標(biāo)題

charauthor[250]; //書(shū)的作者

charsubject[200]; //書(shū)的主題

int

bookid; //書(shū)的出版號(hào)}bk1,bk2; //Book類型變量bk1,bk2三技能點(diǎn)詳解——2結(jié)構(gòu)體變量定義3)結(jié)構(gòu)體變量初始化結(jié)構(gòu)體變量初始化的方式和其他類型變量沒(méi)有太多區(qū)別,主要有兩種,就是先聲明后初始化和定義事同時(shí)初始化兩種形式/*聲明結(jié)構(gòu)體變量的同時(shí)對(duì)其進(jìn)行初始化*/structBook{

chartitle[250];

charauthor[250];

charsubject[200];

int

bookid;

}bk1={“c語(yǔ)言編程”,”王教授”,”入門(mén)技術(shù)”,20220001};/*使用聲明后的結(jié)構(gòu)體類型定義結(jié)構(gòu)體變量并對(duì)結(jié)構(gòu)體變量初始化*/structBookbk2={“BASIC語(yǔ)言編程”,”張教授”,”高級(jí)技術(shù)”,202200022};三技能點(diǎn)詳解——2結(jié)構(gòu)體變量定義4)結(jié)構(gòu)體數(shù)組的訪問(wèn)定義并初始化結(jié)構(gòu)體變量的目的是使用結(jié)構(gòu)體變量中的成員。在C語(yǔ)言中,訪問(wèn)結(jié)構(gòu)體變量中成員的方式如下所示:結(jié)構(gòu)體變量名.成員名例如訪問(wèn)上述定義的structstudentstu變量中的成員:/*聲明結(jié)構(gòu)體變量bk1,bk2,并對(duì)bk2初始化*/structBookbk1,bk2={“BASIC語(yǔ)言編程”,”張教授”,”高級(jí)技術(shù)”,202200022};/*通過(guò)bk1.titlel訪問(wèn)結(jié)構(gòu)體的成員值賦值給bk1.title*/bk1.title=bk1.titlel;

三技能點(diǎn)詳解——案例1/***************************************利用結(jié)構(gòu)體類型編制一程序,實(shí)現(xiàn)輸入一個(gè)學(xué)生*的數(shù)學(xué)期中和期末成績(jī)。**************************************/#include

<stdio.h>voidmain(){structstudy{intmid;

intend;

intaverage; }math; printf("%s","請(qǐng)輸入學(xué)生的期中和期末數(shù)學(xué)成績(jī):"); scanf("%d%d",&math.mid,&math.end); math.average=(math.mid+math.end)/2; printf("學(xué)生的期中和期末數(shù)學(xué)平均成績(jī)是=%d\n",math.average);}三技能點(diǎn)詳解——案例2

實(shí)例4.3.2

/*******************************************建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,鏈表結(jié)點(diǎn)中的數(shù)據(jù)*通過(guò)鍵盤(pán)輸入,當(dāng)輸入數(shù)據(jù)為-1時(shí),表示輸入結(jié)束。*鏈表表空的條件是ph->next=’\0’)。******************************************/#include

<stdio.h>#include

<stdlib.h>//定義一個(gè)單向鏈表類型結(jié)構(gòu)體,其中一個(gè)是int數(shù)值成員,另一個(gè)next是指針,用于指向下一個(gè)結(jié)點(diǎn)元素

structlist{

intdata; //儲(chǔ)存數(shù)據(jù)的字段

structlist*next; //指向下一個(gè)structlist類型數(shù)據(jù)的指針

};

structlist*creatlist() /定義一個(gè)

structlist型指針函數(shù)creatlist(){structlist*p,*q,*ph;

inta;

/************************************************malloc()用于分配一個(gè)structlist類型存儲(chǔ)空間,并*返回空間的地址存儲(chǔ)在ph中********************************************/ph=(structlist*)malloc(sizeof(structlist));/********************************************創(chuàng)建單向鏈表,ph記錄頭指針,p記錄新創(chuàng)建的節(jié)點(diǎn),*q記錄尾部節(jié)點(diǎn)*******************************************/p=q=ph; printf("輸入整數(shù),輸入–1結(jié)束輸入

:\n");scanf("%d",&a); //輸入一個(gè)數(shù)據(jù)存儲(chǔ)在a中

if(a!=-1) //如果第一個(gè)數(shù)不是-1,開(kāi)始創(chuàng)建鏈表

{ph->data=a; //輸入數(shù)據(jù)存儲(chǔ)在a中

ph->next='\0'; //節(jié)點(diǎn)的next指針置為空'\0'三技能點(diǎn)詳解——案例2

scanf("%d",&a);

while(a!=-1) //如果輸入的數(shù)不是-1,繼續(xù)創(chuàng)建鏈表 /*malloc()分配一個(gè)structlist類型存儲(chǔ)空間作為新節(jié)點(diǎn),地址存儲(chǔ)在p中*/{p=(structlist*)malloc(sizeof(structlist)); p->data=a; //a賦值給新創(chuàng)建的鏈表節(jié)點(diǎn)的data成員中

q->next=p; //q節(jié)點(diǎn)的next指針指向新創(chuàng)建的節(jié)點(diǎn)

q=p; //q指針移動(dòng)新創(chuàng)建的節(jié)點(diǎn)上,作為新的尾部節(jié)點(diǎn)

scanf("%d",&a); } p->next='\0'; //最后一個(gè)節(jié)點(diǎn)的next指針置為空'\0'

}

return(ph); //返回ph中的地址作為函數(shù)的返回值

}voidmain(){structlist*head,*p;head=creatlist(); p=head;

while(p!='\0') //通過(guò)p指針的移動(dòng)訪問(wèn)、輸出列表中的數(shù)據(jù)成員的值

{ printf("%d",p->data); p=p->next; //p指針的移動(dòng)到下一個(gè)節(jié)點(diǎn)

};}04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.2指針?biāo)募寄茳c(diǎn)拓展——1結(jié)構(gòu)體與函數(shù)在函數(shù)間不僅可以傳遞簡(jiǎn)單的變量、數(shù)組、指針等類型的數(shù)據(jù),還可以傳遞結(jié)構(gòu)體類型的數(shù)據(jù)。結(jié)構(gòu)體變量作為函數(shù)參數(shù)的用法與普通變量類似,都需要保證調(diào)用函數(shù)的實(shí)參類型和被調(diào)用函數(shù)的形參類型相同??梢园呀Y(jié)構(gòu)作為函數(shù)參數(shù),傳參方式與其他類型的變量或指針類似。函數(shù)間不僅可以傳遞一般的結(jié)構(gòu)體變量,還可以傳遞結(jié)構(gòu)體數(shù)組。使用結(jié)構(gòu)體數(shù)組作為函數(shù)參數(shù)傳遞數(shù)據(jù)。四技能點(diǎn)拓展——2

typedef的使用C語(yǔ)言提供了typedef關(guān)鍵字,您可以使用它來(lái)為類型取一個(gè)新的名字。例如前面所學(xué)過(guò)的結(jié)構(gòu)體、指針、數(shù)組、int、double等都可以使用typedef關(guān)鍵字為它們另取一個(gè)名字。使用typedef關(guān)鍵字可以方便程序的移植,減少對(duì)硬件的依賴性?;居梅ㄈ缦聇ypedef數(shù)據(jù)類型別名;四技能點(diǎn)拓展——3

指向結(jié)構(gòu)的指針結(jié)構(gòu)體指針變量用于存放結(jié)構(gòu)體變量的首地址,所以將指針作為函數(shù)參數(shù)傳遞時(shí),其實(shí)就是傳遞結(jié)構(gòu)體變量的首地址。案例4.3.2的creatlist()函數(shù)設(shè)計(jì)中,就利用函數(shù)傳遞了structlist*類型的指針數(shù)據(jù)。04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.2指針五技能點(diǎn)檢測(cè)完成課堂任務(wù),在線提交;完成技能檢測(cè),在線提交;C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐模塊四編程高級(jí)應(yīng)用任務(wù)4.4枚舉和共用體C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)與實(shí)踐課程組04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS任務(wù)4.4枚舉和共用體01問(wèn)題引入05技能點(diǎn)檢測(cè)一問(wèn)題引入有一類團(tuán)體型的數(shù)據(jù)集合,比如一周7天的名稱,天干地支名稱,這些名稱往往是組團(tuán)使用的,或者有些特殊使用場(chǎng)合的信息。這類信息在C語(yǔ)言里可以使用自定義的枚舉型來(lái)進(jìn)行組織設(shè)計(jì)。此外,現(xiàn)實(shí)生活中,我們裝很多東西時(shí),一般是用大箱子裝大東西,小箱子裝小東西,但是也有些時(shí)候我們只需要裝一個(gè)東西,但是不確定要裝的東西是多大,我們就準(zhǔn)備一個(gè)大箱子,小的可以裝,大的也可以裝,這樣就不必準(zhǔn)備大大小小的多個(gè)箱子。這類信息在C語(yǔ)言里可以使用共用體來(lái)進(jìn)行組織設(shè)計(jì)。那么枚舉和共用體在使用時(shí)有哪些注意事項(xiàng)呢?04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.4枚舉和共用體二技能點(diǎn)分析1.枚舉和共用體類型2.枚舉的遍歷3.共用體的定義與使用4.訪問(wèn)共用體成員學(xué)習(xí)目標(biāo)1.什么是枚舉?2.枚舉可以遍歷么?3.什么是共用體?4.結(jié)構(gòu)體和共用體的區(qū)別?學(xué)期預(yù)習(xí)04技能點(diǎn)拓展03技能點(diǎn)詳解02技能點(diǎn)分析目錄CONTENTS01問(wèn)題引入05技能點(diǎn)檢測(cè)任務(wù)4.4枚舉和共用體枚舉是C語(yǔ)言中的一種基本數(shù)據(jù)類型,它可以讓數(shù)據(jù)更簡(jiǎn)潔,更易讀。第一個(gè)枚舉成員的默認(rèn)值為整型的0,后續(xù)枚舉成員的值在前一個(gè)成員上加1。共用體是一種特殊的數(shù)據(jù)類型,允許您在相同的內(nèi)存位置存儲(chǔ)不同的數(shù)據(jù)類型。您可以定義一個(gè)帶有多成員的共用體,但是任何時(shí)候只能有一個(gè)成員帶有值。共用體提供了一種使用相同的內(nèi)存位置的有效方式。三技能點(diǎn)詳解——1枚舉類型定義與使用枚舉語(yǔ)法定義格式為:enum枚舉名{枚舉元素1,枚舉元素2,……};enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};第一個(gè)枚舉成員的默認(rèn)值為整型的0,后續(xù)枚舉成員的值在前一個(gè)成員上加1。我們?cè)谶@個(gè)實(shí)例中把第一個(gè)枚舉成員的值定義為1,第二個(gè)就為2,enumDAY{MON,TUE,WED=7,THU,FRI,SAT,SUN};前面我們只是聲明了枚舉類型,接下來(lái)我們看看如何定義枚舉變量。我們可以通過(guò)以下三種方式來(lái)定義枚舉變量。(1)先定義枚舉類型,再定義枚舉變量enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};enumDAYday;(2)定義枚舉類型的同時(shí)定義枚舉變量enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN}day;(3)省略枚舉名稱,直接定義枚舉變量enum

{MON=1,TUE,WED,THU,FRI,SAT,SUN}day1;三技能點(diǎn)詳解——2共用體類型定義1)先聲明公用體類型,再聲明公用體變量定了定義共用體,您必須使用union語(yǔ)句,方式與定義結(jié)構(gòu)類似。union語(yǔ)句定義了一個(gè)新的數(shù)據(jù)類型,帶有多個(gè)成員。union語(yǔ)句的格式如下:union

共用體類型名稱{

數(shù)據(jù)類型

成員名1;

數(shù)據(jù)類型

成員名2;……

數(shù)據(jù)類型

成員名n;};unionData{int

i;floatf;charstr[20];}; //定義共用體DataunionDatad1; //定義一個(gè)unionData類型變量d1三技能點(diǎn)詳解——2共用體類型定義2)在定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體變量unionData{int

i;floatf;charstr[20];}d1; //定義共用體unionData同時(shí)定義變量d13)共用體成員的訪問(wèn)與使用為了訪問(wèn)共用體的成員,我們使用成員訪問(wèn)運(yùn)算符(.)。成員訪問(wèn)運(yùn)算符是共用體變量名稱和我們要訪問(wèn)的共用體成員之間的一個(gè)句號(hào)。共用體變量名.成員名三技能點(diǎn)詳解——2共用體類型定義在下面的例子中,我們會(huì)發(fā)現(xiàn)最先被訪問(wèn)和賦值的d1.i和d1.f是無(wú)法打印出來(lái)的,因?yàn)槲覀冏詈笤L問(wèn)和賦值的d1.str把之前訪問(wèn)并賦值的成員數(shù)據(jù)都給覆蓋了。#include

"stdio.h"#include

"string.h"unionData{

int

i;

floatf;

chars[100];};intmain(){unionDatad1; //定義共用體unionData變量datad1.i=10; //訪問(wèn)成員i并賦值d1.f=100.0; //訪問(wèn)成員f并賦值

strcpy(d1.s,"C程序設(shè)計(jì)"); //訪問(wèn)成員str

printf("d1.i:%d\n",d1.i);

printf("d1.f:%f\n",d1.f);

printf("d1.s:%s\n",d1.str);

return0;}三技能點(diǎn)詳解——案例圖4.4.1共用體變量d1的內(nèi)部結(jié)構(gòu)

#include

<stdio.h>#include

<stdlib.h>intmain(){/*聲明一個(gè)包括3個(gè)英文顏色的enumcolor數(shù)據(jù)類型*/enumcolor{red=1,green,blue};

enumcoloruser_color; printf("請(qǐng)輸入你喜歡的顏色:(1.red,2.green,3.blue):");scanf("%u",&user_color);

switch(user_color)

{

casered: //此處red=1printf("OK!喜歡的顏色是:紅色");

break;

casegreen: //此處green=2

溫馨提示

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

評(píng)論

0/150

提交評(píng)論