![基于Matlab的圓柱齒輪減速器的可靠性優(yōu)化設(shè)計(jì)_第1頁](http://file4.renrendoc.com/view/61f8053f0002a98aec3b4560821c7f84/61f8053f0002a98aec3b4560821c7f841.gif)
![基于Matlab的圓柱齒輪減速器的可靠性優(yōu)化設(shè)計(jì)_第2頁](http://file4.renrendoc.com/view/61f8053f0002a98aec3b4560821c7f84/61f8053f0002a98aec3b4560821c7f842.gif)
![基于Matlab的圓柱齒輪減速器的可靠性優(yōu)化設(shè)計(jì)_第3頁](http://file4.renrendoc.com/view/61f8053f0002a98aec3b4560821c7f84/61f8053f0002a98aec3b4560821c7f843.gif)
![基于Matlab的圓柱齒輪減速器的可靠性優(yōu)化設(shè)計(jì)_第4頁](http://file4.renrendoc.com/view/61f8053f0002a98aec3b4560821c7f84/61f8053f0002a98aec3b4560821c7f844.gif)
![基于Matlab的圓柱齒輪減速器的可靠性優(yōu)化設(shè)計(jì)_第5頁](http://file4.renrendoc.com/view/61f8053f0002a98aec3b4560821c7f84/61f8053f0002a98aec3b4560821c7f845.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、20/20基于Matlab的二級圓柱齒輪減速器的可靠性優(yōu)化設(shè)計(jì)一概述:機(jī)械優(yōu)化設(shè)計(jì)和機(jī)械可靠性設(shè)計(jì),都是在常規(guī)機(jī)械設(shè)計(jì)的基礎(chǔ)上發(fā)展和延伸的新的設(shè)計(jì)方法。在實(shí)際應(yīng)用這兩種方法已產(chǎn)生了較好的技術(shù)經(jīng)濟(jì)效果。但是傳統(tǒng)機(jī)械優(yōu)化方法忽律了各個(gè)設(shè)計(jì)參數(shù)的離散性,沒有考慮零件在加工裝配中的尺寸誤差,材料力學(xué)性質(zhì)和載荷的離散性等影響,得到的設(shè)計(jì)參數(shù)未必可行。機(jī)械可靠性設(shè)計(jì)對于某些機(jī)械設(shè)計(jì)問題,由于未采用優(yōu)化方法,也同樣無法得到滿意的設(shè)計(jì)結(jié)果。為了彌補(bǔ)二者的不足,將優(yōu)化技術(shù)和可靠性設(shè)計(jì)理論相結(jié)合,就形成了可靠性優(yōu)化設(shè)計(jì)。機(jī)械可靠性優(yōu)化設(shè)計(jì)是建立在近代數(shù)學(xué)概率與最優(yōu)化方法的基礎(chǔ)上,其應(yīng)用涉及機(jī)構(gòu)設(shè)計(jì),強(qiáng)度與壽命設(shè)計(jì)
2、,選材和失效分析等多方面的設(shè)計(jì)變量和參數(shù),并規(guī)定了明確的技術(shù)經(jīng)濟(jì)性和可靠性指標(biāo),所建立的概率優(yōu)化模型的目標(biāo)函數(shù)具有高維,非凸和非線性的特點(diǎn),并且需要滿足多種隨機(jī)約束條件,按照這種方法設(shè)計(jì)的機(jī)械產(chǎn)品,既能保證產(chǎn)品在工作中的可靠性,又可以使產(chǎn)品的功能,安全性,重量,體積以及成本等參數(shù)獲得優(yōu)化解,顯示出比較明顯的技術(shù)經(jīng)濟(jì)效益。因此,可靠性優(yōu)化設(shè)計(jì)是一種更具工程實(shí)用價(jià)值,先進(jìn)的綜合設(shè)計(jì)方法。當(dāng)然,從機(jī)械設(shè)計(jì)學(xué)的角度看,可靠性設(shè)計(jì),優(yōu)化設(shè)計(jì)和可靠性優(yōu)化設(shè)計(jì)都是一種現(xiàn)代設(shè)計(jì)方法,與傳統(tǒng)常規(guī)設(shè)計(jì)方法有天然內(nèi)在聯(lián)系,每種方法都不是萬能的,各有特點(diǎn),也各有局限性。由于機(jī)械設(shè)計(jì)問題的復(fù)雜性,自然要具體問題具體分析
3、,根據(jù)不同的設(shè)計(jì)對象選用相應(yīng)的設(shè)計(jì)方法或者將有關(guān)的設(shè)計(jì)方法結(jié)合起來,以尋求高質(zhì)量,高效率的設(shè)計(jì)方法。二機(jī)械可靠性優(yōu)化設(shè)計(jì)內(nèi)容1系統(tǒng)可靠性的最優(yōu)分配:以系統(tǒng)的目標(biāo)可靠度及其它條件為約束,最優(yōu)分配系統(tǒng)的可靠度給子系統(tǒng)和零部件,使系統(tǒng)的某些指標(biāo),如成本,總費(fèi)用等達(dá)到最優(yōu)方案。2以可靠度最大為目標(biāo)的可靠性優(yōu)化設(shè)計(jì):要求在保證產(chǎn)品某些功能指標(biāo)和經(jīng)濟(jì)指標(biāo)的條件下,求得產(chǎn)品具有最大可靠度的設(shè)計(jì)方案。3以可靠度為約束條件的可靠度優(yōu)化設(shè)計(jì):要求在保證可靠性指標(biāo)的條件下,采用最優(yōu)化方法求得成本最低或結(jié)構(gòu)尺寸,質(zhì)量最小的設(shè)計(jì)方案。 在2,3中將機(jī)械零件的應(yīng)力和強(qiáng)度也作為設(shè)計(jì)變量,則可稱為機(jī)械強(qiáng)度可靠性優(yōu)化設(shè)計(jì)。三系
4、統(tǒng)可靠性的最優(yōu)分配可靠性分配必須將工程設(shè)計(jì)中規(guī)定的系統(tǒng)可靠性指標(biāo)合理地分配給組成系統(tǒng)的各個(gè)單元,確定系統(tǒng)各組成單元的可靠性定量要求,以期保證整個(gè)系統(tǒng)的可靠性指標(biāo)。系統(tǒng)可靠性的分配模型很多,但都必須滿足其中是第i個(gè)子系統(tǒng)或零部件分配的可靠性指標(biāo)(i=1,2,n);是系統(tǒng)總的可靠性指標(biāo)。在進(jìn)行可靠度最優(yōu)分配中,最常采用的是動(dòng)態(tài)規(guī)劃法。它是一種將多變量的決策問題分解為只含有單變量的一系列子問題,通過求解這一系列子問題從而求到此多變量的最優(yōu)解的方法;利用遞推關(guān)系做出最優(yōu)決策,構(gòu)成一種最優(yōu)策略,從而使整個(gè)過程取得最優(yōu)。動(dòng)態(tài)規(guī)劃法的目標(biāo)函數(shù)一般形式為其中:n為階段變量,S為狀態(tài)變量,為決策變量。第一個(gè)決策
5、可以直接影響第一步的結(jié)果和影響其后n-1步的結(jié)果,最優(yōu)決策是根據(jù)兩者統(tǒng)一考慮的結(jié)果決定的,具體實(shí)現(xiàn)方法則是逐步遞推的計(jì)算方法,可以順推或者逆推。三機(jī)械可靠性優(yōu)化設(shè)計(jì)的數(shù)學(xué)模型目前,可靠性優(yōu)化設(shè)計(jì)可以分成兩類:一類是以可靠性指標(biāo)為優(yōu)化目標(biāo)的優(yōu)化設(shè)計(jì):另一類是以可靠性為約束條件的優(yōu)化設(shè)計(jì)問題。相應(yīng)的也有兩種數(shù)學(xué)模型。1設(shè)計(jì)變量機(jī)械零部件可靠性優(yōu)化設(shè)計(jì),通常取強(qiáng)度分布參數(shù),和應(yīng)力s分布參數(shù), 為設(shè)計(jì)變量。這些參數(shù)都與投資費(fèi)用有關(guān).2目標(biāo)函數(shù)和約束條件已知應(yīng)力S,強(qiáng)度,且互相獨(dú)立. 其中為總成本;為平均強(qiáng)度的成本函數(shù),是遞增函數(shù);是強(qiáng)度標(biāo)準(zhǔn)差的成本函數(shù);是遞減函數(shù);分別表示應(yīng)力均值和標(biāo)準(zhǔn)差的成本函數(shù),
6、均為遞減函數(shù)。以可靠度指標(biāo)為約束條件的機(jī)械強(qiáng)度可靠性優(yōu)化設(shè)計(jì)要求滿足的可靠性指標(biāo)為,則目標(biāo)函數(shù)是當(dāng)應(yīng)力和強(qiáng)度均為正態(tài)分布時(shí),約束條件是 (是設(shè)計(jì)目標(biāo)可靠度R對應(yīng)的可靠度系數(shù))當(dāng)設(shè)計(jì)對象及設(shè)計(jì)要求不同時(shí),還應(yīng)考慮其它優(yōu)化目標(biāo)及約束條件。(2)以可靠度最大為目標(biāo)的機(jī)械強(qiáng)度可靠性優(yōu)化設(shè)計(jì)。規(guī)定總費(fèi)用r,r是預(yù)定的投資費(fèi)用;同時(shí)設(shè)可靠度R最大時(shí)的最優(yōu)解是,則目標(biāo)函數(shù)是約束條件是當(dāng)設(shè)計(jì)對象及設(shè)計(jì)要求不同時(shí),還應(yīng)考慮其它優(yōu)化目標(biāo)及約束條件。3優(yōu)化方法優(yōu)化方法的選擇取決于數(shù)學(xué)模型的特點(diǎn),例如優(yōu)化問題規(guī)模的大小,目標(biāo)函數(shù)和約束函數(shù)的性質(zhì)及計(jì)算精度等,同時(shí)還要考慮計(jì)算效率。正確地選擇優(yōu)化方法,還沒有定論,對于機(jī)
7、械設(shè)計(jì)問題,大多采用復(fù)合形法或懲罰函數(shù)法。Matlab軟件具有強(qiáng)大的數(shù)值計(jì)算能力和卓越的數(shù)據(jù)可視化功能,其中的優(yōu)化工具箱包含有一系列優(yōu)化算法和模塊,用于求解機(jī)械設(shè)計(jì)問題。設(shè)計(jì)人員可根據(jù)設(shè)計(jì)需要編寫目標(biāo)函數(shù)和約束函數(shù)程序,直接調(diào)用優(yōu)化工具箱中的優(yōu)化程序,對設(shè)計(jì)對象進(jìn)行優(yōu)化,節(jié)省設(shè)計(jì)人員大量時(shí)間,而優(yōu)化結(jié)果和常用的優(yōu)化方法的計(jì)算結(jié)果非常接近。四設(shè)計(jì)實(shí)例對某種二級圓柱齒輪減速器,在保證減速器的可靠度不小于的條件下,以其體積最小為目標(biāo)進(jìn)行可靠性優(yōu)化設(shè)計(jì)。已知總傳動(dòng)比i=20;高速軸輸入功率=4.5Kw;高速軸轉(zhuǎn)速=960r/min;低速軸=48r/min;齒寬系數(shù)=0.4;大,小齒輪和軸均為45鋼,調(diào)
8、質(zhì)HB229-255,抗拉強(qiáng)度極限=650MPa??偣ぷ鲿r(shí)間不小于10年。要求系統(tǒng)總可靠度大于等于0.9。齒輪精度為8。1.可靠度分配:設(shè)計(jì)齒輪減速器,對其中的關(guān)鍵零件齒輪和軸應(yīng)該進(jìn)行可靠性優(yōu)化設(shè)計(jì),要求有最優(yōu)的高可靠度,取R0.95,。而對于軸承則只需進(jìn)行可靠性設(shè)計(jì),對其它零件一般只需要進(jìn)行常規(guī)設(shè)計(jì),限于篇幅從略。2.數(shù)學(xué)模型設(shè)計(jì)變量。在二級圓柱齒輪減速器的齒輪傳動(dòng)中,通常取高速級和低速級的法面模數(shù),齒數(shù),高速級傳動(dòng)比,分度圓螺旋角,齒寬,4個(gè)齒輪的變位系數(shù);高中低速軸直徑,等。為簡化問題,先假定4個(gè)齒輪均為標(biāo)準(zhǔn)齒輪,并假設(shè)設(shè)計(jì)變量和參數(shù)均服從正態(tài)分布。設(shè)齒寬=,=,則設(shè)計(jì)變量為X=目標(biāo)函數(shù)
9、。根據(jù)設(shè)計(jì)要求以減速器的總體積最小作為目標(biāo),將所有齒輪和軸的體積總和作為目標(biāo)函數(shù)。其中兩齒輪之間的距離一般取1015mm;齒輪內(nèi)壁之間的距離一般取1015mm;軸承中心至箱體內(nèi)壁之間的距離一般取=0.25。=V= (3)約束條件。1)斜齒輪的重合度一般大于1.2,根據(jù)文獻(xiàn)可知2)斜齒輪螺旋角的取值范圍是:,即,3)斜齒輪不發(fā)生根切的最小當(dāng)量齒數(shù),即4)斜齒輪齒寬系數(shù)滿足:,即5)動(dòng)力傳動(dòng)齒輪模數(shù)滿足:,即6)為確保齒輪傳動(dòng)潤滑條件,滿足關(guān)系(為低速級傳動(dòng)比)7)結(jié)構(gòu)干涉限制,按高速級大齒輪與低速級軸不干涉相碰條件,得到8)滿足齒面接觸強(qiáng)度條件,即9)彎曲疲勞強(qiáng)度可靠度約束,同上式,(4)可靠度
10、系數(shù)的計(jì)算已知齒輪和軸均為45鋼,調(diào)質(zhì)HB200-280。根據(jù)高,低速級齒輪和軸的材料和熱處理方式,查機(jī)械設(shè)計(jì)手冊可知1)對于45鋼調(diào)質(zhì)的齒輪的接觸疲勞極限的對數(shù)標(biāo)準(zhǔn)差,彎曲疲勞極限的對數(shù)標(biāo)準(zhǔn)差對數(shù)接觸疲勞極限均值6.5689MPa接觸疲勞極限均值=715MPa接觸疲勞極限標(biāo)準(zhǔn)差=64.5a變異系數(shù)= = 同理可得對數(shù)彎曲疲勞極限均值, 彎曲疲勞極限均值, 彎曲疲勞極限標(biāo)準(zhǔn)差和變異系數(shù):=5.8132MPa,=341MPa,=69MPa,=0.2020。2)齒輪接觸疲勞強(qiáng)度及彎曲疲勞強(qiáng)度的計(jì)算N=60nt=60*48*87600=252288000 =48r/min=715*1.5*1.1*1
11、.05*0.9*1*1= 1115MPa=341*2*1.08*1*1.05*1=862=3)接觸應(yīng)力和彎曲應(yīng)力的計(jì)算高速軸的扭矩=9.55*1000000,中間軸的扭矩=,名義切向力均值=4)在應(yīng)力和強(qiáng)度均為對數(shù)正態(tài)分布時(shí)的齒輪可靠度約束函數(shù)為附錄資料:不需要的可以自行刪除Pascal/C/C+語句對比(補(bǔ)充版)一、Hello world 先看三種語言的樣例:Pascalbegin writeln(Hello world);end.C#include int main() printf(Hello world!n); return 0;C+#include using namespace s
12、td;int main()cout Hello world! endl; return 0; 從這三個(gè)程序可以看到一些最基本的東西。在Pascal中的begin和end,在C/C+里就是;Pascal主程序沒有返回值,而C/C+返回0(好像在C中可以為NULL)。在C/C+中,main函數(shù)以前的是頭文件,樣例中C為stdio.h,C+除了iostream還有第二行的using namespace std,這個(gè)是打開命名空間的,NOIP不會考這個(gè),可以不管,只要知道就行了。 此外說明 注釋單行用/,段落的話Pascal為,C/C+為/* */。* 常用頭文件(模板)#include #inclu
13、de #include #include #include #include using namespace std;int main() system(“pause”);return 0;二、數(shù)據(jù)類型及定義 這里只列出常用的類型。1、整型PascalC/C+范圍shortint-128 127integershort-32768 32767longintInt -2147483648 2147483647int64long long-9223372036854775808 9223372036854775807byte-0 255wordunsigned short0 65535longwo
14、rdunsigned int0 4294967295qwordunsigned long long0 18446744073709551615 * 當(dāng)對long long 變量賦值時(shí),后要加LLLong long x=6327844632743269843LL* 如果位移 x2LL* Linux: printf(“%lldn”,x);* Windows: printf(“%I64dn”,x);2、實(shí)型PascalC/C+范圍realfloat2.9E-39 1.7E38single-1.5E-45 3.4E38doubledouble5.0E-324 1.7E3083、字符即字符串 字符在三種
15、語言中都為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+中還可以用宏來定義常量,此時(shí)不注明類型。PascalC/C+const a = 60; b = -a + 30; d = ;const
16、 int a = 60;const int b = - a + 30;const string d = “”;define MAXN 501 /這個(gè)是宏 * 宏定義其實(shí)就是直接在程序相應(yīng)的位置替換: #define randomize srand(unsigned time(NULL) #define wait for(int w=0;w a;cout a;cout a endl;特別說明C+中cin一個(gè)字符的話會自動(dòng)跳過空格和回車,Pascal和C則會讀入空格和回車。在Pascal中writeln(a:n:m) 表示在n個(gè)字符寬的輸出域上輸出a保留m位小數(shù)。例如:pascal write(a
17、:6) c/c+ printf(“%6d”,a) Pascal write(a:6:2) c/c+ printf(“%6.2f”,a) C+ 如果用 cout ? (繁瑣!) 需要加頭文件 #inlude cout setprecision(2)a; /作用永久 cout setw(6)a; /作用臨時(shí) 以下三個(gè)進(jìn)制設(shè)定都是永久作用: cout deca; 相當(dāng) printf(“%d”,a); /十進(jìn)制 cout hexa; 相當(dāng) printf(“%X”,a); /十六進(jìn)制 cout octa; 相當(dāng) printf(“%o”,a); /八進(jìn)制例如:cout 12hex12oct1212endl
18、;輸出:12c1414 C 的輸入輸出里面的字符串中%表示變量,%后面的字目表示變量類型。下面是類型表:%hd1個(gè)short型整數(shù)%d1個(gè)int型整數(shù)%u1個(gè)unsigned int型整數(shù)%I64d1個(gè)long long型整數(shù)%c1個(gè)字符%s1個(gè)C字符串%f1個(gè)float型實(shí)數(shù)%lf1個(gè)double型實(shí)數(shù)%10.4f輸出1個(gè)總寬度為10,保留4位小數(shù)的實(shí)數(shù) 文件輸入輸出:Pascalassign(input, test.in);assign(output, test.out);reset(input);rewrite(output);read(a, b);writeln(a, b);close
19、(input);close(output);CFILE *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 using namespace std;ifstream fin(“test.in”);ofstream fout(“test.out”);fin a b;fout a b endl;fin.close(); fout.clos
20、e();因?yàn)镃+的讀入較慢,個(gè)人建議C+的話使用C的輸入方式。當(dāng)然也有人用C的讀入,C+的輸出的,這種方式我們稱之為城鄉(xiāng)結(jié)合。*中國計(jì)算機(jī)學(xué)會競賽須知發(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.
21、out”,”w”,stdout);ios:sync_with_stdio(false); 取消同步,cin,cout的速度就不慢了! cinab;couta+bendl; return 0;以下擴(kuò)充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,
22、s,&n)!=EOF).四、賦值語句及運(yùn)算符號 一一對應(yīng)的關(guān)系PascalC/C+賦值運(yùn)算賦值:=基本運(yùn)算加+減-乘*除(實(shí)數(shù))/ (double)除法取整div(int) / (int)取余mod%比較等于=不等于!=大于大于等于=小于小于等于=邏輯且and&或or|非not!位運(yùn)算左移(*2)shl且and&或or|非not異或xor其他增一inc(x)x+減一dec(x)x- 在C/C+中對某個(gè)變量自身進(jìn)行運(yùn)算可以簡寫為 變量名 運(yùn)算符號= 改變量 如 x += 8 就表示 x = x + 8, 即 inc(x, 8)。 在 C/C+里還存在一種三目運(yùn)算 變量名 = 條件 ? 值A(chǔ) :
23、值B 如 x = x 0 ? x : -x; /表示若x 0 則取 x, 否則取 x, 同 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
24、 * x;end;switch (x) case 1: x +; break; case 2: x -; break; default: x *= x; 切記C/C+中一定要寫break,后果你可以去掉break,運(yùn)行看看就知道了。六、循環(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-)
25、 a-;/*只要i 滿足條件就會一直循環(huán)。C/C+中i是實(shí)數(shù)、指針都可以*/C/C+中for的特殊用法:/變量為實(shí)數(shù)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/
26、C+repeat 語句 until 結(jié)束條件;do while (運(yùn)行條件)repeat int(i) until i 100;do i+; while (i = 100);七、數(shù)組 Pascal中數(shù)組的下標(biāo)可以隨意定義,而C/C+下標(biāo)始終為從0開始到(數(shù)組大小1)。PascalC/C+定義a : array 1.100 of integer;b :array 1.10,1.10 of int64;int a100;int b1010;含義a 為大小為100的integer數(shù)組,合法下標(biāo)為1到100b 為大小為10*10的int64數(shù)組,合法下標(biāo)為1,1到10,10a 為大小為100的int數(shù)
27、組,合法下標(biāo)為0到99b 為大小為10*10的int數(shù)組,合法下標(biāo)為0,0到9,9;使用inc(a21);b2,2:=b1,1+b1,2+b2,1;a21+;b11=b01+b00+b10; 數(shù)組清零PascalC/C+Fillchar(a, sizeof(a), 0);memset(a, 0, sizeof(a);/頭文件包含 string.h*如果要填最大: memset(a,127,sizeof(a) (但達(dá)不到 INT_MAX) 如果要填最?。?memset(a,128,sizeof(a) (但達(dá)不到 INT_MIN) 如果填0: memset(a,0,sizeof(a) 如果填-1:
28、 memset(a,-1,sizeof(a)八、字符串 C風(fēng)格的字符串就是字符數(shù)組。 C+和Pascal的字符串使用基本相同,只是C+中字符串下標(biāo)以0開始,Pascal以1開始。字符串處理很多這里不一一列舉,只寫最常用的幾個(gè)。PascalC (包含)定義用:char sC+(包含)定義用:string s輸入輸出Readln(s);Writeln(s);Scanf(“%s”,s);Printf(“%sn”,s);注:不能輸入輸出c+的字符串Cins;Couts = s 的區(qū)別: getline(cin,s)cins一次性整行讀入,直至行末尾。只讀入一個(gè)“單詞”,遇空格和行末停止。例如輸入;Ho
29、w are you?s=” How are you?”讀入整串含空格例如輸入;How are you?s=”How”如果三個(gè)都讀:cins1s2s3*C+ 數(shù)字與數(shù)值之間的轉(zhuǎn)換:#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;九、過程和函數(shù)1、過程 在C
30、/C+中沒有過程,但可以把返回值為“空”的函數(shù)理解為過程。PascalC/C+無參過程procedure 過程名;說明部分begin 語句部分 end;/說明部分、begin、end語句部分統(tǒng)稱為過程體void 函數(shù)名(); 主體部分; return ;帶參過程procedure 過程名(形參表)過程體void 函數(shù)名(形參表)過程體 值傳和址傳:當(dāng)一個(gè)參數(shù)是值傳時(shí),形參在子過程中相當(dāng)于一個(gè)局部變量,對它的改變不影響實(shí)在的參數(shù)值。址傳則會影響。下例中a為值傳,b為址傳。初始a = 5,b = 5,運(yùn)行后a = 5,b = 10;PascalC/C+var a, b:integer;proced
31、ure doit(a:integer; var b:integer);begin b := 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認(rèn)為值參,b認(rèn)為變量傳參 b += a; a += b; return ;int main()int a = 5, b = 5;doit(a, b);cout a b;return 0;* 用若干地址傳參可以給調(diào)用者傳回若干值 Void tryit(int &x,int &y,int &
32、z) 調(diào)用時(shí): tryit(a,b,c) ,可以傳回 a,b,c的值。* 用數(shù)組名(也是地址)傳參可以傳回整組的數(shù)據(jù) Void tryit( int a) 調(diào)用時(shí): tryit(x),可以傳回整個(gè)數(shù)組。例如: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;*用指向函數(shù)的指針作為參數(shù),可以執(zhí)行指定的函數(shù)。(略)STL 的兩個(gè)應(yīng)用:* C+ 快排函數(shù)#include
33、 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)先隊(duì)列(以堆排為例)#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(); ret
34、urn 0;* 隊(duì)列、棧、優(yōu)先隊(duì)列 三種數(shù)據(jù)結(jié)構(gòu)匯總:#include #include priority_queue Q;queue Q1;stack S;int main()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ù) . PascalC/C+funtion 函數(shù)名(形參表):返回值類型;函數(shù)體返回值類型 函數(shù)名(形參表) 主體; return 返回值; 注意在Pascal中: 在函數(shù)體的語句部分中,必須有對應(yīng)的函數(shù)標(biāo)識符賦值的語句,并且這些語句在函數(shù)被引用時(shí)至少要有一句被執(zhí)行,最后賦給函數(shù)標(biāo)識符的值就是函數(shù)值?;蛘遝xit(返回值);下面為求n階乘的樣例:PascalC/C+function fac(n:integer):longint;var sum, i:longint;beginsum := 1;for i := 2 to n do sum := sum * i;fac := sum
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 案例分析教育行業(yè)企業(yè)管理模式優(yōu)化
- 現(xiàn)代物盛業(yè)的人才培養(yǎng)與技能培訓(xùn)研究報(bào)告
- 電力設(shè)備故障診斷的現(xiàn)代技術(shù)應(yīng)用
- 激發(fā)創(chuàng)新思維知識付費(fèi)對人才培養(yǎng)的促進(jìn)作用
- 2025年度智能家居合租房租合同規(guī)范
- 2025年度太陽能路燈機(jī)電安裝與照明合同
- 給酒店員工表揚(yáng)信15篇
- 2025年度施工現(xiàn)場安全事故應(yīng)急處理合同
- 未來商業(yè)活動(dòng)中的智能紡織物洗護(hù)解決方案
- 2025年度老舊小區(qū)改造工程設(shè)計(jì)與施工一體化合同范本
- 江蘇省2023年對口單招英語試卷及答案
- 易制毒化學(xué)品安全管理制度匯編
- GB/T 35506-2017三氟乙酸乙酯(ETFA)
- GB/T 25784-20102,4,6-三硝基苯酚(苦味酸)
- 特種設(shè)備安全監(jiān)察指令書填寫規(guī)范(特種設(shè)備安全法)參考范本
- 硬筆書法全冊教案共20課時(shí)
- 《長方形的面積》-完整版課件
- PDCA降低I類切口感染發(fā)生率
- 工業(yè)企業(yè)現(xiàn)場監(jiān)測工況核查表
- 沉淀池及排水溝清理記錄表
- 急診急救信息化課件
評論
0/150
提交評論