![水資源短缺風險建模論文_第1頁](http://file4.renrendoc.com/view/4e1b58bdce419b51b056d2e5884217f7/4e1b58bdce419b51b056d2e5884217f71.gif)
![水資源短缺風險建模論文_第2頁](http://file4.renrendoc.com/view/4e1b58bdce419b51b056d2e5884217f7/4e1b58bdce419b51b056d2e5884217f72.gif)
![水資源短缺風險建模論文_第3頁](http://file4.renrendoc.com/view/4e1b58bdce419b51b056d2e5884217f7/4e1b58bdce419b51b056d2e5884217f73.gif)
![水資源短缺風險建模論文_第4頁](http://file4.renrendoc.com/view/4e1b58bdce419b51b056d2e5884217f7/4e1b58bdce419b51b056d2e5884217f74.gif)
![水資源短缺風險建模論文_第5頁](http://file4.renrendoc.com/view/4e1b58bdce419b51b056d2e5884217f7/4e1b58bdce419b51b056d2e5884217f75.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、水資源短缺風險綜合評價摘要關鍵詞: 一、問題重述水資源,是指可供人類直接利用,能夠不斷更新的天然水體。主要包括陸地上的地表水和地下水。風險,是指某一特定危險情況發(fā)生的可能性和后果的組合。水資源短缺風險,泛指在特定的時空環(huán)境條件下,由于來水和用水兩方面存在不確定性,使區(qū)域水資源系統(tǒng)發(fā)生供水短缺的可能性以及由此產生的損失。近年來,我國、特別是北方地區(qū)水資源短缺問題日趨嚴重,水資源成為焦點話題。以北京市為例,北京是世界上水資源嚴重缺乏的大都市之一,其人均水資源占有量不足300m3,為全國人均的1/8,世界人均的1/30,屬重度缺水地區(qū),附表中所列的數據給出了1979年至2000年北京市水資源短缺的狀
2、況。北京市水資源短缺已經成為影響和制約首都社會和經濟發(fā)展的主要因素。政府采取了一系列措施, 如南水北調工程建設, 建立污水處理廠,產業(yè)結構調整等。但是,氣候變化和經濟社會不斷發(fā)展,水資源短缺風險始終存在。如何對水資源風險的主要因子進行識別,對風險造成的危害等級進行劃分,對不同風險因子采取相應的有效措施規(guī)避風險或減少其造成的危害,這對社會經濟的穩(wěn)定、可持續(xù)發(fā)展戰(zhàn)略的實施具有重要的意義。北京2009統(tǒng)計年鑒及市政統(tǒng)計資料提供了北京市水資源的有關信息。利用這些資料和你自己可獲得的其他資料,討論以下問題:1評價判定北京市水資源短缺風險的主要風險因子是什么?影響水資源的因素很多,例如:氣候條件、水利工程
3、設施、工業(yè)污染、農業(yè)用水、管理制度,人口規(guī)模等。2建立一個數學模型對北京市水資源短缺風險進行綜合評價, 作出風險等級劃分并陳述理由。對主要風險因子,如何進行調控,使得風險降低?3 對北京市未來兩年水資源的短缺風險進行預測,并提出應對措施。4 以北京市水行政主管部門為報告對象,寫一份建議報告。二、符號說明三、評價判定水資源短缺風險因子3.1問題的分析3.1.1基于聚類分析的水資源短缺風險因子分類為了直觀地說明水資源短缺風險程度,利用Quick Cluster過程(快速樣本聚類) 對風險進行聚類??焖贅颖揪垲愋枰_定類數,利用均值分類方法對觀測量進行聚類,根據設定的收斂判據和迭代次數結束聚類過程,
4、計算觀測量與各類中心的距離,根據距離最小的原則把各觀測量分派到各類中心所在的類中去。事先選定初始類中心,根據組成每一類的觀測量,計算各變量均值,每一類中的均值組成第二次迭代的類中心,按照這種方法迭代下去,直到達到迭代次數或達到中止迭代的數據要求時,迭代停止,聚類過程結束。對于等間隔測度的變量,一般用Euclidean distance(歐式距離) 計算。3.1.2基于因子分析與主成分分析的水資源短缺主要風險因子判定因子分析 為了直觀地突出主要的水資源短缺風險因子,方便控制和治理水資源短缺問題,利用因子分析這種降維、簡化數據的技術。通過研究眾多觀測量之間的內部依賴關系,探求觀測數據中的基本結構,
5、并用少數幾個“抽象”的觀測量來表示其基本的數據結構。能反映原來眾多變量的主要信息,原始的變量是可觀測的顯在變量,而因子一般是不可觀測的潛在變量。因子分析的模型因子分析的數學模型,與一般的多元回歸模型比較相似,即每個變量都可表示成各個因子的線性組合。例如“入境水量”的指標可以表示為 (1)式(1)與一般多元回歸方程式的不同之處是:括號內的這三個變量并非獨立變量,而是由一組變量按其特征形成了新變量,這就是“共同因子”;而變量則稱為“唯一因子”,它僅是(即入境水量)指標中的孤立的一個因子。式(1)中的為共同因子的常數(即因子載荷量)一般的說,對于第個觀測量的數學模型為 (2)式(2)中,是共同因子,
6、是共同因子的常數。主成分分析由于多個觀測量之間往往存在著一定程度的相關性。我們自然希望通過線性組合的方式,從這些指標中盡可能地提取信息。當第一個線性組合不能提取更多的信息時,再考慮用第二個線性組合繼續(xù)這個快速提取的過程,直到所提取的信息與原指標相差不多為止。一般說來,在主成分分析適用的場合,用較少的主成分就可以得到較多的信息量。以各個主成分為分量,就得到一個更低維的隨機向量;因此,通過主成分分析既可以降低數據“維數”,又保留了原數據的大部分信息。主成分分析的模型 設個觀測量構成的維隨機向量為.對作正交變換,令,其中為正交陣,要求的個分量是不相關的,并且的第一個分量的方差是最大的,第二個分量的方
7、差次之,。為了保持信息不丟失,的各分量的方差和與的各分量的方差和相等。3.2模型的假設影響水資源短缺風險因子存在而且可以用來解釋復雜變量。只要這個變量共同具有這個因子,便可觀測到這些變量是相關的。3.3模型的求解年份工業(yè)用水/億立方米生活用水/億立方米農業(yè)用水/億立方米水耗/立方米全年水資源總量地下水資源總量地表水資源總量降水量/毫米20019.212.00.3104.9119.215.77.8338.920027.510.80.880.1916.114.75.3370.420038.413.00.671.5018.414.86.1444.920047.712.80.657.3521.416.
8、58.2483.520056.813.41.149.5023.218.57.6410.720066.213.71.642.2524.518.56.031820075.813.92.735.3423.816.27.6483.920085.214.73.231.5834.221.412.8626.320095.214.73.629.9221.815.16.8480.6初始的因子載荷量及因子解釋的方差Factor1Factor2x1工業(yè)用水-0.870430.42069x2生活用水0.88322-0.22440 x3農業(yè)用水0.85161-0.42067x4水耗-0.869630.41256x5全年
9、水資源總量0.925610.32630 x6地下水資源總量0.741710.49757x7地表水資源總量0.742350.62574x8降水量0.780480.18681Variance Explained by Each FactorFactor1 Factor25.5863371 1.3550108由表2顯示出前2個因子與各個變量之間的相關關系,這些系數稱為因子載荷量。它們表示系數絕對值較大的變量,與相應因子(Factor)的相關強度較強,可以看出,全年水資源總量與Factor1的系數為0.92561,但對于因子2來說系數很小,為0.32630,表明全年水資源總量只與Factor1關系密切
10、。從表2可以看出x1,x2,x3,x4,x5,x6,x7,x8分別與Factor1相關,x7則與Factor2相關。但是到目前為止,不知道這8個因子對模型的擬合度究竟如何,因此需要進一步研究這8個因子。轉軸后的因子載荷量及因子解釋的方差Factor1Factor2x1工業(yè)用水0.93250-0.25508x2生活用水-0.813120.41141x3農業(yè)用水-0.918310.24273x4水耗0.92656-0.26068x5全年水資源總量-0.483090.85431x6地下水資源總量-0.231930.86251x7地表水資源總量-0.148170.95952x8降水量-0.465400
11、.65379Variance Explained by Each FactorFactor1 Factor2 3.7582617 3.1830862根據表4可以看出轉軸后的因子矩陣與表2大不一樣,Factor1因子載荷量大于0.5的,由8個銳減到4個,同時變量與因子相關的情形大不一樣了,即轉軸前x5,x6,x8與Factor1相關,所以x5,x6,x8 相關,但轉軸后,x5,x6,x7,x8與Factor2相關,又因為Factor2居后,他們的相關性就顯得相對地不太重要。 表3變量與因子得分Factor1Factor2x1工業(yè)用水0.321500.13156x2生活用水-0.22801-0.0
12、2089x3農業(yè)用水-0.31895-0.13377x4水耗0.317450.12714x5全年水資源總量0.033410.29039x6地下水資源總量0.141300.36401x7地表水資源總量0.203390.43537 x8降水量-0.014670.19573Squared Multiple Correlations of the Variables with Each FactorFactor1 Factor21.0000000 1.0000000從表6可以看出,變量x1(工業(yè)用水),x2(生活用水),x3(農業(yè)用水),x4(水耗)對因子1得分相對較高,起決定作用,但x5(全年水資源
13、總量),x6(地下水資源總量),x7(地表水資源總量),x8(降水量)對因子2得分相對較高,對其貢獻較大。 相關矩陣x1x2x3x4x5x6x7x8x11.0000-0.7758-0.92750.9400-0.6849-0.5005-0.3659-0.5417x2-0.77581.00000.8111-0.85580.75230.53340.50660.6053x3-0.92750.81111.0000-0.83430.64300.35400.42380.6204x40.9400-0.8558-0.83431.0000-0.6747-0.4984-0.3437-0.5824x5-0.68490
14、.75230.6430-0.67471.00000.91480.86140.6820 x6-0.50050.53340.3540-0.49840.91481.00000.76860.4391x7-0.36590.50660.4238-0.34370.86140.76861.00000.7835x8-0.54170.60530.6204-0.58240.68200.43910.78351.0000表8列出的是相關系數矩陣,從表中可以看出,工業(yè)用水和農業(yè)用水的相關系數為-0.9275,呈現較強的負相關,即當工業(yè)用水數量增加時,農業(yè)用水數量將有所下降;其次是生活用水和工業(yè)用水的相關系數為-0.775
15、8,即當工業(yè)用水的數量增加時,生活用水的數量有所下降。這是與實際相符的,用于供水量是一定的,所以作為用水量相對較大的三個板塊,一方用水的增加勢必導致其他行業(yè)的用水緊張,其次我們也可以看到,水耗與工業(yè)用水 的相關系數為0.9400,表明水耗與工業(yè)用水成較強的正相關,說明工業(yè)用水的耗水量比較大,對水資源的利用率還不夠高。表9 Eigenvalues of the Correlation Matrix前兩個主成分的特征值都大于1 EigenvalueDifferenceProportionCumulative16.427522134.920341700.71420.714221.507180430.
16、885709820.16750.881630.621470610.386162620.06910.950740.235307990.054874360.02610.976850.180433630.162975060.02000.996960.017458570.007908710.00190.998870.009549860.008473060.00110.999980.001076800.001076800.00011.000090.000000000.00001.0000從表9中可以看出,前8個主成分的特征值,表示每個原始變量對于各個主成分的因子載荷量的貢獻率,比如對于第一個主成分而言,
17、工業(yè)用水對于第一主成分的比重為0.7142,是所有用水量中最關鍵的。按第一主成分中的個數升序排序年份yPrin1Prin2x1x2x3x4x5x6x7x82001-3.172791.258569.212.00.3104.9119.215.77.8338.92002-3.01422-0.413127.510.80.880.1916.114.75.3370.42003-1.91158-0.085778.413.00.671.5018.414.86.1444.92004-0.659590.681777.712.80.657.3521.416.58.2483.520050.183580.334146.
18、813.41.149.5023.218.57.6410.720060.38829-0.647386.213.71.642.2524.518.56.0318.020071.47857-0.918755.813.92.735.3423.816.27.6483.920092.06717-2.158245.214.73.629.9221.815.16.8480.620084.640581.948795.214.73.231.5834.221.412.8626.3觀察表10的結果來看從第一主成分中的水資源用水和來水的排序看,2001-2009年水資源總體呈現上升趨勢,特別是2007-2008上升得很明顯
19、(載荷因子由1.47857提高到4.64058)生活用水量是明顯呈現逐年上升的勢頭(12.8-13.4-13.7-13.9-)3.4 模型的結果對于第一主成分最有影響的變量首先是x1(工業(yè)用水),x2(生活用水),x3(農業(yè)用水)x4(水耗),所以第一主成分可解釋為用水量因子。對于第二主成分最有影響力的變量是x5(全年水資源總量),x6(地下水資源總量),x7(地表水資源總量)x8(降水量),所以第二主成分可解釋為供水量因子。可以為下面的層次分析法的分層提供有力依據。我們得出影響水資源短缺的最主要風險因子是工業(yè)用水,對主成分因子載荷量的貢獻相當大,遠遠大于生活用水,農業(yè)用水以及水耗。3.5模型
20、的優(yōu)缺點分析模型優(yōu)點:模型缺點:四、水資源短缺風險綜合評價4.1問題分析4.2模型的假設模糊綜合評價決策是對受多種因素的事物作出全面的評價的一種十分有效的多因素決策方法。而我們所研究的水資源短缺風險也受許多因素的影響。設為種因素(或指標),為種評判,它們的元素個數和名稱均可根據實際問題需要由人們主觀規(guī)定。由于各種因素所處的地位不同,作用也不同,當然權重也不同,因而評判也就不同,人們對種評判并不是絕對地肯定或否定,因此綜合評判應該是上的一個模糊子集,其中反映了第種評判在綜合評價中所占的地位(即對模糊集的隸屬度,)。綜合評判依賴于各個因素的權重,它應該是上的模糊子集,且,其中表示第種因素的權重。因
21、此,一旦給定權重,相應地可得到一個綜合評價。于是,我們先建立一個從到的模糊變換,如果對每一個因素單獨作一個評判,就可以看作是到的模糊映射,即由可誘導出一個到的模糊線性變換,我們就可以把看作是由權重得到的綜合評判的數學模型。工業(yè)用水生活用水農業(yè)用水工業(yè)水污染生活水污染農業(yè)水污染人均生產總值植被覆蓋面積人口數水資源耗用!水污染狀況!水利資金投入及人口數!4.3模型的建立與求解第一步 將研究目標(A)、準則(B)、指標(X)按相關關系分成最高層、中間層和最底層,層次結構圖如圖3.1所示。北京市水資源短缺風險水利資金投入及人口數工業(yè)用水量生活用水量農業(yè)用水量準則層指標層目標層水資源耗用水污染狀況工業(yè)水
22、污染生活水污染農業(yè)水污染人均GDP植被覆蓋率人口數據此給出水資源耗用、水污染狀況、水利資金投入及人口數兩兩成對比較的判斷矩陣。借助Matlab軟件進行求取最大模特征根及相應特征向量的計算,再將所求的特征向量單位化后得到的就是因素B對目標A相對重要性的權重,記為W(見表3.2)表3.2 準則B對目標A相對重要性的權重WAB1B2B3WB11250.58B21/2130.31B31/51/310.11由(表3.2)求得比較矩陣的最大特征值為:通過Matlab編程得到在目標A中所占的權重分別為: 0.58,0.31,0.11第二步 給出最低層對中間層的各個因素的判斷矩陣并進行分析。在這個關系的基礎上
23、,給出了最低層X:x1,x2,x9對于中間層P:B1,B2,B3各個因素的判斷矩陣,并用Matlab進行了類似的計算,顯示出了對B1,B2,B3的權重。真正反映了x在B1,B2,B3中所占的比重。B1-xB1x1x2x3Wx11370.68x21/3120.22x31/71/210.10 在中所占的權重分別為:0.68,0.22,0.10B2-xB2x4x5x6Wx41360.67x51/3110.18x61/6110.15在中所占的權重分別為:0.67,0.18,0.15B3-xB3x7x8x9Wx71350.65x81/3120.23x91/51/210.12在中所占的權重分別為:0.65
24、,0.23,0.12表1 各評價因素分級指標水資源短缺風險 u1 (風險率) u2 (脆弱性) u3 (可恢復性) u4 (重現期) u5(風險度)v1 (低) 0. 200 0. 200 0. 800 9. 000 0. 200v2 (較低) 0. 2000. 400 0. 2000. 400 0. 6010. 800 6. 0019. 00 0. 2010. 60v3 (中) 0. 4010. 600 0. 4010. 600 0. 4010. 600 3. 0016. 000 0. 6011. 000v4 (較高) 0. 6010. 800 0. 6010. 800 0. 2000. 4
25、00 1. 0003. 000 1. 0012. 00v5 (高) 0. 800 0. 800 0. 200 1 2. 0004.3模型的結果4.4模型的優(yōu)缺點評價模型優(yōu)點:模型缺點:4.5相關建議五、未來兩年水資源短缺風險預測5.1問題分析城市年用水量狀態(tài)是一族依賴于時間的隨機變量,是一個隨機過程。用水量在時刻所處的狀態(tài)只與在時刻t的狀態(tài)有關,而與t時刻以前所處的狀態(tài)無關,即具有無后效性,又因城市年用水量只能產生可列個狀態(tài),而且只在可列個時刻發(fā)生轉移(即改變其狀態(tài)),故城市年用水量符合馬爾可夫鏈。設表示系統(tǒng)在時刻處于狀態(tài),則馬爾可夫鏈的狀態(tài)概率為馬爾可夫鏈以表示在時刻系統(tǒng)處于狀態(tài)的條件下,在
26、時刻系統(tǒng)處于的條件概率,也稱轉移概率,即。當時,稱上述轉移概率為一步轉移概率。一步轉移概率不僅依賴于出發(fā)狀態(tài)和下一步轉移到的狀態(tài),而且還依賴于系統(tǒng)處于狀態(tài)的時刻。如果一步轉移概率與時間起點無關,即 則稱該馬爾可夫鏈具有平穩(wěn)轉移概率,或稱是齊次的。馬爾可夫鏈的齊次性表示:無論從什么時刻開始,系統(tǒng)在未來的狀態(tài)變化過程的統(tǒng)計規(guī)律性總是一致的,或保持一種時間歷程的不變性。因為城市年用水量狀態(tài)的一步轉移概率只與時間差有關,而與時間起點無關,故可將其看成是一個齊次馬爾可夫鏈。首先,根據城市歷年用水量的統(tǒng)計數據,確定城市用水量狀態(tài)及其一步轉移概率矩陣P。其次,通過0,1均勻分布隨機數的產生和概率模型的轉變,
27、獲得給定馬爾可夫鏈的一個樣本函數,即得城市今后若干年每年用水量狀態(tài)的一個樣本序列。其中是城市年用水量狀態(tài)(是隨機變量)的樣本值。因此,要獲得馬爾可夫鏈的一個樣本序列。只要獲得每個隨機變量的樣本值。如果相互獨立且分布規(guī)律已知,則可以按隨機變量仿真的方法,分別獨立地產生各隨機變量X(i)的樣本值。但馬爾可夫鏈的各隨機變量并非相互獨立,而是具有一定的相依關系,即馬氏性。但這種相關程度比較微弱,它只要求任一時刻的狀態(tài)只依賴于前一時刻的狀態(tài)。即依賴于依賴。因此,只要給定初始狀態(tài)與一步轉移概率矩陣P,用事件序列仿真的方法確定的樣本值(即下一年的用水量狀態(tài)),再由和P確定的樣本值,如此遞推求解,直到滿足要求
28、為止。5.2模型的建立與求解5.3模型的結果5.4模型的優(yōu)缺點評價模型優(yōu)點:模型缺點:5.5相關建議六、建議報告參考文獻1 2 3 4 5 6 7 8 9附錄資料:不需要的可以自行刪除Pascal/C/C+語句對比(補充版)一、Hello world 先看三種語言的樣例:Pascalbegin writeln(Hello world);end.C#include int main() printf(Hello world!n); return 0;C+#include using namespace std;int main()cout Hello world! endl; return 0;
29、 從這三個程序可以看到一些最基本的東西。在Pascal中的begin和end,在C/C+里就是;Pascal主程序沒有返回值,而C/C+返回0(好像在C中可以為NULL)。在C/C+中,main函數以前的是頭文件,樣例中C為stdio.h,C+除了iostream還有第二行的using namespace std,這個是打開命名空間的,NOIP不會考這個,可以不管,只要知道就行了。 此外說明 注釋單行用/,段落的話Pascal為,C/C+為/* */。* 常用頭文件(模板)#include #include #include #include #include #include using n
30、amespace std;int main() system(“pause”);return 0;二、數據類型及定義 這里只列出常用的類型。1、整型PascalC/C+范圍shortint-128 127integershort-32768 32767longintInt -2147483648 2147483647int64long long-9223372036854775808 9223372036854775807byte-0 255wordunsigned short0 65535longwordunsigned int0 4294967295qwordunsigned long l
31、ong0 18446744073709551615 * 當對long long 變量賦值時,后要加LLLong long x=6327844632743269843LL* 如果位移 x2LL* Linux: printf(“%lldn”,x);* Windows: printf(“%I64dn”,x);2、實型PascalC/C+范圍realfloat2.9E-39 1.7E38single-1.5E-45 3.4E38doubledouble5.0E-324 1.7E3083、字符即字符串 字符在三種語言中都為char,C里沒有字符串,只有用字符數組來代替字符串,Pascal和C+均為str
32、ing。Pascal中字符串長度有限制,為255,C+則沒有。 字符串和字符在Pascal中均用單引號注明,在C/C+中字符用單引號,字符串用雙引號。4、布爾類型 Pascal 中為 boolean,C/C+ 為 bool。值均為True 或 False。C/C+中除0外bool都為真。5、定義 常量的定義均為 const,只是在C/C+中必須要注明常量的類型。在C/C+中還可以用宏來定義常量,此時不注明類型。PascalC/C+const a = 60; b = -a + 30; d = ;const int a = 60;const int b = - a + 30;const strin
33、g d = “”;define MAXN 501 /這個是宏 * 宏定義其實就是直接在程序相應的位置替換: #define randomize srand(unsigned time(NULL) #define wait for(int w=0;w a;cout a;cout a endl;特別說明C+中cin一個字符的話會自動跳過空格和回車,Pascal和C則會讀入空格和回車。在Pascal中writeln(a:n:m) 表示在n個字符寬的輸出域上輸出a保留m位小數。例如:pascal write(a:6) c/c+ printf(“%6d”,a) Pascal write(a:6:2) c
34、/c+ printf(“%6.2f”,a) C+ 如果用 cout ? (繁瑣!) 需要加頭文件 #inlude cout setprecision(2)a; /作用永久 cout setw(6)a; /作用臨時 以下三個進制設定都是永久作用: cout deca; 相當 printf(“%d”,a); /十進制 cout hexa; 相當 printf(“%X”,a); /十六進制 cout octa; 相當 printf(“%o”,a); /八進制例如:cout 12hex12oct1212endl;輸出:12c1414 C 的輸入輸出里面的字符串中%表示變量,%后面的字目表示變量類型。下
35、面是類型表:%hd1個short型整數%d1個int型整數%u1個unsigned int型整數%I64d1個long long型整數%c1個字符%s1個C字符串%f1個float型實數%lf1個double型實數%10.4f輸出1個總寬度為10,保留4位小數的實數 文件輸入輸出:Pascalassign(input, test.in);assign(output, test.out);reset(input);rewrite(output);read(a, b);writeln(a, b);close(input);close(output);CFILE *fin = fopen(“test
36、.in”, “r”);FILE *fout = fopen(“test.out”, “w”);fscanf(fin, “%d%d”, &a, &b);fprintf(fout, “%d%d”, a, b);fclose(fin); fclose(fout);C+#include using namespace std;ifstream fin(“test.in”);ofstream fout(“test.out”);fin a b;fout a b endl;fin.close(); fout.close();因為C+的讀入較慢,個人建議C+的話使用C的輸入方式。當然也有人用C的讀入,C+的輸
37、出的,這種方式我們稱之為城鄉(xiāng)結合。*中國計算機學會競賽須知發(fā)布的C讀寫程序:(C+ 也能用,cin,cout,scanf,printf 可混用)#include int main() int a,b; freopen(“sum.in”,”r”,stdin);freopen(“sum.out”,”w”,stdout); scanf(“%d%d”,&a,&b); printf(“%dn”,a+b); return 0; 或者:freopen(“sum.in”,”r”,stdin);freopen(“sum.out”,”w”,stdout);ios:sync_with_stdio(false); 取
38、消同步,cin,cout的速度就不慢了! cinab;couta+bendl; return 0;以下擴充c/c+混用是可行的:#include #include using namespace std;int main() int a,b,c,d; freopen(sum.in,r,stdin); freopen(sum.out,w,stdout); scanf(%d%d,&a,&b); cincd; printf(%dn,a+b); couta+b+c+dsn).Cwhile(scanf(%s%d,s,&n)!=EOF).四、賦值語句及運算符號 一一對應的關系PascalC/C+賦值運算賦
39、值:=基本運算加+減-乘*除(實數)/ (double)除法取整div(int) / (int)取余mod%比較等于=不等于!=大于大于等于=小于小于等于=邏輯且and&或or|非not!位運算左移(*2)shl且and&或or|非not異或xor其他增一inc(x)x+減一dec(x)x- 在C/C+中對某個變量自身進行運算可以簡寫為 變量名 運算符號= 改變量 如 x += 8 就表示 x = x + 8, 即 inc(x, 8)。 在 C/C+里還存在一種三目運算 變量名 = 條件 ? 值A : 值B 如 x = x 0 ? x : -x; /表示若x 0 則取 x, 否則取 x, 同
40、if x 0 then x := x else x := -x;五、條件語句1、if C/C+中if 語句的條件必須要用括號括起來,后面不使用then。PascalC/C+if a b then flag := true else flag := false;if (a b) flag = true;else flag = false;2、多種分支 C/C+中為switch,Pascal為case:PascalC/C+case x of 1: inc(x); 2: dec(x); else x := x * x;end;switch (x) case 1: x +; break; case 2
41、: x -; break; default: x *= x; 切記C/C+中一定要寫break,后果你可以去掉break,運行看看就知道了。六、循環(huán)語句1、forPascalC/C+for 變量名 := 初始值 to(downto) 終止值 dofor (變量名=初始值;條件;改變方式)for i := 5 to 10 do dec(a);/終止值大于初始值用 tofor i := 5 downto 1 do dec(a);/終止值小于于初始值用 downtofor (i = 5; i = 1; i-) a-;/*只要i 滿足條件就會一直循環(huán)。C/C+中i是實數、指針都可以*/C/C+中for
42、的特殊用法:/變量為實數for (double i = 1; i 符號為間接引用,后面會提到。for (type1 *p = head - next; p; p = p - next) printf(“%d”, p - k);2、whilePascalC/C+while 條件 dowhile (條件)while i 0 do dec(i);while (i != 0) i-;/也可寫作 while (i) i-;/在C/C+中非0即為真。3、repeat-until & do-whilePascalC/C+repeat 語句 until 結束條件;do while (運行條件)repeat i
43、nt(i) until i 100;do i+; while (i = 100);七、數組 Pascal中數組的下標可以隨意定義,而C/C+下標始終為從0開始到(數組大小1)。PascalC/C+定義a : array 1.100 of integer;b :array 1.10,1.10 of int64;int a100;int b1010;含義a 為大小為100的integer數組,合法下標為1到100b 為大小為10*10的int64數組,合法下標為1,1到10,10a 為大小為100的int數組,合法下標為0到99b 為大小為10*10的int數組,合法下標為0,0到9,9;使用in
44、c(a21);b2,2:=b1,1+b1,2+b2,1;a21+;b11=b01+b00+b10; 數組清零PascalC/C+Fillchar(a, sizeof(a), 0);memset(a, 0, sizeof(a);/頭文件包含 string.h*如果要填最大: memset(a,127,sizeof(a) (但達不到 INT_MAX) 如果要填最?。?memset(a,128,sizeof(a) (但達不到 INT_MIN) 如果填0: memset(a,0,sizeof(a) 如果填-1: memset(a,-1,sizeof(a)八、字符串 C風格的字符串就是字符數組。 C+和
45、Pascal的字符串使用基本相同,只是C+中字符串下標以0開始,Pascal以1開始。字符串處理很多這里不一一列舉,只寫最常用的幾個。PascalC (包含)定義用:char sC+(包含)定義用:string s輸入輸出Readln(s);Writeln(s);Scanf(“%s”,s);Printf(“%sn”,s);注:不能輸入輸出c+的字符串Cins;Couts = s 的區(qū)別: getline(cin,s)cins一次性整行讀入,直至行末尾。只讀入一個“單詞”,遇空格和行末停止。例如輸入;How are you?s=” How are you?”讀入整串含空格例如輸入;How are
46、 you?s=”How”如果三個都讀:cins1s2s3*C+ 數字與數值之間的轉換:#include #include #include /必須加入using namespace std;int main() string text = 152; int number; stringstream ss;ss number; /string - int coutnumber+100endl; ss string string str = ss.str(); return 0;九、過程和函數1、過程 在C/C+中沒有過程,但可以把返回值為“空”的函數理解為過程。PascalC/C+無參過程pro
47、cedure 過程名;說明部分begin 語句部分 end;/說明部分、begin、end語句部分統(tǒng)稱為過程體void 函數名(); 主體部分; return ;帶參過程procedure 過程名(形參表)過程體void 函數名(形參表)過程體 值傳和址傳:當一個參數是值傳時,形參在子過程中相當于一個局部變量,對它的改變不影響實在的參數值。址傳則會影響。下例中a為值傳,b為址傳。初始a = 5,b = 5,運行后a = 5,b = 10;PascalC/C+var a, b:integer;procedure doit(a:integer; var b:integer);begin b :=
48、a + b; a := a + b;end;begina := 5;b := 5;doit(a, b);writeln(a, , b);end.void doit(int a, int &b) HYPERLINK a a認為值參,b認為變量傳參 b += a; a += b; return ;int main()int a = 5, b = 5;doit(a, b);cout a b;return 0;* 用若干地址傳參可以給調用者傳回若干值 Void tryit(int &x,int &y,int &z) 調用時: tryit(a,b,c) ,可以傳回 a,b,c的值。* 用數組名(也是地址
49、)傳參可以傳回整組的數據 Void tryit( int a) 調用時: tryit(x),可以傳回整個數組。例如:void tryit(int a) for(int i=0;i=10;i+) ai=i*2; return; int main() int x10; tryit(x); for(int i=0;i=10;i+) coutxiendl; system(pause); return 0;*用指向函數的指針作為參數,可以執(zhí)行指定的函數。(略)STL 的兩個應用:* C+ 快排函數#include Bool com(int a,int b) Return ab;Int main() Int a10=5,7,3,2,6,8,4,3,5,7;Sort(a,a+10,com); /如果升序可以省略com.For(int i=0;i10;i+) Coutai” “;* 優(yōu)先隊列(以堆排為例)#include #include using namespace std;priority_queue Q;int main() int n,a; cinn; while (n-) cina; Q.push(a); while (!Q.empty() cout Q.top() ; Q.pop(); return 0;* 隊列、棧、優(yōu)先隊列 三種數據結構匯總:#includ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學二年級數學乘法口算測試題人教版
- 醫(yī)院網絡安全保密協(xié)議書范本
- 財產抵押借款合同范本
- 2025年度食堂窗口員工培訓及管理服務合同
- 二零二五年度國際貨運代理合同書協(xié)議書
- 二零二五年度集體魚塘承包與漁業(yè)法律法規(guī)咨詢合同范本
- 二零二五年度實習生薪資及培訓費用補充協(xié)議
- 人教版道德與法治九年級下冊5.1《走向世界大舞臺》聽課評課記錄1
- 二零二五年度茶葉加盟店營銷推廣合作協(xié)議
- 二零二五年度物業(yè)與業(yè)主之間安全隱患賠償合同
- 現代通信原理與技術(第五版)PPT全套完整教學課件
- 社區(qū)獲得性肺炎教學查房
- 病例展示(皮膚科)
- GB/T 39750-2021光伏發(fā)電系統(tǒng)直流電弧保護技術要求
- DB31T 685-2019 養(yǎng)老機構設施與服務要求
- 燕子山風電場項目安全預評價報告
- 高一英語課本必修1各單元重點短語
- 糖尿病運動指導課件
- 完整版金屬學與熱處理課件
- T∕CSTM 00640-2022 烤爐用耐高溫粉末涂料
- 心腦血管病的危害教學課件
評論
0/150
提交評論