調(diào)壓井課程設計_第1頁
調(diào)壓井課程設計_第2頁
調(diào)壓井課程設計_第3頁
調(diào)壓井課程設計_第4頁
調(diào)壓井課程設計_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

水電站課程設計計算書

PAGE

PAGE

32

水電站課程設計

計算書

目錄

一、設計課題

3

二、設計資料及要求

3

1、設計資料見《課程設計指導書、任務書》

3

2、設計要求

3

三、調(diào)壓井穩(wěn)定斷面的計算

3

1、引水道的水頭損失計算

3

(1)局部水頭損失計算

3

(2)沿程水頭損失計算

4

2、引水道的等效斷面面積計算

6

3、調(diào)壓井穩(wěn)定斷面計算

7

四、調(diào)壓井水位波動計算

8

1、最高涌波水位計算

8

1)、當丟棄負荷:30000~0kw時,采用數(shù)解法

8

2)、當丟棄負荷為45000~15000時,采用圖解法:

9

2、最低涌波水位

10

1)丟棄負荷度為30000——0KW時(數(shù)解法)

10

2)增加負荷度為3000045000KW時(兩種方法)

11

五.調(diào)節(jié)保證計算

13

1、檢驗正常工作情況下的水擊壓力

13

2、檢驗相對轉(zhuǎn)速升高是否滿足規(guī)范要求

16

六、參考文獻

16

七、附圖:

17

附圖1:丟棄負荷時調(diào)壓井水位波動圖

17

附圖2:增加負荷時調(diào)壓井水位波動圖

17

一、設計課題:水電站有壓引水系統(tǒng)水力計算。

二、設計資料及要求

1、設計資料見《課程設計指導書、任務書》;

2、設計要求:

(1)對整個引水系統(tǒng)進行水頭損失計算;

(2)進行調(diào)壓井水力計算求穩(wěn)定斷面;

(3)確定調(diào)壓井波動振幅,包括最高涌波水位和最低涌波水位;

(4)進行機組調(diào)節(jié)保證計算,檢驗正常工作狀況下水擊壓力、轉(zhuǎn)速相對值升高是否滿足規(guī)范要求。

三、調(diào)壓井穩(wěn)定斷面的計算

1、引水道的水頭損失計算

(1)局部水頭損失計算表

局部水頭損失采用如下公式計算:

表1局部水頭損失計算表

欄號

引水建筑物部位及運行工況

斷面面積

()

局部水頭損失系數(shù)

局部水頭損失

(m)

合計

(m)

1

攔污柵

61.28

0.12

1.63

0.307

2

進口喇叭段

29.76

0.10

5.76

3

閘門井

24.00

0.20

17.72

4

漸變段

23.88

0.05

4.47

5

進口平面轉(zhuǎn)彎

23.76

0.07

6.33

0.203

6

末端錐管段

19.63

0.10

13.24

7

調(diào)

正常運行

19.63

0.10

13.24

2.204

8

增一臺負荷,從調(diào)壓井流入管道

19.63

1.50

198.61

9

壓力引水管道

上水平段平面轉(zhuǎn)彎

19.63

0.04

5.30

4.467

10

下水平段平面轉(zhuǎn)彎

9.08

0.08

49.51

11

斜井頂部立面轉(zhuǎn)彎

19.63

0.09

11.92

12

斜井底部立面轉(zhuǎn)彎

9.08

0.09

55.69

13

錐管

9.08

0.08

49.51

14

三臺機滿發(fā)1叉管

19.63

0.30

39.72

15

三臺機滿發(fā)2叉管

19.63

0.45

59.58

16

一臺機滿發(fā)1叉管

19.63

0.27

35.75

17

一臺機滿發(fā)2叉管

19.63

0.27

35.75

18

蝴蝶閥

9.08

0.14

86.64

本表計算中Q=102m3/s,g=9.8m/s2

(2)沿程水頭損失h程計算表

沿程水頭損失采用如下公式計算:

表2沿程水頭損失計算表

欄號

引水道部位

過水斷面面積W()

(m)

水力半徑

R(m)

引水道長

(m)

h程

(m)

合計

(m)

1

喇叭口進水段

29.76

21.98

1.3540

6.0

4522.659

0.007

2

閘門井段

24.00

20.00

1.2000

5.6

7624.134

0.013

3

漸變段

23.88

18.64

1.2811

10.0

12603.390

0.022

4

D=5.5M段

23.76

17.28

1.3756

469.6

543724.6

0.815

5

錐形洞段

21.65

16.49

1.3125

5.0

7423.154

0.011

6

調(diào)壓井

前管段

19.63

15.71

1.2500

10.98

21161.59

0.037

7

1號叉管

19.63

15.71

1.2500

35.74

68881.18

0.109

8

1-2號叉管

19.63

15.71

1.2500

29.21

56296.01

0.040

9

2號叉管

19.63

15.71

1.2500

12.23

23570.7

0.004

10

錐管段

13.85

13.19

1.0500

3.97

19392.71

0.003

11

D=3.4段

9.08

10.68

0.8500

21.25

320107.1

0.056

其中欄1、2、3、4、5、6、7的流量Q為102m3/s,根據(jù)壓力管道相關參數(shù)表得7欄的流量為96.9,;8欄的流量為64.6,;9、10、11欄流量為32.3

查規(guī)范和資料得到糙率n,進水口取0.013,隧洞取最小值0.012,壓力管道取最大值0.013

調(diào)壓井前引水道的水頭損失

壓力管道的水頭損失(壓力管道長度為113.3m,較長不計局部水頭損失)

整個引水系統(tǒng)的水頭損失

2、引水道的等效斷面面積計算

其中L為調(diào)壓井前引水道的長度

L=攔污柵長度+喇叭口進口段長度+閘門井段長度+漸變段長度+(D=5.5M洞段長度)+錐形洞段長度+調(diào)壓井前管段長度

=4.1+6.0+5.6+10.0+469.6+5.0+10.98

=511.28m

欄號

引水道部位

過水斷面fi(m2)

Li(m)

(1)

攔污柵

61.28

4.1

0.067

(2)

喇叭口進水段

29.76

6.0

0.202

(3)

閘門井段

24.00

5.6

0.233

(4)

漸變段

23.88

10.0

0.419

(5)

D=5.5m

23.76

469.6

19.764

(6)

錐形洞段

21.65

5.0

0.231

(7)

調(diào)壓井前管段

19.63

10.98

0.559

計算表

引水道的等效斷面面積:

m2

3、調(diào)壓井穩(wěn)定斷面計算

為使求得的穩(wěn)定斷面滿足各種運行工況的要求,上游取死水位,下游取正常尾水位情況計算

凈水頭H0=上游死水位—下游正常尾水位=1082.0-1028.5=53.5m

:引水道水頭損失,大小為1.415

hwT0:壓力管道沿程水頭損失,大小為0.212m

=53.5-1.415-3×0.212=51.449m

當三臺機組滿出力時,保證波動穩(wěn)定所需的最小斷面:=k

其中K的取值為1.0~1.1,為引水道總阻力系數(shù)

D=5.5m

==

取k=1.0則保證穩(wěn)定所需要的最小斷面為:

四、調(diào)壓井水位波動計算

1、最高涌波水位計算

(1)當丟棄負荷:30000~0kw時,采用數(shù)解法

當上游為校核洪水位1097.35m,下游為相應的尾水位1041.32m,電站丟棄兩臺機時,若丟荷幅度為30000——0KW,則流量為63.6——0m3/s,用數(shù)解法計算。

L為引水道的長度為511.28m

f引水道等效斷面面積

v0引水道水流流速v0==m/s

F調(diào)壓井穩(wěn)定斷面為156.46m2

引水道水頭損失(=)

g取9.8m/s2

(1.63+5.76+17.72+4.47+6.33+13.24)×10-6×63.6×63.6=0.20m

=(4522.659+7624.134+12603.390+543724.6+7423.154+21161.59)×0.012×0.012×63.6×63.6×10-6=0.348m

==0.20+0.348=0.548m

查書本P150圖10-4得,

則=0.10╳51.6+1097.35=1112.51m

(2)當丟棄負荷為45000~15000kw時,采用圖解法:

當上游為校核洪水位1097.35m,下游為相應的尾水位1041.32m,電站丟棄兩臺機組時,若丟荷幅度為45000——15000KW,則流量為96.5——31.0m3/s。利用圖解法求解

1、以橫軸表示引水道流速v,以圓點向左為正(水流向調(diào)壓室),向右為負;以縱軸表示水位z,以向上為正,向下為負,橫軸相當于靜水

2、作輔助線曲線

①引水道水頭損失曲線:,

C===87.882

=0.232

②繪制曲線α

計算時段取值范圍為,的取值范圍為3.9—4.6選取=4s

=,當丟棄負荷為45000kw~15000kw時,流量96.5~31.0,

流速4.05~1.30m/s。

==0.20

=0.152×4-0.20×4=0.608-0.8

③繪制曲線

=0.077()

采用matlab編程計算后畫圖,源代碼如下:

v(1)=4.05-0.077*(0.608*4.05-0.8)

z(1)=-0.232*4.05*4.05+0.608*4.05-0.8

fori=1:29

dz(i)=0.608*v(i)-0.8

dv(i)=0.077*((-1)*z(i)-0.232*v(i)*v(i))

v(i+1)=v(i)+dv(i)

z(i+1)=z(i)+dz(i)

end

r(1,:)=z

r(2,:)=v

r=r'

其中,v(i)為流速矩陣,z(i)為水位壅高矩陣,dz(i)為水位壅高增量矩陣,dv(i)為流速矩陣增量矩陣,v(1)為第一時段末的水的流速,z(1)為第一時段末調(diào)壓井內(nèi)水位的壅高,第二個以后時段的水位及流速如下表所示。

V(m/s)

Z(m)

△V

△Z

3.8850

-2.1430

-0.1046

1.5621

3.7804

-0.5809

-0.2106

1.4985

3.5698

0.9176

-0.2983

1.3704

3.2715

2.2880

-0.3674

1.1891

2.9041

3.4771

-0.4184

0.9657

2.4857

4.4428

-0.4525

0.7113

2.0333

5.1541

-0.4707

0.4362

1.5625

5.5903

-0.4741

0.1500

1.0885

5.7404

由表可知,最大壅高水位在5.59m~5.74m之間,線性內(nèi)插得最大壅高水位為5.67(圖紙見附圖1)。

Zmax=1097.35+5.67=1103.02m

2、最低涌波水位:

(1)丟棄負荷度為30000——0KW時(數(shù)解法)

當上游為死水位,下游為正常尾水位時,若電站丟棄全負荷時(30000~0,流量變化為67.5—0),因調(diào)壓室水位達到最高水位時,水位開始下降,此時隧洞中的水流朝著水庫方向流動,水從調(diào)壓室流向進水口,因此水頭損失應變?yōu)樨撝?,水位到達最低值稱為第二振幅。

,=2.835m/s

(1.63+5.76+17.72+4.47+6.33+13.24)×10-6×67.5×67.5=0.220m

=(4522.659+7624.134+12603.390+543724.6+7423.154+21161.59)×0.012×0.012×67.5×67.5×10-6=0.391m

==0.220+0.391=0.611m

=0.012

查書本P150圖10-4得=0.08,則=0.08×(-52.21)=-4.177m

Zmin=1082-4.177=1077.823m

(2)增加負荷度為3000045000KW時(兩種方法)

當上游為死水位,下游為正常尾水位,增荷幅度為30000~45000KW,流量變化由68.5~102.5,流速2.88~4.3m/s。

數(shù)解法

m=68.5/102.5=0.668

(1.63+5.76+17.72+4.47+6.33+13.24)×10-6×102.5×102.5=0.516m

=(4522.659+7624.134+12603.390+543724.6+7423.154+21161.59)×0.012×0.012×102.5×102.5×10-6=0.902m

==0.516+0.902=1.418m

=)

=3.435

調(diào)壓井的最低水位為1082-4.871=1077.129m

圖解法

增加負荷時的圖解法與丟棄負荷的圖解法類似,同樣選擇坐標系,繪出

①、引水道水頭損失曲線:,

C===87.882

=0.232

②、繪出曲線;

則計算時段取值范圍為取,的取值范圍為3.9—4.6選取=4s

又=,當增加負荷為30000~45000kw時,流量68.5~102.5m3/s。

==0.655

=0.152×4-0.655×4=0.608-2.62

③、繪制曲線

=0.077()

Matlab編寫程序:

v(1)=2.88

z(1)=-0.232*2.88*2.88

fori=1:29

dz(i)=0.608*v(i)-2.62

dv(i)=0.077*((-1)*z(i)-0.232*v(i)*v(i))

v(i+1)=v(i)+dv(i)

z(i+1)=z(i)+dz(i)

end

v=v'

z=z'

r(:,1)=v

r(:,2)=z

計算結(jié)果如下表

V(m/s)

Z(m)

△V

△Z

2.946

-2.793

0.0599

-0.8283

3.0069

-3.6215

0.1173

0.7918

3.1242

-4.4134

0.1655

-0.7205

3.2897

-5.1339

0.2020

-0.6199

3.4917

-5.7537

0.2252

-0.4971

3.7169

-6.2508

0.2345

-0.3601

3.9514

-6.6109

0.2301

-0.2175

4.1815

-6.8285

0.2134

-0.0776

4.3950

-6.9061

最大下降水位在-6.83m~-6.90m之間,采用線性內(nèi)插法,得到最大下降水位為6.87m。Zmax=1082-6.87=1075.13m。

五.調(diào)節(jié)保證計算

1、檢驗正常工作情況下的水擊壓力

相應的正常工作情況下的正常蓄水位為1092.0米,相應的尾水位為1028.5米,則:,

由所給資料可知:正常工作情況下的正常蓄水位為1092.0米,相應的尾水位為1028.5米,三臺機滿發(fā)電,通過水輪機的流量為96.9,于是:

起始的流速96.9/23.808=4.07m,

水錘波速:

上式中為水的體積彈性模量,一般為2.1×;為水的容重,取9.81KN/m3,r為管道的半徑,,壓力管道半徑為2.5m.蝸殼半徑為1.22m.尾水管半徑為1.7m,K為管道抗力系數(shù)。1.4×

壓力管道=102.32米,蝸殼=20.4米,尾水管=16.2米;

,,

V1=;V2=;V3=;V5=

=977.073m/s

Vm=

管道特性系數(shù)為

當機組滿負荷運行時,,,因為閥門從全開到全關的時間為7s,其中有效關閉時間為,一個相長<4.68s,為間接水錘。管道的特性系數(shù):

由以上計算并查圖9-4水錘類型判別圖可知:該水錘為極限正水錘,由式9-15可得:

校核尾水管進口處的真空度

尾水管進水口處的水錘壓力:

;

尾水管在進口斷面出現(xiàn)時的流速水頭如下:

尾水管進口處的真空度在8~9米之內(nèi),滿足要求。

2、檢驗相對轉(zhuǎn)速升高是否滿足規(guī)范要求

該水電站的保證出力為1.07×104kw,水輪機型為HL211-LJ-225,對于混流式水輪機,,,f為水錘影響系數(shù),根據(jù)管道特性曲線系數(shù)由圖9-15得出f=1.12

根據(jù)書102頁轉(zhuǎn)速變化率計算標準:當機組容量占電力系統(tǒng)總?cè)萘康谋戎剌^大,且擔負調(diào)頻任務時,βmax宜小于45%;

當機組容量占電力系統(tǒng)總?cè)萘康谋戎夭淮蠡驌摶蓵r,βmax宜小于55%;對斗葉式水輪機,βmax宜小于30%,所以,滿足要求。

六、參考文獻

《水電站建筑物》第二版馬善定,汪如澤

《水工設計手冊(水電站建筑物)》華東水利學院

《水電站建筑物》課程設計任務指導書青海大學水利電力學院

《水電站調(diào)壓室設計規(guī)范》DL/T5058-1996

《工程制圖及CAD》

七、附圖:

附圖1:丟棄負荷時調(diào)壓井水位波動圖

附圖2:增加負荷時調(diào)壓井水位波動圖

附錄資料:不需要的可以自行刪除

Pascal/C/C++語句對比(補充版)

一、Helloworld

先看三種語言的樣例:

Pascal

begin

writeln(‘Helloworld’);

end.

C

#include<stdio.h>

intmain()

{

printf("Helloworld!\n");

return0;

}

C++

#include<iostream>

usingnamespacestd;

intmain()

{

cout<<"Helloworld!"<<endl;

return0;

}

從這三個程序可以看到一些最基本的東西。在Pascal中的begin和end,在C/C++里就是{};Pascal主程序沒有返回值,而C/C++返回0(好像在C中可以為NULL)。在C/C++中,main函數(shù)以前的是頭文件,樣例中C為stdio.h,C++除了iostream還有第二行的usingnamespacestd,這個是打開命名空間的,NOIP不會考這個,可以不管,只要知道就行了。

此外說明注釋單行用//,段落的話Pascal為{},C/C++為/**/。

**常用頭文件(模板)

#include<iostream>

#include<cstdio>

#include<cstdlib>

#include<cmath>

#include<ctime>

#include<string>

usingnamespacestd;

intmain()

{

……

system(“pause”);

return0;

}

二、數(shù)據(jù)類型及定義

這里只列出常用的類型。

1、整型

Pascal

C/C++

范圍

shortint

-

-128…127

integer

short

-32768…32767

longint

Int

-2147483648…2147483647

int64

longlong

-9223372036854775808…9223372036854775807

byte

-

0…255

word

unsignedshort

0…65535

longword

unsignedint

0…4294967295

qword

unsignedlonglong

0…18446744073709551615

**當對longlong變量賦值時,后要加LL

Longlongx=6327844632743269843LL

**如果位移x<<2LL

**Linux:printf(“%lld\n”,x);

**Windows:printf(“%I64d\n”,x);

2、實型

Pascal

C/C++

范圍

real

float

2.9E-39…1.7E38

single

-

1.5E-45…3.4E38

double

double

5.0E-324…1.7E308

3、字符即字符串

字符在三種語言中都為char,C里沒有字符串,只有用字符數(shù)組來代替字符串,Pascal和C++均為string。Pascal中字符串長度有限制,為255,C++則沒有。

字符串和字符在Pascal中均用單引號注明,在C/C++中字符用單引號,字符串用雙引號。

4、布爾類型

Pascal中為boolean,C/C++為bool。值均為True或False。C/C++中除0外bool都為真。

5、定義

常量的定義均為const,只是在C/C++中必須要注明常量的類型。在C/C++中還可以用宏來定義常量,此時不注明類型。

Pascal

C/C++

const

a=60;

b=-a+30;

d=‘‘;

constinta=60;

constintb=-a+30;

conststringd=“”;

defineMAXN501//這個是宏

**宏定義其實就是直接在程序相應的位置替換:

#definerandomizesrand(unsignedtime(NULL))

#definewaitfor(intw=0;w<100000;w++)

變量的定義,C/C++在定義的同時可以賦值:

Pascal

C/C++

var

a,b:integer;

c:char;

d:string;

inta,b=50;

charc=‘A’;

stringd;

boolflag;

三、輸入輸出

C/C++中沒有以回車作為結(jié)束的讀入方式(就本人所知)?!盶n”表示換行。常規(guī)輸入輸出:

Pascal

C

C++

read(a);//讀入變量a

readln(a);//讀入變a,回車結(jié)束

write(a);//輸出a

writeln(a);//輸出a并換行

scanf(“%d”,&a);

printf(“%d”,a);

printf(“%d\n”,a);

cin>>a;

cout<<a;

cout<<a<<endl;

特別說明C++中cin一個字符的話會自動跳過空格和回車,Pascal和C則會讀入空格和回車。在Pascal中writeln(a:n:m)表示在n個字符寬的輸出域上輸出a保留m位小數(shù)。

例如:pascalwrite(a:6)c/c++printf(“%6d”,a)

Pascalwrite(a:6:2)c/c++printf(“%6.2f”,a)

C++如果用cout?(繁瑣??!)

需要加頭文件#inlude<iomanip>

cout<<setprecision(2)<<a;//作用永久

cout<<setw(6)<<a;//作用臨時

以下三個進制設定都是永久作用:

cout<<dec<<a;相當printf(“%d”,a);//十進制

cout<<hex<<a;相當printf(“%X”,a);//十六進制

cout<<oct<<a;相當printf(“%o”,a);//八進制

例如:cout<<12<<hex<<12<<oct<<12<<12<<endl;

輸出:12c1414

C的輸入輸出里面的字符串中%表示變量,%后面的字目表示變量類型。下面是類型表:

%hd

1個short型整數(shù)

%d

1個int型整數(shù)

%u

1個unsignedint型整數(shù)

%I64d

1個longlong型整數(shù)

%c

1個字符

%s

1個C字符串

%f

1個float型實數(shù)

%lf

1個double型實數(shù)

%10.4f

輸出1個總寬度為10,保留4位小數(shù)的實數(shù)

文件輸入輸出:

Pascal

assign(input,‘test.in’);

assign(output,‘test.out’);

reset(input);

rewrite(output);

read(a,b);

writeln(a,b);

close(input);

close(output);

C

FILE*fin=fopen(“test.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<fstream>

usingnamespacestd;

ifstreamfin(“test.in”);

ofstreamfout(“test.out”);

fin>>a>>b;

fout<<a<<b<<endl;

fin.close();

fout.close();

因為C++的讀入較慢,個人建議C++的話使用C的輸入方式。當然也有人用C的讀入,C++的輸出的,這種方式我們稱之為城鄉(xiāng)結(jié)合。

**中國計算機學會競賽須知發(fā)布的C讀寫程序:

(C++也能用,cin,cout,scanf,printf可混用)

#include<stdio.h>

intmain()

{

inta,b;

freopen(“sum.in”,”r”,stdin);

freopen(“sum.out”,”w”,stdout);

scanf(“%d%d”,&a,&b);

printf(“%d\n”,a+b);

return0;

}

或者:

freopen(“sum.in”,”r”,stdin);

freopen(“sum.out”,”w”,stdout);

ios::sync_with_stdio(false);\\取消同步,cin,cout的速度就不慢了??!

cin>>a>>b;

cout<<a+b<<endl;

return0;

以下擴充c/c++混用是可行的:

#include<iostream>

#include<cstdio>

usingnamespacestd;

intmain()

{

inta,b,c,d;

freopen("sum.in","r",stdin);

freopen("sum.out","w",stdout);

scanf("%d%d",&a,&b);

cin>>c>>d;

printf("%d\n",a+b);

cout<<a+b+c+d<<endl;

return0;

}

**如何判斷文件結(jié)束(EOF)?

C++

while(cin>>s>>n)

{

...

}

C

while(scanf(%s%d",s,&n)!=EOF)

{

...

}

四、賦值語句及運算符號

一一對應的關系

Pascal

C/C++

賦值運算

賦值

:=

=

基本運算

+

+

-

-

*

*

除(實數(shù))

/

/(double)

除法

取整

div

(int)/(int)

取余

mod

%

比較

等于

=

==

不等于

<>

!=

大于

>

>

大于等于

>=

>=

小于

<

<

小于等于

<=

<=

邏輯

and

&&

or

||

not

!

位運算

左移(*2)

shl

<<

右移(/2)

shr

>>

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,

同ifx>0thenx:=xelsex:=-x;

五、條件語句

1、if

C/C++中if語句的條件必須要用括號括起來,后面不使用then。

Pascal

C/C++

ifa>bthenflag:=true

elseflag:=false;

if(a>b)flag=true;

elseflag=false;

2、多種分支

C/C++中為switch,Pascal為case:

Pascal

C/C++

casexof

1:inc(x);

2:dec(x);

elsex:=x*x;

end;

switch(x)

{

case1:x++;break;

case2:x--;break;

default:x*=x;

}

切記C/C++中一定要寫break,后果你可以去掉break,運行看看就知道了。

六、循環(huán)語句

1、for

Pascal

C/C++

for變量名:=初始值to(downto)終止值do

for(變量名=初始值;條件;改變方式)

fori:=5to10dodec(a);

//終止值大于初始值用to

fori:=5downto1dodec(a);

//終止值小于于初始值用downto

for(i=5;i<=10;i++)a--;

for(i=5;i>=1;i--)a--;

/*只要i滿足條件就會一直循環(huán)。

C/C++中i是實數(shù)、指針都可以*/

C/C++中for的特殊用法:

//變量為實數(shù)

for(doublei=1;i<=2;i*=1.01)

k++;

//變量為指針,->符號為間接引用,后面會提到。

for(type1*p=head->next;p;p=p->next)

printf(“%d”,p->k);

2、while

Pascal

C/C++

while條件do

while(條件)

whilei<>0dodec(i);

while(i!=0)i--;

//也可寫作while(i)i--;

//在C/C++中非0即為真。

3、repeat-until&do-while

Pascal

C/C++

repeat語句until結(jié)束條件;

do{}while(運行條件)

repeatint(i)untili>100;

do{i++;}while(i<=100);

七、數(shù)組

Pascal中數(shù)組的下標可以隨意定義,而C/C++下標始終為從0開始到(數(shù)組大小–1)。

Pascal

C/C++

定義

a:array[1..100]ofinteger;

b:array[1..10,1..10]ofint64;

inta[100];

intb[10][10];

含義

a為大小為100的integer數(shù)組,合法下標為1到100

b為大小為10*10的int64數(shù)組,合法下標為1,1到10,10

a為大小為100的int數(shù)組,合法下標為0到99

b為大小為10*10的int數(shù)組,合法下標為0,0到9,9;

使用

inc(a[21]);

b[2,2]:=b[1,1]+b[1,2]+b[2,1];

a[21]++;

b[1][1]=b[0][1]+b[0][0]+b[1][0];

數(shù)組清零

Pascal

C/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風格的字符串就是字符數(shù)組。

C++和Pascal的字符串使用基本相同,只是C++中字符串下標以0開始,Pascal以1開始。字符串處理很多這里不一一列舉,只寫最常用的幾個。

Pascal

C(包含<string.h>)

定義用:chars[]

C++(包含<string>)

定義用:strings

輸入

Readln(s);

Writeln(s);

Scanf(“%s”,s);

Printf(“%s\n”,s);

注:不能輸入輸出c++的字符串

Cin>>s;

Cout<<s<<endl;

注:可以輸入輸出c的字符串

查找

pos(‘a(chǎn)’,s);//不存在返回0

沒有

s.find(‘a(chǎn)’);//不存在返回-1

len=length(s);

Strlen(s)

len=s.size();或

Len=s.length();

復制

copy(st,pos,num);

st:=‘a(chǎn)bcde’;

s:=copy(st,3,2);

//s=‘cd’

Strcpy(s1,s2)

全部復制

Strncpy(s1,s2,n)

前n個復制

但沒有從第幾個開始的!

substr(pos,n)//返回從pos開始的長度為n的子串;

strings1=“abcde”,s2;

s2=s1.substr(2,2);

//s2=“cd”

插入

insert(obj,target,pos);

st:=‘helloworld’;

st:=insert(‘‘,st,6);

//st=‘helloworld’

沒有

insert(pos,s)//在pos位置處插入字符串s;

strings1=“0123”;

s1.insert(1,“XYZ”);//s1=“0XYZ123”

刪除

delete(st,pos,num);

st:=‘helloworld’;

st:=delete(st,6,1);

//st=‘helloworld’

沒有

erase(pos,n)//從pos位置開始刪除n個字符;

strings1="abcdefghi";

s1.erase(5,3);//得到"abcdei"

C++還有以下功能:

用s.replace(2,2,"ttt")可以部分替換

用s.empty()判斷是否為空

可訪問s[i],位置從0算起

可以s1+s2

可以s1=s2

可以比較s1==s2當然><=>=<=!=都可以比較。

C++字符串整串讀入:

getline(cin,s)和cin>>s的區(qū)別:

getline(cin,s)

cin>>s

一次性整行讀入,直至行末尾。

只讀入一個“單詞”,遇空格和行末停止。

例如輸入;Howareyou?

s=”Howareyou?”

讀入整串含空格

例如輸入;Howareyou?

s=”How”

如果三個都讀:cin>>s1>>s2>>s3

**C++數(shù)字與數(shù)值之間的轉(zhuǎn)換:

#include<iostream>

#include<string>

#include<sstream>//必須加入

usingnamespacestd;

intmain()

{

stringtext="152";

intnumber;

stringstreamss;

ss<<text;//可以是其他數(shù)據(jù)類型

ss>>number;//string->int

cout<<number+100<<endl;

ss<<number;//int->string

stringstr=ss.str();

return0;

}

九、過程和函數(shù)

1、過程

在C/C++中沒有過程,但可以把返回值為“空”的函數(shù)理解為過程。

Pascal

C/C++

無參過程

procedure過程名;

說明部分

begin語句部分end;

//說明部分、begin、end語句部分統(tǒng)稱為過程體

void函數(shù)名();

{

主體部分;

return;

}

帶參過程

procedure過程名(形參表)

過程體

void函數(shù)名(形參表)

過程體

值傳和址傳:當一個參數(shù)是值傳時,形參在子過程中相當于一個局部變量,對它的改變不影響實在的參數(shù)值。址傳則會影響。下例中a為值傳,b為址傳。初始a=5,b=5,運行后a=5,b=10;

Pascal

C/C++

vara,b:integer;

proceduredoit(a:integer;varb:integer);

begin

b:=a+b;

a:=a+b;

end;

begin

a:=5;

b:=5;

doit(a,b);

writeln(a,‘‘,b);

end.

voiddoit(inta,int&b)

{

\\a

認為值參,b認為變量傳參

b+=a;

a+=b;

return;

}

intmain()

{

inta=5,b=5;

doit(a,b);

cout<<a<<‘‘<<b;

return0;

}

**用若干地址傳參可以給調(diào)用者傳回若干值

Voidtryit(int&x,int&y,int&z)

調(diào)用時:tryit(a,b,c),可以傳回a,b,c的值。

**用數(shù)組名(也是地址)傳參可以傳回整組的數(shù)據(jù)

Voidtryit(inta[])

調(diào)用時:tryit(x),可以傳回整個數(shù)組。

例如:

voidtryit(inta[])

{

for(inti=0;i<=10;i++)a[i]=i*2;

return;

}

intmain()

{

intx[10];

tryit(x);

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

cout<<x[i]<<endl;

system("pause");

return0;

}

**用指向函數(shù)的指針作為參數(shù),可以執(zhí)行指定的函數(shù)。(略)

STL的兩個應用:

**C++快排函數(shù)

#include<algorithm>

Boolcom(inta,intb)

{

Returna>b;

}

Intmain()

{

Inta[10]={5,7,3,2,6,8,4,3,5,7};

Sort(a,a+10,com);//如果升序可以省略com.

For(inti=0;i<10;i++)

Cout<<a[i]<<”“;

}

**優(yōu)先隊列(以堆排為例)

#include<iostream>

#include<queue>

usingnamespacestd;

priority_queue<int>Q;

intmain()

{

intn,a;

cin>>n;

while(n--)

{

cin>>a;

Q.push(a);

}

while(!Q.empty())

{

cout<<Q.top()<<"";

Q.pop();

}

return0;

}

**隊列、棧、優(yōu)先隊列三種數(shù)據(jù)結(jié)構(gòu)匯總:

#include<queue>

#include<stack>

priority_queue<int>Q;

queue<int>Q1;

stack<int>S;

intmain()

{

Q.push(5);x=Q.top();Q.pop();Q.empty();Q.size()

Q1.push(5);Q1.size();Q1.front();Q1.empty();Q1.pop();

S.push(5);S.size();S.top();S.emtpy();S.pop();

}

2、函數(shù)

.

Pascal

C/C++

funtion函數(shù)名(形參表):返回值類型;

函數(shù)體

返回值類型函數(shù)名(形參表)

{主體;return返回值;}

注意在Pascal中:

在函數(shù)體的語句部分中,必須有對應的函數(shù)標識符賦值的語句,并且這些語句在函數(shù)被引用時至

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論