版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
17/47蜀南地區(qū)茅口組古巖溶地貌與縫洞系統(tǒng)發(fā)育關系研究摘要:蜀南地區(qū)茅口組古巖溶地貌形態(tài)對縫洞系統(tǒng)的發(fā)育起著控制作用。在恢復茅口組古地貌的基礎上,根據(jù)上二疊統(tǒng)在區(qū)域上的厚度展布、風化殼表面侵蝕特征、沉積物性質(zhì)和茅口組地層保存程度,將茅口組頂部劃分為巖溶臺地、巖溶坡地(又分為西部陡坡帶和北東部緩坡帶)和巖溶盆地3個二級地貌單元。研究了各地貌單元和縫洞系統(tǒng)的關系,最后指出了有利的儲集區(qū)帶。結(jié)果表明:巖溶臺地巖溶水以垂向滲流為主,風化剝蝕強烈,形成垂向的溶縫、溶洞常被泥質(zhì)等充填,橫向連通性弱;巖溶陡坡、巖溶臺地和巖溶陡坡過渡帶巖溶作用最強,可形成大規(guī)模的溶孔、溶洞,且充填程度低,縫洞系統(tǒng)最為發(fā)育,是有利的勘探區(qū)帶;巖溶緩坡水流速度慢,巖溶作用周期長,溶蝕空間易受充填,不利于縫洞保存;巖溶盆地溶蝕空間少,儲集性能差,是不利的勘探區(qū)帶。關鍵詞:蜀南地區(qū);茅口組;古巖溶;縫洞系統(tǒng)
ResearchontheDevelopingCharacteristicofPalaeokarstFracture-cavitySystemofMaokouFormationintheShunanRegionAbstract:TheancientkarstlandformofMaokouformationinshunanregioncontrolsthecavernsystem’sdevelopment.Onthebasisofrecoveringpalaeogeomorphology,Maokouformationisdividedintokarstplatform,karstslope(Itisdividedintothewesternsteepslopeandnortheastengentleslopebelt)andkarstbasin,accordingtothethicknessdistributionintheregionofMaokouformation,thesurfaceerosiononweatheringcrust,sedimentpropertiesandthedegreeofpreservationinMaokouformation.Studyingontherelationgshipofgeomorphicunitandthecavesystem,finallypointsoutthefavorablereservoirzone.Theresultsshowthat:karstwaterinkarstplatformismainlyinverticalseepage,weatheringisstrong,verticalsolutionfissureandcaveisoftenfilledwithmuddy;thekarstificationintheareaofkarstslopeandtransitionbandofkarstplatformandkarststeepisthestrongest,whichformmassivedissolvedporeandcave,andfillingrateislow,thecavesystemisdeveloppedbest,sotheyarethefavorableexplorationzone;theflowingspeedinkarstslopeisslow,karstcycleislongandsolutionspaceissusceptibletofilling,whichdoesnotconducivetofractured-vuggysave;theerosionspaceinkarstbasinisless,andthereservoirperformanceispoor,whichleadthiseareistheadverseexplorationzone.Keywords:Shunanregion;Maokouformation;palaeokarst;fracture-cavitysystem
引言古巖溶地貌是巖溶作用與各類地質(zhì)作用綜合作用的結(jié)果,不同地貌形態(tài)對巖溶發(fā)育起著控制作用[1]。研究古巖溶地貌特征、掌握縫洞系統(tǒng)的分布規(guī)律,對碳酸鹽巖油氣藏的開發(fā)有著重大意義[2]。前人曾對塔里木盆地奧陶系[3],鄂爾多斯盆地奧陶系[4],四川盆地石炭系[5]等地區(qū)碳酸鹽巖古巖溶進行了大量研究,其成果對評價儲層特性,預測有利區(qū)帶和優(yōu)選勘探目標起到了重要的指導作用。本文在消化和吸收前人研究成果的基礎上,對蜀南地區(qū)茅口組古巖溶地貌類型進行劃分,分析不同地貌類型對巖溶縫洞發(fā)育的影響,結(jié)合實際生產(chǎn)資料,確定了有利的儲集區(qū)帶?;痦椖浚核拇ㄊ≈攸c學科建設項目(編號基金項目:四川省重點學科建設項目(編號:SZD0414)作者簡介:桑琴(1976年),女,講師,1999年本科畢業(yè)于西南石油學院應用地球物理專業(yè),2006年碩士畢業(yè)于西南石油大學地球化學專業(yè),現(xiàn)從事地球物理測井及儲層地質(zhì)研究相關的工作。電話E-mail:Sangq269@163.com1.基本地質(zhì)條件蜀南地區(qū)位于四川盆地南部,以瀘州古隆起為中心,范圍南至敘永—珙縣,西至仁壽—井研一線,北抵資中—大足,東達中梁山、同福場一線,勘探開發(fā)面積約5.03×104km2。大地構造位置屬于川東南中隆低陡構造區(qū)和川中平緩構造區(qū)南翼,區(qū)內(nèi)大面積出露侏羅紀—白堊紀陸相紅色地層[6],在東南緣及其鄰近背斜核部出露古生代地層。四川地區(qū)地質(zhì)發(fā)展史表明,該區(qū)地殼于二疊世開始全面下沉,隨之沉積一套開闊海臺地相碳酸鹽巖地層,到中二疊世末受東吳運動的影響而劇烈抬升,出露水面遭受長期風化剝蝕,茅口組灰?guī)r頂部形成古巖溶風化殼。至二疊紀末,被龍?zhí)督M煤系沉積所覆蓋。之后,該區(qū)持續(xù)下沉,又依次接受了早、中三疊世的海相碳酸鹽巖沉積和晚三疊世、侏羅紀、白堊紀和第三紀的陸相沉積。期間區(qū)內(nèi)發(fā)生了印支運動、燕山運動,到喜山運動以后構造格局基本定型。據(jù)相關物性分析資料,二疊系茅口組主要為生屑灰?guī)r、泥晶灰?guī)r及眼球狀灰?guī)r,局部含有燧石團塊,基質(zhì)孔隙度極低,一般小于2%,滲透性極差,為0.013~2.904×10-3μm2古巖溶地貌類型及其特征茅口組頂部古巖溶形成于抬升暴露時期,其發(fā)育程度明顯受控于當時的古地貌形態(tài)[8],而古地貌又控制著地表和地下巖溶水流的流向,進而影響縫洞系統(tǒng)的發(fā)育特征。因此,恢復古巖溶時期的古地貌形態(tài),研究巖溶地貌的類型及其分布規(guī)律,掌握古水流在古地貌上的運動性質(zhì)、富水部位以及補給、排泄的特征,對確定巖溶儲層的分布范圍和發(fā)育規(guī)律,預測和評價儲層有著重要的意義。上二疊統(tǒng)長興組位于茅口組風化殼之上且與之鄰近,分布廣泛,厚度穩(wěn)定,對基底起到了填平補齊的作用,整體與風化殼古侵蝕面呈鏡像關系。長興頂部灰?guī)r與飛仙關底部泥巖相接觸,巖性突變,在鉆井、地震和測井上均能較好地識別。雖然上二疊統(tǒng)因厚度不同在成巖過程中會產(chǎn)生一定差異壓實,但相對于古巖溶地貌間的高差變化,在進行古巖溶地貌恢復時可以忽略不計。因此,根據(jù)上二疊統(tǒng)在區(qū)域上的厚度展布及分布趨勢、風化殼表面侵蝕特征、沉積物性質(zhì)和茅口組地層保存程度,將工區(qū)劃分為3種地貌單元:巖溶臺地(上二疊統(tǒng)厚度小于160m)、巖溶坡地(上二疊統(tǒng)厚度160m~220m)、巖溶盆地(上二疊統(tǒng)厚度大于220m),其中巖溶坡地又可進一步劃分為巖溶陡坡和巖溶緩坡,其特征將在后文中詳細描述(圖1)。圖1蜀南地區(qū)茅口組二級地貌單元及放空井位疊合圖圖2蜀南地區(qū)茅口組古地貌剖面圖A-觀音場—孔灘—楊家山—隆昌—界市場—河包場;B-宋家山—桐梓園—荔枝灘—陽高寺—壇子壩—花果山—丹鳳場;C-威陽—自流井—楊家山—陽高寺—廟高寺—合江巖溶臺地巖溶臺地是巖溶地表整體地勢相對最高、平坦的高地,其上以剝蝕作用為主,表生期為地下巖溶水的補給區(qū),以接受大氣降水為主。在勢能差驅(qū)動下大氣降水常以垂直滲流或以片流形式向低洼處匯流至地下,最終向四周低級臺面或溝谷排泄。地下巖溶作用向下延伸深度大,致使垂向滲流帶和表層巖溶帶較為發(fā)育(圖3),形成大量的垂向溶縫、溶溝、溶蝕漏斗及落水洞等。巖溶臺地主要分布于研究區(qū)的東南部合江、廟高寺、楊家山、陽高寺、隆昌、壇子壩、荔枝灘等區(qū)域(圖1、圖2)。在該區(qū)域,頂部地層遭受風化溶蝕尤其強烈,但形成的溶蝕孔洞常被鋁土質(zhì)泥巖、角礫、硅質(zhì)、砂泥質(zhì)、瀝青質(zhì)等地表殘積物或洞壁塌積物全充填(圖4),這種現(xiàn)象在電測曲線上同樣具有典型的響應特征,以合江構造上的合16井為例,該井位于巖溶臺地發(fā)育區(qū),其茅四段全部被剝蝕,而茅三段頂部地層具有高自然伽馬、高聲波時差、低電阻率以及井徑擴大的電測曲線特征(圖5),這種電測曲線特征常為典型的表層巖溶帶的特征。圖3蜀南地區(qū)音7井—包36井巖溶發(fā)育剖面圖(據(jù)桑琴,2012)圖4陽8井2152.08-2152.20m圖4陽8井2152.08-2152.20m,茅口組頂部灰?guī)r孔洞鋁土質(zhì)充填嚴重,孔洞中含瀝青和少量方解石。圖5合16井測井曲線巖溶坡地巖溶坡地是巖溶臺地與巖溶盆地之間的過渡地帶,廣泛發(fā)育在巖溶臺地四周,常呈環(huán)帶狀分布,地勢坡降常大于巖溶臺地和巖溶盆地的地勢坡降。地表水系發(fā)育,水流溶蝕和侵蝕能力強,因而地表易形成切割深度較大的溶溝、槽谷等,形成溶丘、溶峰與洼地相間分布的古地貌形態(tài)。地下水系水動力條件同樣較強,其中巖溶坡地所處的地下以發(fā)育為特色,而垂向滲流帶的發(fā)育程度、分布范以及形成的巖溶縫洞的改造和保存常取決于地勢坡降程度,因此本文又將巖溶坡地根據(jù)地勢坡降的程度進一步劃分為巖溶陡坡和巖溶緩坡。巖溶陡坡其地勢坡降程度較高,坡度角多大于20°,其內(nèi)部巖層除近水平徑流帶發(fā)育外,垂向滲流帶也相對較發(fā)育。在巖溶陡坡區(qū)域由于地下水水動力大且較為集中,巖溶作用強烈。同時由于徑向流動及垂向滲流是反復持續(xù)的,這加強了巖溶縫洞間的連通性,從而坡地巖層內(nèi)部多發(fā)育網(wǎng)絡狀縫洞系統(tǒng),甚至在局部發(fā)育大型溶洞[10,11]。巖溶陡坡主要發(fā)育于研究區(qū)巖溶臺地的西部區(qū)域,在該區(qū)域已發(fā)現(xiàn)了多個較大儲量氣田,如付家廟、牟家坪、孔灘、自流井以及觀音場等氣田(圖1)。在這些氣田中,部分鉆井在鉆遇茅口組頂部地層時常出現(xiàn)鉆具放空、泥漿漏失或井噴現(xiàn)象,如孔灘氣田東北部發(fā)育一古溶丘,而位于該溶丘附近的孔6、孔10井為該氣田的主要產(chǎn)氣井。以上現(xiàn)象都間接的反映了巖溶陡坡內(nèi)由于地下水徑向流動及垂向滲流的共同作用,形成的巖溶縫洞發(fā)育且后期被填充物充填較弱,儲集空間發(fā)育。巖溶陡坡其地勢坡降程度相對于巖溶陡坡略小,坡度角多小于5°,局部地區(qū)也不排除坡度較大。在該區(qū)域以發(fā)育水平徑流帶為主,垂向滲流帶發(fā)育程度及范圍明顯較小,在該區(qū)域由于地下水流速較慢,巖溶作用周期長,溶蝕空間易被機械、化學物質(zhì)充填,不利于縫洞系統(tǒng)的保存。巖溶緩坡主要發(fā)育于研究區(qū)巖溶臺地的東部區(qū)域,該區(qū)域發(fā)現(xiàn)的較大儲量的氣田相對較少(圖1),雖然在部分區(qū)域也出現(xiàn)鉆具放空以及泥漿漏失等現(xiàn)象,但這可能是由于巖溶緩坡內(nèi)次級古地貌(如巖溶槽谷兩側(cè))的影響,造成儲集空間相對較發(fā)育,但總體影響范圍較?。焕绾砂鼒鰳嬙焐系陌?2井、包33井以及包41井等都出現(xiàn)了不同程度的鉆具放空,說明這些井附近巖溶縫洞較發(fā)育,但這些井大都發(fā)育在巖溶槽谷兩側(cè),離巖溶巖溶槽谷較遠的區(qū)域則儲集空間不發(fā)育。巖溶盆地巖溶盆地古地勢平坦開闊,由于處于匯水排泄區(qū),地層水逐漸卸壓,其的巖溶作用方式有明顯差異。該區(qū)層狀溶蝕作用較弱,以表層巖溶及淺層徑流巖溶為主,局部落水洞和殘丘處由于水流快、水源充足也有一定溶蝕。此外,該區(qū)地下水基本處于過飽和狀態(tài),化學沉淀作用強,鈣質(zhì)及少量黃鐵礦常充填于溶蝕空間使巖性變得致密,從而影響儲層的儲集性能。3不同巖溶地貌類型區(qū)縫洞發(fā)育特征由于不同地貌單元處于不同的水動力條件,其巖溶作用方式(降水補給方式、地下水徑流方式)、巖溶作用條件(水巖作用周期、巖溶作用強度)等也不同,因而所形成巖溶縫洞系統(tǒng)特征也有較大的差異[12]。研究這些特征差異有利于掌握儲集空間的分布規(guī)律,進行有利區(qū)帶的劃分??傮w來說,蜀南地區(qū)碳酸鹽巖孔隙、溶洞和裂縫均有發(fā)育,但儲集空間類型主要為裂縫-溶洞型,溶洞為主要儲集空間,裂縫為有效的滲流通道。3.1巖溶臺地縫洞發(fā)育特征巖溶臺地位于原始基底隆起之上,表現(xiàn)為高平臺,地層剝蝕強度大,剝蝕最嚴重處出露茅二段。合江、廟高寺、楊家山、陽高寺、隆昌、壇子壩、荔枝灘等地即位于巖溶臺地上(見圖1)。根據(jù)古地貌的形態(tài)和殘積巖厚度及分布,結(jié)合個體組合特征[9],進一步在巖溶臺地上劃分出三級地貌單元,主要有溶丘盆地、溶丘洼地和峰叢洼地,洼地和盆地中普遍發(fā)育小型漏斗和落水洞。巖溶臺地在東吳運動后露出水面,在大氣水的淋濾、溶蝕作用下,碳酸鹽巖表面形成不規(guī)則的凹坑,進而發(fā)育成洼地、漏斗及落水洞,與此同時形成的山體多以溶丘和峰叢的形態(tài)出現(xiàn)。該區(qū)地層水以垂向滲濾為主,垂向溶蝕作用強,因此在滲流帶常常形成高角度裂縫以及沿裂縫分布的中小型溶蝕孔洞,局部(巖溶臺地邊緣)形成順層溶蝕。但巖溶臺地區(qū)在鉆遇茅口組地層時,在相間距離并不遠的井之間,常出現(xiàn)不同的現(xiàn)象,反映了溶蝕縫洞間橫向連通性較差,非均質(zhì)性較強,如納6井茅口組在直眼鉆井時未見任何縫洞或油氣顯示,但在側(cè)鉆時出現(xiàn)鉆時明顯降低、井漏和2.25m的鉆具放空以及井噴現(xiàn)象,并獲較大的天然氣儲量,而側(cè)鉆放空井段與直眼同層水平距離僅12m。而巖溶臺地邊緣的鹿3井在茅二a放空0.61m并發(fā)生井噴,獲得日產(chǎn)氣1000×104m3/d高產(chǎn)工業(yè)性氣流,為較大儲量縫洞系統(tǒng),而與之相距僅0.9km位于高點的鹿1井茅口組僅產(chǎn)微氣,上述顯著的差異都說明了縫洞發(fā)育的高度非均質(zhì)性。另外,地層受高地勢的影響剝蝕強度較大,溶蝕空間常常受到不同程度的充填,致使臺地內(nèi)部鉆井過程中井漏現(xiàn)象發(fā)生頻繁,但大的放空現(xiàn)象較少(見圖1)。據(jù)統(tǒng)計,巖溶臺地上有100余口井發(fā)生井漏現(xiàn)象,放空0.3m以上的井僅20余口,且最大放空量不超過5m。溶蝕空間橫向連通性差及易受充填都不利于其形成大的有效儲集層。但是臺地邊緣、峰叢斜坡、洼地四周較高部位等區(qū)域,地下水排泄系統(tǒng)相對發(fā)達,溶蝕縫洞受充填程度小,易發(fā)育大型的溶洞。如長8井,該井位于巖溶臺地邊緣,同時也在峰叢斜坡上,茅四段全部被剝蝕,錄井測試顯示,鉆至茅三段(2107.37m—2112.15m)時,鉆具放空4.78m。位于峰叢斜坡的寺36井、井8井、老深1井,溶丘上的合27井,臺地邊緣的寺25井、洞4井等都因水動力較強而發(fā)育較大的巖溶縫洞系統(tǒng)。3.2巖溶坡地縫洞發(fā)育特征巖溶坡地處于巖溶臺地與巖溶盆地的中間地帶,茅口組殘余地層厚度向巖溶盆地方向增厚,地勢呈逐漸向盆內(nèi)傾斜的坡狀(見圖1)。陡坡帶上主要發(fā)育丘峰洼地和峰叢壟脊溝谷,緩坡帶上則以峰丘洼地、丘叢壟脊溝谷和巖溶槽谷為主。巖溶陡坡地下水除接受大氣降水垂直滲流補給外,還接受巖溶臺地地下水的側(cè)向補給,水動力作用強。地下水以近水平徑流為主,徑流巖溶帶中水巖作用強度大,因此徑流帶厚度較大且溶蝕縫洞發(fā)育,可形成眾多具一定規(guī)模的溶縫、溶洞[13]。大型溶洞的頂、底部及四周由于巖石力學強度的降低常伴隨發(fā)育網(wǎng)狀裂縫、溶蝕縫,易形成裂縫—溶洞型儲層,并且陡坡地下水流速快,溶蝕縫洞受充填程度低,儲集空間保存較好,因而易出現(xiàn)高產(chǎn)井。據(jù)資料統(tǒng)計這些高產(chǎn)井多位于巖溶槽、谷兩側(cè)的斜坡上(表1)。尤其是自流井構造西段軸部自2井,錄井顯示于茅三-棲一段放空4.45m未到底,漏失比重1.2泥漿約100m3,并強烈井噴,投產(chǎn)初期日產(chǎn)氣量高達220×104m3/d,截止2009年7月該井累計產(chǎn)氣48.62×10表1巖溶陡坡帶部分井錄井測試簡況Table1Thephenomenonofdrillingandtestinginpartofthewellsofarea井名古地貌中位置井段放空米數(shù)(m)測試產(chǎn)氣量(×104m3/d)茅口組單井儲量(×108m3)付5溝谷南西側(cè)上方茅二a-b2210-2288.720.382.168338.26自2槽谷北東側(cè)上方茅三-棲一1975.99-2265鉆頭直接掉入溶洞195.361455.7老4溝谷北東側(cè)上方茅四-茅三2167.65-2191.800.146.217536.42牟9溝谷南西側(cè)上方茅四2479.58-2529.5無(有井漏)250.9510.07宋1槽谷北西側(cè)上方茅四2529.03-25541.67129.0638.00青2溝谷北側(cè)上方茅四3238.12-3312.14無(有井漏)67.135.03巖溶緩坡地形相對平緩,水力梯度較小,溶蝕孔洞易被垮塌角礫巖、泥砂質(zhì)碎屑巖部分充填,裂縫易被方解石、鈣質(zhì)層及少量黃鐵礦等化學物質(zhì)充填,這些現(xiàn)象在鏡下薄片、測井曲線上等常有顯示。如圖6為威陽17井茅二a段(1701.28~1701.31米)被方解石半充填的溶縫;圖7為包29井在茅二a段(3323~3328米)的測井響應,自然伽瑪值增大,深淺電阻率出現(xiàn)正差異(即深側(cè)向電阻率值大于淺側(cè)向電阻率值),但井徑不變,表明溶蝕縫洞被泥砂質(zhì)充填。以上現(xiàn)象都反映了巖溶緩坡的儲集物性總體比巖溶陡坡差。威陽17井,茅二a1701.28-1701.31米,被方解石半充填的溶縫,25×圖6威陽17井茅二段灰?guī)r薄片特征圖7包29井測井曲線圖3.3巖溶盆地縫洞發(fā)育特征巖溶盆地地勢低且平坦,是地下水的排泄區(qū),大部分處于潛水面以下,主要分布于巖溶陡坡帶以西和巖溶緩坡帶以北的區(qū)域。據(jù)錄井資料,西部盆地相茅四段厚度多在120m-160m之間,而北部盆地茅四段厚度均不超過50m,局部區(qū)域茅四段缺失。三級地貌形態(tài)主要有殘丘平原和峰林平原,殘丘與洼地地貌常常以組合形態(tài)出現(xiàn)。巖溶盆地中茅口組保存較全,表明該區(qū)整體上遭受的剝蝕作用偏弱。由于巖溶盆地大部分處于潛水面以下,地下水水動力弱,化學沉淀作用強,故表層巖溶帶和垂向滲流帶中發(fā)育的溶蝕縫洞較少,并且溶孔(洞)及裂縫大都被泥質(zhì)及方解石充填,徑流帶基本不發(fā)育。這就是盆地內(nèi)所鉆井中無放空現(xiàn)象、僅少部分井發(fā)生井漏的原因之一。此外,盡管盆地中部分殘丘地形相對較高,一般分布于溶蝕溝谷的兩側(cè),可能接受大氣水的淋濾溶蝕發(fā)育表層巖溶,但受區(qū)域小的限制,很難形成有工業(yè)價值的儲集層。由于巖溶盆地中在茅口組所鉆的井產(chǎn)氣都很微弱,工業(yè)價值極小,故目前巖溶盆地中鉆遇茅口組的井數(shù)量不多,但從已有的錄井資料仍能分析得出,大多數(shù)井有不同程度的井漏,但產(chǎn)氣量極少或不產(chǎn)氣,盆地內(nèi)整體儲層較差,為油氣勘探不利地區(qū)。4有利儲集區(qū)帶分析根據(jù)不同地貌單元上巖溶縫洞特征的研究結(jié)果,結(jié)合茅口組各單井儲量,在蜀南地區(qū)劃分出了有利儲集區(qū)帶,較有利儲集區(qū)帶,一般儲集區(qū)帶和較差儲集區(qū)帶[14,15]。各區(qū)帶劃分如下(圖8)。(1)最有利儲集區(qū)帶:巖溶臺地西部邊緣過渡帶和巖溶陡坡帶,儲層物性參數(shù)較好,是有利構造和裂縫系統(tǒng)共同發(fā)育的地帶。特別是巖溶溝槽兩側(cè)的斜坡上,其縫洞發(fā)育規(guī)模大、孔隙度和滲透率高(孔隙度在1.15%-1.55%之間),儲集性能最好,是最有利的儲集區(qū)帶,也是天然氣富集的最有利場所。如前面提到的自2井,從古地貌圖上可以看出其位于巖溶臺地和巖溶斜坡的過渡地帶,同時也在古槽谷一側(cè)的斜坡上,附近斷裂較為發(fā)育,具備形成大型縫洞的地質(zhì)條件,是茅口組中天然氣產(chǎn)量近50億方的超大型縫洞系統(tǒng)。(2)較有利儲集區(qū)帶:巖溶臺地和巖溶緩坡西部邊緣,高角度裂縫以及中小型溶蝕孔洞發(fā)育,溶蝕縫洞易受部分充填且橫向連通性較差。該處發(fā)育的洼地、溝谷多處于古水系局部分水嶺地帶,匯流條件有限,故溶洞發(fā)育規(guī)模較西部陡坡帶?。簧介g盆地、洼地四周及溝谷兩側(cè)的高部位巖溶作用較強,因而是較有利的勘探區(qū)。(3)一般儲集區(qū)帶:主要位于巖溶斜坡與巖溶盆地過渡地帶,經(jīng)過較長距離的運移溶蝕,水礦化度一般較高,溶蝕能力變差,化學沉淀作用增強,巖溶縫洞的發(fā)育規(guī)模小,僅有局部溶丘及溶峰處發(fā)育小型落水洞,儲集性能一般,為一般儲集區(qū)帶。(4)較差儲集區(qū)帶:巖溶盆地大片地區(qū),巖溶縫洞發(fā)育較少,且常被泥質(zhì)及方解石充填,儲集性能差,盆地內(nèi)殘丘表層巖溶發(fā)育,但殘丘一般較小因而不能形成較大儲集層,因此該區(qū)儲層較差,為油氣勘探不利地區(qū),如麻柳場、天宮堂等地區(qū)尚未在茅口組發(fā)現(xiàn)工業(yè)性氣流。圖8蜀南地區(qū)茅口組有利勘探區(qū)帶分布及單井儲量疊合圖
5結(jié)論(1)結(jié)合蜀南地區(qū)鉆井資料,選用沉積連續(xù)且穩(wěn)定的長興組頂部作為茅口組古地貌恢復的基準面,劃分出巖溶臺地、巖溶坡地和巖溶盆地3個二級地貌單元,其中巖溶坡地根據(jù)坡度大小又分為西部陡坡帶和東北緩坡帶。(2)不同地貌單元的水動力條件差別較大,巖溶陡坡、巖溶臺地與陡坡過渡帶峰叢、丘峰發(fā)育,地下水水動力作最強,地下水以水平徑流為主;巖溶臺地地下水垂向滲流作用強烈,尤其是洼地和小型盆地四周較高部位;緩坡帶上地下水同樣以水平徑流為主,垂向滲流作用次之,但地勢較緩,水流流速較慢;巖溶盆地地勢平坦,巖溶水匯聚于此,地下水水動力差,化學沉淀作用強。(3)該區(qū)縫洞系統(tǒng)發(fā)育受古地貌控制明顯。巖溶陡坡帶垂向和水平縫洞系統(tǒng)發(fā)育,大型溶洞多在此發(fā)育,尤其在溝谷、槽谷兩側(cè);巖溶臺地與陡坡帶接觸部位是地下水水動力轉(zhuǎn)換帶,巖溶作用較強,但巖溶臺地和巖溶緩坡帶縫洞系統(tǒng)受后期充填影響,縫洞保存情況不佳;巖溶盆地縫洞不發(fā)育,儲集性能最差。(4)根據(jù)古地貌與巖溶縫洞發(fā)育關系的研究,并結(jié)合實際生產(chǎn)資料,認為巖溶臺地邊緣和西部巖溶陡坡帶是儲集層發(fā)育最好的地區(qū),為油氣勘探的最有利區(qū),巖溶盆地是勘探不利區(qū)。
參考文獻:[1]夏日元,唐健生,關碧珠等.鄂爾多斯盆地奧陶系古巖溶地貌及天然氣富集特征[J].石油與天然氣地質(zhì),1996,20(2):133-136.[2]樊靖宇,李明波.威遠-安岳地區(qū)茅口組碳酸鹽巖儲層特征[J].西部探礦工程,2009,(5)86-88.[3]馬永生等.碳酸鹽巖儲層沉積學[M].北京:地質(zhì)出版社,1999.[4]郝蜀民,司建平,許萬年.鄂爾多斯盆地北部古生代巖溶及有利油氣勘探區(qū)塊預測[J].中國巖溶,1994,13(2):176-179.[5]夏日元,唐健生,關碧珠等.鄂爾多斯盆地奧陶系古巖溶地貌及天然氣富集特征[J].石油與天然氣地質(zhì),1996,20(2):133-136.[6]王紅,秦成明,王麗英.四川盆地下二疊統(tǒng)、上三疊統(tǒng)水動力場與天然氣保存[J].石油勘探與開發(fā),1997,24(5):29-32.[7]李茂秋.向斜盆地區(qū)域動力水流模型[J].中國巖溶,1985(3):231-239.[8]陳利新,潘文慶,梁彬等.輪南奧陶系潛山表層巖溶儲層的分布特征[J].中國巖溶,2011,30(3):327-333.[9]羅冰,譚秀成,李凌等.蜀南地區(qū)長興組頂部巖溶不整合的發(fā)現(xiàn)及其油氣地質(zhì)意義[J].石油學報,2010,31(3):408-414.[10]張宏,鄭浚茂,楊道慶等.塔中卡塔克區(qū)塊古巖溶儲層地震預測技術[J].石油學報,2008,29(1):69-74.[11]屈海洲,王福煥,王振宇等.塔中北部斜坡帶古巖溶發(fā)育特征及演化模式[J].新疆石油地質(zhì),201132(3):257-261.[12]張錦泉,耿愛琴,陳洪德等.鄂爾多斯盆地奧陶系馬家溝組古巖溶天然氣儲層[J].成都地質(zhì)學院報,1992,19(4):65-71.[13]王雪蓮,王長陸,陳振林,田繼軍.鄂爾多斯盆地奧陶系風化殼巖溶儲層研究[J].特種油氣藏,2005,12(3):32-35.[14]何碧竹,焦存禮,賈斌峰等.塔里木盆地塔中西部地區(qū)奧陶系巖溶作用及對油氣儲層的制約[J].地球?qū)W報,2009,30(3):395-403.[15]王志鵬,陸正元.巖溶在四川盆地下二疊統(tǒng)儲集層中的重要作用[J].石油勘探與開發(fā),2006,33(2):141-144.《數(shù)據(jù)結(jié)構》課程設計報告課程名稱:赫夫曼編碼系統(tǒng)姓名:學號:專業(yè):班級:指導教師:目錄Contents1. 課程小組 21.1. 小組成員及分工 22. 設計目的和要求 23. 需求分析 24. 設計說明 24.1. 文件編碼(加密) 24.2. 文件解碼(解密) 35. 詳細設計 35.1. 程序主體結(jié)構 35.2. 主要算法說明 35.2.1. Huffman樹 35.2.2. Huffman編碼 55.2.3. 字符權重計算 65.2.4. 字符解碼 96. 實驗結(jié)果 106.1. 實驗結(jié)果說明 106.2. 程序運行截圖 117. 設計體會 128. 參考文獻 139. 附:程序代碼 13課程小組小組成員及分工…設計目的和要求通過課程設計,讓學生進一步熟悉與鞏固數(shù)據(jù)結(jié)構中常用算法,加深體會利用數(shù)據(jù)結(jié)構的算法解決實際問題的能力,培養(yǎng)學生進行復雜程序設計的技能,提高學生的思維能力、并促進其綜合應用能力、分析能力和團隊合作能力的提高。需求分析隨著網(wǎng)絡信息科技的不斷高速發(fā)展,網(wǎng)絡上的問題也不斷顯露出來,特別是人們特別關注的安全隱私問題,所以文件的傳輸安全性要特別地亟待解決和提高。本次的課程設計以赫夫曼編碼為題,設計出赫夫曼文件編碼系統(tǒng),旨在對文件中的內(nèi)容進行分析、統(tǒng)計、處理,進而按照赫夫曼編碼的理論,對文件進行簡單加密。特別是,不同的文本文件有不同的字符處理形式,所以因此每一個文本都會有一個相應的密鑰,用于對文本的解碼。設計說明本次編寫的程序按著對文件的編碼(加密)和解碼(解密)的兩大步驟展開。文件編碼(加密)首先選擇文件編碼程序。進入程序后,會要求操作人員選擇將要編碼的文件,并將其導入到程序中,程序正確導入文件后將會對文件從開始至結(jié)束掃描一遍,對文件中的字符進行統(tǒng)計,在最后計算出每個字符出現(xiàn)的頻率,并將頻率換算成每個字符相應的權重。然后根據(jù)得到的字符權重,構造赫夫曼樹并因此完成赫夫曼編碼(至此,文件的導入分析過程已完成)。然后讓操作人員選擇對文件進行編碼。此時,程序?qū)^續(xù)打開文件,繼續(xù)掃描一遍,并在掃描的過程中將掃描到得字符根據(jù)剛才編好的赫夫曼編碼進行對照,將對應的赫夫曼編碼寫入另一個文件(即加密的文件),所以,如果用戶代開加密的文件即看到里面全是二進制代碼,并不能分析出里面究竟是什么內(nèi)容。(至此,加密的文件應經(jīng)生成)。最后,因為每個文件中的內(nèi)容不同,所以每個文件的赫夫曼編碼也不同,而赫夫曼編碼是根據(jù)字符的權重生成的,所以每個文件都對應一個字符權重系列(即密鑰),如果失去這個密鑰,即使對文件進行了加密,也不同解密文件的內(nèi)容,即文件加密失效,所以在生成加密文件后,一定要導出文件的字符權重(即密鑰),以待之后的解碼使用。(至此,文件的加密工作應經(jīng)全部完成)。文件解碼(解密)文件的解碼程序是一步完成的,即要求操作者首先將之前生成的字符權重(即密鑰)導入程序,程序根據(jù)獲取到得字符權重,調(diào)用赫夫曼編碼子程序,進行赫夫曼編碼。然后程序會提示操作者將加密后的文件導入程序中,程序會根據(jù)在程序中獲取到的二進制編碼與赫夫曼編碼進行對照識別,顯示出對應的字符,因此,文件的解密工作完成。詳細設計程序主體結(jié)構程序主體結(jié)構分為文件編碼與文件解碼兩個子程序。文件編碼后分別導出編碼后文件與文件密鑰。文件解碼需導入編碼文件與文件密鑰,然后顯示文本內(nèi)容。主要算法說明Huffman樹//HuffmanTreelist:list為赫夫曼樹.typedefstruct{chardata; //存放字符數(shù)據(jù)intweight; //存放字符權重intparent,lchild,rchild; //分別為根、左子樹、右子樹}HuffmanTree;//Staticinfo:info為存放字符權重的數(shù)組指針.typedefstruct{ chardata; //存放字符數(shù)據(jù) intweight; //存放字符權重}Static;//intcodeSize:codeSize為字符種類個數(shù).voidCreatHuffmanTree(HuffmanTree*&list,Static*info,intcodeSize){ inti,j,limit;intlnode,rnode;intvalue1,value2; HuffmanTree*ptr; limit=codeSize*2-1; //limit為赫夫曼樹結(jié)點個數(shù) if((list=(HuffmanTree*)malloc(sizeof(HuffmanTree)*limit))==NULL) { printf("內(nèi)存不足,操作失敗!\n"); exit(0); }/*******************初始化赫夫曼樹各結(jié)點信息**************************/for(i=0,ptr=list;i<codeSize;++i,++ptr) { ptr->data=info[i].data; ptr->weight=info[i].weight; ptr->parent=ptr->lchild=ptr->rchild=-1; } for(;i<limit;++i,++ptr) { ptr->data='0'; ptr->weight=0; ptr->parent=ptr->lchild=ptr->rchild=-1; }/***********************開始建立赫夫曼樹******************************/for(i=codeSize;i<limit;++i) {value1=value2=32767;lnode=rnode=-1;//此部分函數(shù)功能為選擇權值最小的兩個結(jié)點for(j=0;j<i;++j){ if(list[j].parent==-1) {if(list[j].weight<value1) {value2=value1; rnode=lnode;value1=list[j].weight; lnode=j; }elseif(list[j].weight<value2) {value2=list[j].weight; rnode=j; } } }//此部分函數(shù)功能為選擇出的結(jié)點建立關系list[lnode].parent=i; list[rnode].parent=i;list[i].weight=list[lnode].weight+list[rnode].weight;list[i].lchild=lnode; list[i].rchild=rnode; }}Huffman編碼voidCreatHuffmanCode(HuffmanTree*list,HuffmanCode&code,intcodeSize){ inti,start; intflag1,flag2; char*tempCode; if((code=(char**)malloc(sizeof(char*)*codeSize))==NULL) { printf("內(nèi)存不足,操作失敗!\n"); exit(0); } if((tempCode=(char*)malloc(sizeof(char)*codeSize))==NULL) { printf("內(nèi)存不足,操作失敗!\n"); exit(0); } tempCode[codeSize-1]='\0';/**************************從葉子結(jié)點到根結(jié)點逆向求編碼***********************/ for(i=0;i<codeSize;++i) { start=codeSize-1; for(flag1=i,flag2=list[i].parent;flag2!=-1;flag1=flag2,flag2=list[flag2].parent) { if(list[flag2].lchild==flag1) { tempCode[--start]='0'; } else { tempCode[--start]='1'; } } if((code[i]=(char*)malloc(sizeof(char)*(codeSize-start)))==NULL) { printf("內(nèi)存不足,操作失敗!\n"); exit(0); } strcpy(code[i],&tempCode[start]); } free(tempCode);}字符權重計算//DatacharacterList:characterList為動態(tài)建立的存放字符種類及在文本中出現(xiàn)次數(shù)的單鏈表.typedefstructnode{ chardata;//存放字符數(shù)據(jù) intnumber;//存放字符個數(shù) structnode*next;}Data;//此算法中設計導入文件操作.voidDataCount(Static*&info){ FILE*fp; charch; charchoice; intcharacterNumber,typeNumber; DatacharacterList; Data*ptr,*current,*previous; system("CLS"); printf("\n請輸入需要打開的文件名稱:"); fflush(stdin); gets(fileName); while((fp=fopen(fileName,"rb"))==NULL) { printf("\n您需要打開的文件不存在,是否需要重新打開(Y/N)?:"); fflush(stdin); choice=getchar(); switch(choice) { case'Y': system("CLS"); printf("\n請輸入需要打開的文件名稱:"); fflush(stdin); gets(fileName); continue; case'N': return; default: break; } } characterNumber=typeNumber=0; characterList.next=NULL;//從文件中讀取信息并統(tǒng)計 while((ch=fgetc(fp))!=EOF) { current=characterList.next; if(current==NULL) { if((ptr=(Data*)malloc(sizeof(Data)))==NULL) { printf("內(nèi)存不足,操作失敗!\n"); exit(0); } ptr->data=ch; ptr->number=1; ptr->next=characterList.next; characterList.next=ptr; ++typeNumber; } else { while((current!=NULL)&&(current->data!=ch)) { previous=current; current=current->next; } if(current!=NULL) { ++(current->number); ++characterNumber; } else { if((ptr=(Data*)malloc(sizeof(Data)))==NULL) { printf("內(nèi)存不足,操作失敗!\n"); exit(0); } ptr->data=ch; ptr->number=1; ptr->next=current; previous->next=ptr; ++typeNumber; ++characterNumber; } } } fclose(fp); codeSize=typeNumber; info=(Static*)malloc(sizeof(Static)*codeSize); current=characterList.next;//將統(tǒng)計好的字符權重信息存入權重文件中 for(inti=0;i<codeSize;++i) { info[i].data=current->data; info[i].weight=(int)(current->number*100.0/characterNumber); current=current->next; }}字符解碼//此代碼用于比較查找赫夫曼編碼boolCompareData(char*tempCode,int&position){ for(position=0;position<codeSize;++position) { if(strcmp(tempCode,code[position])==0) { returntrue; } } returnfalse;}voidDisplayContext(){ InportCharacterWeight(); CreatHuffmanTree(list,info,codeSize); CreatHuffmanCode(list,code,codeSize); InportFileCoding(); FILE*fp; intposition; intend; char*tempCode; charch; fp=fopen(fileName,"rb"); if((tempCode=(char*)malloc(sizeof(char)*codeSize))==NULL) { printf("內(nèi)存不足,操作失敗!\n"); exit(0); } end=0;/******************************此部分為解碼過程************************/ printf("\n文件內(nèi)容為:\n\n"); while((ch=fgetc(fp))!=EOF) { tempCode[end]=ch; ++end; tempCode[end]='\0'; if(CompareData(tempCode,position)) { printf("%c",info[position].data); end=0; } } printf("\n\n按任意鍵結(jié)束!"); getch();}實驗結(jié)果實驗結(jié)果說明經(jīng)過多次對本程序的實驗,此次編譯完成的程序可以對簡單的文本文件進行加密和解密,因為限于對文件的基本操作不是太完全清楚,只是匆匆查閱了一些關于C語言文件操作部分的資料,所以這也是文件操作方面的一個瑕疵。所以綜上,次此的程序只能進行簡單的加密與解密操作。程序運行截圖(圖1:赫夫曼加密程序主體窗口)(圖2:赫夫曼文件編碼程序窗口)(圖3:用于測試的文本原始文本內(nèi)內(nèi)容)(圖4:導出文件編碼后,在創(chuàng)建的編碼文件中生成的二進制數(shù))(圖5:導出的文本密鑰(即字符權重))(圖6:赫夫曼文件譯碼程序窗口)(圖7:將之前生成的編碼文件與密鑰導入進來后顯示出原來的文本內(nèi)容)設計體會進過此次的實驗,讓我對樹結(jié)構及最優(yōu)二叉樹概念與操作的理解。在此次選擇赫夫曼編碼操作的時候,本打算用赫夫曼編碼的程序?qū)ξ募M行壓縮存儲,可是限于不知道怎樣將生成的赫夫曼編碼進行bit級別的存儲(只知道進行Byte級別的存儲),所以壓縮存儲的想法失敗了,之后根據(jù)赫夫曼編碼的結(jié)構及生成的文件,不得不讓我想到了文件的加密與解密,于是按著這個思路來設計了本文件加密解密系統(tǒng)。在設計的時候,曾準備根據(jù)網(wǎng)上之前對26個英文字符的使用統(tǒng)計來事先對字符權重進行分配(這樣加密的文件可解密性增加了),而且考慮到文件中不僅有26個英文字母,如果對各種字符的使用頻率進行統(tǒng)計,這個事先工作的負擔會很重,所以之后編寫了自動統(tǒng)計文本字符的頻率程序,這樣工作量會減小很多(而且文件的可解密性大大減小,但是也帶來了記錄密鑰的不方便)??傮w感覺程序還行,就是代碼的簡潔性還是有點差,條理還是不那么清晰。參考文獻[1]嚴蔚敏、吳偉明.數(shù)據(jù)結(jié)構.清華大學出版社.1997.4[2]ThomasH.Cormen、CharlesE.Leiserson.算法導論.機械工業(yè)出版社.2006.9附:程序代碼#include<stdio.h>#include<conio.h>#include<string.h>#include<stdlib.h>//赫夫曼樹結(jié)構typedefstruct{chardata;intweight;intparent,lchild,rchild;}HuffmanTree;//字符權重結(jié)構typedefstruct{ chardata; intweight;}Static;//統(tǒng)計字符時所用到的鏈表結(jié)構typedefstructnode{ chardata; intnumber; structnode*next;}Data;//赫夫曼代碼結(jié)構typedefchar**HuffmanCode;//創(chuàng)建赫夫曼樹voidCreatHuffmanTree(HuffmanTree*&list,Static*info,intcodeSize);//創(chuàng)建赫夫曼代碼voidCreatHuffmanCode(HuffmanTree*list,HuffmanCode&code,intcodeSize);//從文件中讀取數(shù)據(jù)并計算各字符出現(xiàn)頻率voidDataCount(Static*&info);//文件編碼程序voidFileEncoding();//創(chuàng)建文件編碼voidCreatFileCoding();//導出編碼后文件voidExportFileEncoding(HuffmanTree*list,HuffmanCodecode,intcodeSize);//導出文件中字符權重voidExportCharacterWeight();//文件譯碼程序voidFileDecoding();//導入編碼后的文件voidInportFileCoding();//導入文件中字符權重voidInportCharacterWeight();//顯示譯碼后的文件內(nèi)容voidDisplayContext();boolCompareData(char*tempCode,int&position);voidBound(charcharacter,intsize);//赫夫曼樹HuffmanTree*list;//赫夫曼代碼HuffmanCodecode;//字符權重信息Static*info;//字符種數(shù)intcodeSize;//文件名charfileName[30];intmain(){ charchoice; while(true) { system("CLS"); printf("赫夫曼編碼加密程序\n"); Bound('-',25); printf("1.文件編碼\n"); printf("2.文件譯碼\n"); printf("0.退出程序\n"); Bound('-',25); printf("請選擇:"); fflush(stdin); choice=getchar(); switch(choice) { case'1': FileEncoding(); break; case'2': FileDecoding(); break; case'0': printf("\n"); system("PAUSE"); return0; break; default: printf("\n您的輸入有誤,按任意鍵后請從新輸入!"); getch(); break; } }}voidCreatHuffmanTree(HuffmanTree*&list,Static*info,intcodeSize){ inti,j,limit;intlnode,rnode;intvalue1,value2; HuffmanTree*ptr; limit=codeSize*2-1; if((list=(HuffmanTree*)malloc(sizeof(HuffmanTree)*limit))==NULL) { printf("內(nèi)存不足,操作失敗!\n"); exit(0); }for(i=0,ptr=list;i<codeSize;++i,++ptr) { ptr->data=info[i].data; ptr->weight=info[i].weight; ptr->parent=ptr->lchild=ptr->rchild=-1; } for(;i<limit;++i,++ptr) { ptr->data='0'; ptr->weight=0; ptr->parent=ptr->lchild=ptr->rchild=-1; }for(i=codeSize;i<limit;++i) {value1=value2=32767;lnode=rnode=-1;for(j=0;j<i;++j){ if(list[j].parent==-1) {if(list[j].weight<value1) {value2=value1; rnode=lnode;value1=list[j].weight; lnode=j; }elseif(list[j].weight<value2) {value2=list[j].weight; rnode=j; } } }list[lnode].parent=i; list[rnode].parent=i;list[i].weight=list[lnode].weight+list[rnode].weight;list[i].lchild=lnode; list[i].rchild=rnode; }}voidCreatHuffmanCode(HuffmanTree*list,HuffmanCode&code,intcodeSize){ inti,start; intflag1,flag2; char*tempCode; if((code=(char**)malloc(sizeof(char*)*codeSize))==NULL) { printf("內(nèi)存不足,操作失敗!\n"); exit(0); } if((tempCode=(char*)malloc(sizeof(char)*codeSize))==NULL) { printf("內(nèi)存不足,操作失敗!\n"); exit(0); } tempCode[codeSize-1]='\0'; for(i=0;i<codeSize;++i) { start=codeSize-1; for(flag1=i,flag2=list[i].parent;flag2!=-1;flag1=flag2,flag2=list[flag2].parent) { if(list[flag2].lchild==flag1) { tempCode[--start]='0'; } else { tempCode[--start]='1'; } } if((code[i]=(char*)malloc(sizeof(char)*(codeSize-start)))==NULL) { printf("內(nèi)存不足,操作失敗!\n"); exit(0); } strcpy(code[i],&tempCode[start]); } free(tempCode);}voidDataCount(Static*&info){ FILE*fp; charch; charchoice; intcharacterNumber,typeNumber; DatacharacterList; Data*ptr,*current,*previous; system("CLS"); printf("\n請輸入需要打開的文件名稱:"); fflush(stdin); gets(fileName); while((fp=fopen(fileName,"rb"))==NULL) { printf("\n您需要打開的文件不存在,是否需要重新打開(Y/N)?:"); fflush(stdin); choice=getchar(); switch(choice) { case'Y': system("CLS"); printf("\n請輸入需要打開的文件名稱:"); fflush(stdin); gets(fileName); continue; case'N': return; default: break; } } characterNumber=typeNumber=0; characterList.next=NULL; while((ch=fgetc(fp))!=EOF) { current=characterList.next; if(current==NULL) { if((ptr=(Data*)malloc(sizeof(Data)))==NULL) { printf("內(nèi)存不足,操作失敗!\n"); exit(0); } ptr->data=ch; ptr->number=1; ptr->next=characterList.next; characterList.next=ptr; ++typeNumber; } else { while((current!=NULL)&&(current->data!=ch)) { previous=current; current=current->next; } if(current!=NULL) { ++(current->number); ++characterNumber; } else { if((ptr=(Data*)malloc(sizeof(Data)))==NULL) { printf("內(nèi)存不足,操作失敗!\n"); exit(0); } ptr->data=ch; ptr->number=1; ptr->next=current; previous->next=ptr; ++typeNumber; ++characterNumber; } } } fclose(fp); codeSize=typeNumber; info=(Static*)malloc(sizeof(Static)*codeSize); current=characterList.next; for(inti=0;i<codeSize;++i) { info[i].data=current->data; info[i].weight=(int)(current->number*100.0/characterNumber); current=current->next; }}voidFileEncoding(){ charchoice; while(true) { system("CLS"); printf("文件編碼程序\n"); Bound('-',25); printf("1.創(chuàng)建文件編碼\n"); printf("2.導出文件編碼\n"); printf("3.導出文件密鑰\n"); printf("0.返回主菜單\n"); Bound('-',25); printf("請選擇:"); fflush(stdin); choice=getchar(); switch(choice) { case'1': CreatFileCoding(); break; case'2': ExportFileEncoding(list,code,codeSize); break; case'3': ExportCharacterWeight(); break; case'0': return; default: printf("\n您的輸入有誤,按任意鍵后請從新輸入!"); getch(); break; } }}voidCreatFileCoding(){ DataCount(info); CreatHuffmanTree(list,info,codeSize); CreatHuffmanCode(list,code,codeSize); printf("\n創(chuàng)建文件編碼成功!按任意鍵繼續(xù)!"); getch();}voidExportFileEncoding(HuffmanTree*list,HuffmanCodecode,intcodeSize){ inti; charch; charoutFileName[30]; FILE*inFile,*outFile; system("CLS"); inFile=fopen(fileName,"rb"); printf("\n請創(chuàng)建導出文件名:"); fflush(stdin); gets(outFileName); if((outFile=fopen(outFileName,"wb"))==NULL) { printf("輸出文件創(chuàng)建失敗!\n"); exit(0); } while((ch=fgetc(inFile))!=EOF) { for(i=0;i<codeSize;++i) { if(list[i].data==ch) { fputs(code[i],outFile); break; } } } fcloseall(); printf("\n導出文件成功!按任意鍵繼續(xù)!"); getch();}voidExportCharacterWeight(){ charoutFileName[30]; FILE*fp; system("CLS"); printf("\n請創(chuàng)建導出文件名:"); fflush(stdin); gets(outFileName); if((fp=fopen(outFileName,"wb"))==NULL) { printf("輸出文件創(chuàng)建失敗!\n"); exit(0); } for(inti=0;i<codeSize;++i) { fprintf(fp,"%c%d",info[i].data,info[i].weight); } fclose(fp); free(info); free(list); free(code); printf("\n導出文件成功!按任意鍵繼續(xù)!"); getch();}voidFileDecoding(){ charchoice; while(true) { system("CLS"); printf("文件譯碼程序\n"); Bound('
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度文化創(chuàng)意產(chǎn)業(yè)扶持貸款合同:文化產(chǎn)業(yè)金融借款協(xié)議2篇
- 2025年度醫(yī)療器械注冊代理與品牌合作開發(fā)合同范本4篇
- 2025版苗圃基地苗木種植與生態(tài)旅游結(jié)合合同4篇
- 2024版合同范本運輸代理合同范本
- 2025年成都餐飲服務上灶師父招聘與客戶滿意度提升合同2篇
- 基于2025年度市場需求的水泥預制品生產(chǎn)許可合同2篇
- 個性化電腦系統(tǒng)維護合同2024年版版B版
- 2025版學校與安防企業(yè)合作校園安防合同3篇
- 2025年度智能機器人研發(fā)與銷售合同范本4篇
- 2025年度互聯(lián)網(wǎng)保險代理合同4篇
- 2024-2030年中國海泡石產(chǎn)業(yè)運行形勢及投資規(guī)模研究報告
- 動物醫(yī)學類專業(yè)生涯發(fā)展展示
- 2024年同等學力申碩英語考試真題
- 消除“艾梅乙”醫(yī)療歧視-從我做起
- 非遺文化走進數(shù)字展廳+大數(shù)據(jù)與互聯(lián)網(wǎng)系創(chuàng)業(yè)計劃書
- 科普知識進社區(qū)活動總結(jié)與反思
- 加油站廉潔培訓課件
- 現(xiàn)金日記賬模板(帶公式)
- 消化內(nèi)科??票O(jiān)測指標匯總分析
- 混凝土結(jié)構工程施工質(zhì)量驗收規(guī)范
- 肝性腦病患者的護理措施課件
評論
0/150
提交評論