基于MATLAB的貨車動力性能的分析實驗_第1頁
基于MATLAB的貨車動力性能的分析實驗_第2頁
基于MATLAB的貨車動力性能的分析實驗_第3頁
基于MATLAB的貨車動力性能的分析實驗_第4頁
基于MATLAB的貨車動力性能的分析實驗_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、PAGE 2基于MATLAB的貨車動力性能的分析實驗實驗?zāi)康募耙?.1 實驗?zāi)康牧私釳ATLAB的基本知識,熟悉相關(guān)的操作;能夠熟練運用其中的一些方法來解決和專業(yè)有關(guān)的基本問題。1.2 實驗要求掌握MATLAB數(shù)值計算、程序設(shè)計以及二維繪圖的基本操作方法;以輕型貨車為例,通過獨立的編程實驗確定汽車的動力性能;以4擋和5擋兩種變速器的對比、2擋和4擋兩種起步擋位的對比來分析變速器傳動比和起步擋位的變化對汽車的動力性能的影響。背景介紹數(shù)值計算指有效使用數(shù)字計算機(jī)求數(shù)學(xué)問題近似解的方法與過程,主要研究如何利用計算機(jī)更好的解決各種數(shù)學(xué)問題。MATLAB軟件具有出色的數(shù)值計算能力,在世界上同類軟件中占

2、據(jù)主導(dǎo)地位,它的數(shù)值計算功能主要包括:變量和數(shù)值;矩陣和數(shù)組;多項式計算;數(shù)據(jù)分析等四個方面的內(nèi)容。MATLAB語言簡潔緊湊,使用方便靈活,其語法規(guī)則與人的思維和書寫習(xí)慣相近,方面操作。且程序書寫形式自由,利用其豐富的庫函數(shù)避開繁雜的子程序編程任務(wù),壓縮了很多不必要的編程工作。另外,它的語法限制不嚴(yán)格,程序設(shè)計自由度大。此外,MATLAB還有著非常強(qiáng)大的繪圖功能。作為一個功能強(qiáng)大的工具軟件,MATLAB提供了大量的二維、三維圖形函數(shù)。由于系統(tǒng)采用面向?qū)ο蟮募夹g(shù)和豐富的矩陣運算,所以在圖形處理方面既方便又高效。在此背景下,像確定汽車動力性能這樣不是很復(fù)雜的數(shù)值計算和二維圖形處理問題,運用MATL

3、AB來進(jìn)行解決是綽綽有余的。基本實驗內(nèi)容3.1 實驗原理汽車的動力性系指汽車在良好路面上直線行駛時由汽車受到的縱向外力決定的、所能達(dá)到的平均行駛速度。從獲得盡可能高的平均行駛速度的觀點出發(fā),汽車的動力性主要由三方面的指標(biāo)來評定,即:汽車的最高速度umax,指在水平良好的路面(混凝土或瀝青)上汽車能達(dá)到的最高行駛速度;汽車的加速時間t,表示汽車的加速能力,常用原地起步加速時間與超車加速時間來表明汽車的加速能力;汽車的最大爬坡度imax,指滿載(或某一載質(zhì)量)時汽車在良好路面上的最大爬坡度,表征汽車的上坡能力。動力性是汽車各種性能中最基本、最重要的性能,作為高效率的運輸工具,汽車的運輸效率之高低很

4、大程度上取決于汽車的動力性。確定汽車的動力性能即確定上述三項動力性指標(biāo)。通常將汽車行駛方程式用圖解法來進(jìn)行分析汽車行駛時的受力情況和平衡關(guān)系,作出汽車驅(qū)動力-行駛阻力平衡圖,并以它來確定汽車的動力性能。根據(jù)汽車?yán)碚摰闹R,汽車的行駛方程式為:Ft=F=Ff+Fw+Fi+Fj (1) 式中,F(xiàn)t為驅(qū)動力,F(xiàn)為行駛阻力之和。, (2) Ttq為發(fā)動機(jī)轉(zhuǎn)矩,ig為變速器傳動比,i0為主減速器傳動比,T為傳動系機(jī)械效率,r為車輪半徑;滾動阻力Ff=Wf, (3)W為車輪負(fù)荷(等于汽車重力),f為滾動阻力系數(shù); 空氣阻力, (4)CD為空氣阻力系數(shù),A為迎風(fēng)面積,ua為汽車行駛速度,;(5)坡度阻力Fi

5、=Gi, (6)G為汽車的重力,i為道路坡度;加速阻力, (7)為汽車旋轉(zhuǎn)質(zhì)量換算系數(shù), (8)m為汽車質(zhì)量,為行駛加速度。(1)由此便可得出驅(qū)動力-行駛阻力平衡圖,圖中含有各擋的驅(qū)動力,又有疊加后的行駛阻力曲線,可以很輕松地找到驅(qū)動力曲線和行駛阻力曲線的交點,即為最高車速umax。其中,坡度阻力和加速阻力不疊加在內(nèi)。(2)汽車的加速能力由它從最低穩(wěn)定速度加速到一定距離或80%umax所需的時間來評價,由汽車?yán)碚撝R,可通過繪制汽車的行駛加速度倒數(shù)曲線用MATLAB編程求得。分析1擋或2擋起步加速行駛至70km/h的加速時間。(3)當(dāng)汽車達(dá)到最大爬坡度時,此時imax=tan,為I擋時的最大爬

6、坡度, 。 (9)3.2 實驗數(shù)據(jù)輕型貨車的有關(guān)數(shù)據(jù)如下:汽油發(fā)動機(jī)使用外特性的Ttq-n曲線的擬合公式為(n為發(fā)動機(jī)轉(zhuǎn)速):(10)發(fā)動機(jī)的最低轉(zhuǎn)速nmin=600r/min,最高轉(zhuǎn)速nmax=4000r/min貨車裝載質(zhì)量2000kg,整車整備質(zhì)量1800kg,總質(zhì)量3880kg,車輪半徑0.367m,傳動系機(jī)械效率T=0.85,滾動阻力系數(shù)f=0.013,空氣阻力系數(shù)迎風(fēng)面積CDA=2.77m2,主減速器傳動比i0=5.83,飛輪轉(zhuǎn)動慣量If=0.218kgm2,二前輪轉(zhuǎn)動慣量Iw1=1.798kgm2,四后輪轉(zhuǎn)動慣量Iw2=3.598kgm2,變速器傳動比i0數(shù)據(jù)見下表:1擋2擋3擋4

7、擋5擋4擋變速器6.093.091.711.005擋變速器5.562.7691.6441.000.7933.3 實驗步驟裝用5擋變速器,確定貨車的動力性能。根據(jù)MATLAB的數(shù)值計算規(guī)則,運用plot函數(shù),列寫程序以得到驅(qū)動力-行駛阻力平衡圖。其中貨車總質(zhì)量m、車輪半徑r等常值變量可以直接用輔值語句寫出,需要注意的是發(fā)動機(jī)轉(zhuǎn)速(令轉(zhuǎn)速數(shù)值的變化步長為5r/min)和變速器傳動比需要用矩陣的形式列出,各擋驅(qū)動力、行駛阻力、加速度等均可由上述各式推導(dǎo)得出,則有:Ft1=Tq*ig(1)*i0*nT/r; %1擋驅(qū)動力曲線方程,往后各擋以此類推ua1=0.377*r*n/ig(1)/i0; %1擋加

8、速度,往后各擋以此類推ua=0:5:120; %確定加速度變化范圍,取變化步長為5Fz=Ff+Fw; %行駛阻力plot(ua1,Ft1,ua2,Ft2,ua3,Ft3,ua4,Ft4,ua5,Ft5,ua,Fz); %繪圖(1)汽車最大速度點可以在獲得曲線圖后用x,y=ginput(1);語句直接選取,也可以通過循環(huán)語句編程獲得。(2)汽車最大爬坡度根據(jù)式(9)直接計算出1擋時的坡度即可。(3)汽車的加速時間通過順序、選擇、循環(huán)等結(jié)構(gòu)語句編程求出。改變參數(shù),觀察動力性能的變化情況。根據(jù)步驟1,很快能夠得出裝用4擋變速器的貨車的動力性能評價指標(biāo),對比其與裝用5擋變速器的不同,進(jìn)行討論分析。以裝

9、用5擋變速器為例,調(diào)整變速器的起步擋位,本次實驗選取2擋和4擋兩個擋位作為低擋起步和高擋起步的研究對象,分析不同起步擋位對汽車加速時間的影響。實驗結(jié)果和分析兩種擋位的貨車動力性能對比分析 圖(1)5擋變速器平衡圖 圖(2) 4擋變速器平衡圖 圖(3) 5擋變速器運行結(jié)果 圖(4) 4擋變速器運行結(jié)果 圖(5) 5擋變速器加速度倒數(shù)曲線 圖(6) 4擋變速器加速度倒數(shù)曲線由圖(1)、圖(2)的對比圖可以看出,擋位數(shù)的多少對車輛的驅(qū)動力和行駛阻力并沒有特別大的影響,兩者在驅(qū)動力-行駛阻力平衡圖中的對應(yīng)曲線變化都十分接近。當(dāng)采用5擋變速器時,驅(qū)動力和行駛阻力曲線的交點很明顯,進(jìn)而得出最高車速,而采用

10、4擋變速器時,兩者沒有交點,無法直觀得到貨車的最高車速,因此在運行結(jié)果中裝用4擋變速器的貨車無法得出最高時速的數(shù)值。從圖(3)、(4)來看,5擋的最大爬坡度比4擋的大4%,也就是說擋位數(shù)越多,貨車的上坡能力越好,但爬坡能力也不宜過大,否則會影響汽車行駛的加速性能。由圖(5)、(6)共同表明,I擋的加速度是最大的,而高檔位時的加速度要小些,又I擋與II擋沒有交點,所以應(yīng)該在I擋位加速行駛至發(fā)動機(jī)轉(zhuǎn)速達(dá)到最高轉(zhuǎn)速時換入II擋,但擋位數(shù)量幾乎沒有對汽車的加速性能產(chǎn)生影響。不同擋位起步對貨車動力性能影響的對比分析 圖(7) 2擋起步加速時間曲線 圖(8) 4擋起步加速時間曲線 圖(9) 2擋起步運行結(jié)

11、果 圖(10) 4擋起步運行結(jié)果根據(jù)圖(7)、(8)(9)、(10)可知,低速擋起步的加速時間曲線的斜率明顯大于高速擋,且同樣加速到70km/h,2擋原地起步只需25s,4擋原地起步需要65s,多了不止一倍的時間,這說明了,汽車具有快的起步速度并不代表具有更好的加速能力,這是因為低擋位時汽車的加速度遠(yuǎn)遠(yuǎn)大于高速擋。源程序清單由于裝用4擋變速器的源程序只需在5擋的基礎(chǔ)上進(jìn)行簡單修改即可獲得,因此這里只列出了裝用5擋變速器的源程序清單。m(1)=1800;%整車整備質(zhì)量(單位:kg);m(2)=2000;%裝載質(zhì)量(單位:kg);m(3)=3880;%總質(zhì)量(單位:kg);g=9.8;%重力加速度

12、(單位:N/kg);r=0.367;%車輪半徑(單位:m);nT=0.85;%傳動系機(jī)械效率;f=0.013;%滾動阻力系數(shù);CDA=2.77;%空氣阻力系數(shù)*迎風(fēng)面積CDA(單位:m2);io=5.83;%主減速器傳動比;If=0.218;%飛輪轉(zhuǎn)動慣量(單位:kgm2);Iw1=1.798;%二前輪轉(zhuǎn)動慣量(單位:kgm2);Iw2=3.598;%四后輪轉(zhuǎn)動慣量(單位:kgm2);ig=5.56 2.769 1.644 1.00 0.793;%5檔變速器的各檔傳動比;L=3.2;%軸距(單位:m);a=1.947;%質(zhì)心至前軸距離(滿載)(單位:m);hg=0.9;%質(zhì)心高(滿載)(單位:

13、m);nmin=600;nmax=4000;%轉(zhuǎn)速的最小值和最大值(單位:r/min); %(1)繪制汽車驅(qū)動力與行駛阻力平衡圖n=linspace(600,4000);%發(fā)動機(jī)轉(zhuǎn)速,最低600r/min,最高4000r/min;Tq=-19.313+295.27*(n/1000)-165.44*(n/1000).2+40.874*(n/1000).3-3.8445*(n/1000).4;%發(fā)動機(jī)轉(zhuǎn)矩與轉(zhuǎn)速的關(guān)系;Ft1=ig(1,1)*Tq*io*nT/r;%各檔的驅(qū)動力公式;Ft2=ig(1,2)*Tq*io*nT/r;Ft3=ig(1,3)*Tq*io*nT/r;Ft4=ig(1,4)*

14、Tq*io*nT/r;Ft5=ig(1,5)*Tq*io*nT/r;ua1=0.377*(r/io)*n/ig(1,1);%各檔的速度公式;ua2=0.377*(r/io)*n/ig(1,2);ua3=0.377*(r/io)*n/ig(1,3);ua4=0.377*(r/io)*n/ig(1,4);ua5=0.377*(r/io)*n/ig(1,5);F1=m(3)*g*f+(CDA/21.15)*ua1.2;%行駛阻力F2=m(3)*g*f+(CDA/21.15)*ua2.2;F3=m(3)*g*f+(CDA/21.15)*ua3.2;F4=m(3)*g*f+(CDA/21.15)*ua4

15、.2;F5=m(3)*g*f+(CDA/21.15)*ua5.2;subplot(1,2,1)plot(ua1,ua2,ua3,ua4,ua5,Ft1,Ft2,Ft3,Ft4,Ft5);%繪圖;hold on plot(ua1,ua2,ua3,ua4,ua5,F1,F2,F3,F4,F5);%繪圖;xlabel(ua/(km/h);ylabel(F/N);%坐標(biāo)的含義;axis(0 120 0 15000);%坐標(biāo)范圍;gridPAGE 21title(汽車驅(qū)動力與行駛阻力平衡圖);%圖形的含義;legend(Ft1,Ft2,Ft3,Ft4,Ft5,Ff+Fw);%曲線的含義;%gtext(1

16、檔)手動選取位置 %(2)求汽車最高車速、最大爬坡度;%求最高車速:即5檔時,驅(qū)動力與行駛阻力平衡時;x,y=ginput(1);disp(汽車最高時速=);disp(x);disp(km/h)手動選點Ft5_F5 = diff(Ft5-F5)=0);id = find(Ft5_F5);cross_num = length(id);%穿越次數(shù)xcross = ;ycross = ;if isempty(id) fenmu = F5(id)-F5(id+1)+Ft5(id+1)-Ft5(id); xcross = (ua5(id+1).*(F5(id)-Ft5(id)+ua5(id).*(Ft5

17、(id+1)-F5(id+1)./fenmu; ycross = (Ft5(id+1).*F5(id)-Ft5(id).*F5(id+1)./fenmu;endplot(xcross, ycross, ko)%vpa(xcross ycross,10)提高精度;disp(汽車最高時速=);disp(xcross);%結(jié)果顯示:最高車速為99.0828km/h,驅(qū)動力為1780.0992N;%最大爬坡度b=asin(max(Ft1-F1)/(m(3)*g);i=tan(b);disp(汽車最大爬坡度=);disp(i);%結(jié)果顯示i = 0.3522,最大爬坡度為35.22%; %繪制汽車行駛加

18、速度倒數(shù)曲線,求汽車用2檔起步加速行駛至70km/h的加速時間;%繪制汽車行駛加速度倒數(shù)曲線:R1=1+(Iw1+Iw2)/(m(3)*r2)+(If*ig(1,1)2*io2*nT)/(m(3)*r2);%汽車旋轉(zhuǎn)質(zhì)量換算系數(shù);for i=1:5 R(i)=1+(Iw1+Iw2)/(m(3)*r2)+(If*(ig(i)2*io2*nT)/(m(3)*r2) endR2=1+(Iw1+Iw2)/(m(3)*r2)+(If*ig(1,2)2*io2*nT)/(m(3)*r2);R3=1+(Iw1+Iw2)/(m(3)*r2)+(If*ig(1,3)2*io2*nT)/(m(3)*r2);R4=

19、1+(Iw1+Iw2)/(m(3)*r2)+(If*ig(1,4)2*io2*nT)/(m(3)*r2);R5=1+(Iw1+Iw2)/(m(3)*r2)+(If*ig(1,5)2*io2*nT)/(m(3)*r2);aa1=(Ft1-F1)/(R1*m(3);%各檔的加速度a;aa2=(Ft2-F2)/(R2*m(3);aa3=(Ft3-F3)/(R3*m(3);aa4=(Ft4-F4)/(R4*m(3);aa5=(Ft5-F5)/(R5*m(3);a1=1./aa1;%各檔的加速度倒數(shù)1/a;a2=1./aa2;a3=1./aa3;a4=1./aa4;a5=1./aa5;subplot(1

20、,2,2)plot(ua1,ua2,ua3,ua4,ua5,a1,a2,a3,a4,a5)xlabel(汽車的加速度倒數(shù)曲線);ylabel(1/a);%坐標(biāo)的含義;axis(0 120 0 14);%坐標(biāo)范圍;gridtitle(汽車行駛加速度倒數(shù)曲線);%圖形的含義;legend(1/a1,1/a2,1/a3,1/a4,1/a5);%曲線的含義; %求汽車用2檔起步加速行駛至70km/h的加速時間曲線;clearnT=0.85;r=0.367;f=0.013;CDA=2.77;i0=5.83;If=0.218;Iw1=1.798;Iw2=3.598;L=3.2;a=1.947;hg=0.9

21、;m=3880;g=9.8; G=m*g; ig=5.56 2.769 1.644 1.00 0.793; nmin=600;nmax=4000;u1=0.377*r*nmin./ig/i0; u2=0.377*r*nmax./ig/i0; deta=0*ig; for i=1:5deta(i)=1+(Iw1+Iw2)/(m*r2)+(If*(ig(i)2*i02*nT)/(m*r2); endua=6:0.01:99;N=length(ua);n=0;Tq=0;Ft=0;inv_a=0*ua;delta=0*ua; Ff=G*f;Fw=CDA*ua.2/21.15; for i=1:N k=

22、i;if ua(i)=u2(2)n=ua(i)*(ig(2)*i0/r)/0.377;Tq=-19.313+295.27*(n/1000)-165.44*(n/1000)2+40.874*(n/1000)3-3.8445*(n/1000)4;Ft=Tq*ig(2)*i0*nT/r;inv_a(i)=(deta(2)*m)/(Ft-Ff-Fw(i);delta(i)=0.01*inv_a(i)/3.6; elseif ua(i)=u2(3)n=ua(i)*(ig(3)*i0/r)/0.377;Tq=-19.313+295.27*(n/1000)-165.44*(n/1000)2+40.874*(

23、n/1000)3-3.8445*(n/1000)4;Ft=Tq*ig(3)*i0*nT/r;inv_a(i)=(deta(3)*m)/(Ft-Ff-Fw(i); delta(i)=0.01*inv_a(i)/3.6;elseif ua(i)=u2(4)n=ua(i)*(ig(4)*i0/r)/0.377;Tq=-19.313+295.27*(n/1000)-165.44*(n/1000)2+40.874*(n/1000)3-3.8445*(n/1000)4;Ft=Tq*ig(4)*i0*nT/r;inv_a(i)=(deta(4)*m)/(Ft-Ff-Fw(i);delta(i)=0.01*i

24、nv_a(i)/3.6; elsen=ua(i)*(ig(5)*i0/r)/0.377;Tq=-19.313+295.27*(n/1000)-165.44*(n/1000)2+40.874*(n/1000)3-3.8445*(n/1000)4;Ft=Tq*ig(5)*i0*nT/r;inv_a(i)=(deta(5)*m)/(Ft-Ff-Fw(i); delta(i)=0.01*inv_a(i)/3.6; enda=delta(1:k);t(i)=sum(a); endfigureplot(t,ua,r-);axis(0 80 0 100);gridtitle(汽車2檔原地起步換擋加速時間曲線

25、); xlabel(時間t(s));ylabel(速度ua(km/h));ginput(1);disp(汽車2檔原地起步換擋加速行駛至70km/h的加速時間=);disp(ans);總結(jié)通過這次實驗,了解并掌握了很多與MATLAB相關(guān)的知識,以前我一直認(rèn)為它只是用來解決數(shù)學(xué)問題,但其實還可以應(yīng)用于許多其他的領(lǐng)域。本次實驗僅僅是將課堂上學(xué)習(xí)到的一些基礎(chǔ)知識點進(jìn)行了適當(dāng)?shù)耐卣?,比如相關(guān)m文件的建立,二維繪圖用到的標(biāo)注,配色,坐標(biāo)控制,一張圖里可以同時分配不同的曲線,便于分析比較,相關(guān)參數(shù)的設(shè)置以及相關(guān)函數(shù)的調(diào)用格式等等。這些簡單語句和操作的組合就可以解決在書本上出現(xiàn)的難題,這讓我認(rèn)識到,以前我總是

26、害怕軟件操作不易學(xué)就放棄了嘗試,但是這次實驗改變了我的想法。MATLAB的語句很符合人的思維和使用習(xí)慣,很好上手,方便理解,自身帶有豐富的函數(shù)庫且功能強(qiáng)大,對于我的專業(yè)研究方向來說是一款很有幫助的輔助工具。本實驗主要采用二維圖像分析比較的方法來重新認(rèn)識了汽車的動力性能,使用MATLAB編程的過程更加深了我原有的理解,很多之前疑惑的地方都得到了解答。同時還發(fā)現(xiàn)了汽車的擋位數(shù)量會對汽車的最高速度、最大爬坡度等產(chǎn)生影響,但是影響不大。而原地起步擋位的大小對于汽車的加速能力則有很大的影響,為了很好的使汽車提速應(yīng)該選用低擋位發(fā)動汽車。附錄資料:不需要的可以自行刪除c語言典型問題處理方法小結(jié)循環(huán)問題(1)

27、、數(shù)論問題1、求素數(shù) for(i=2;i1,如果它僅有平凡約數(shù)1和a,則我們稱a為素數(shù)(或質(zhì)數(shù))。整數(shù) 1 被稱為基數(shù),它既不是質(zhì)數(shù)也不是合數(shù)。整數(shù) 0 和所有負(fù)整數(shù)既不是素數(shù),也不是合數(shù)。 2、求最大公約數(shù)和最小公倍數(shù)a、 if(ab) t=a; a=b; b=t; for(i=a;i=1;i-) if(a%i=0&b%i=0) break; printf(largest common divisor:%dn,i); printf(least common multiple:%dn,(a*b)/is);b、輾轉(zhuǎn)相除法求解 a1=a; b1=b; while(a%b!=0) t=a%b; a=

28、b; b=t; printf(largest common divisor:%dnleast common multiple:%d,b,a1*b1/b);3、求完數(shù) 一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)”。 例如:6的因子為1、2、3,而6123,因此6是“完數(shù)”。for(a=1;a=1000;a+) s=0; for(i=1;i=a) break; if(s=a) printf(%dt,a);注意S=0所放的位置 4、分解質(zhì)因數(shù) 將一個整數(shù)寫成幾個質(zhì)因數(shù)的連乘積,如: 輸入36,則程序輸出36=2*2*3*3 。解一、看似簡單,但要自己完整地寫出來還真不容易!竟然還動用了got

29、o語句,正好可以熟悉一下goto語句的用法!main() int a,z,i; clrscr(); scanf(%d,&a);判斷下一個數(shù)開始有要重新從2開始了。所以用loop語句回到for語句,這是for語句仍從2初始化。從2開始的原則不變,變的是a的值。 loop: for(z=2;z=a;z+)判斷是否為質(zhì)數(shù)for(i=2;i=z;i+) if(z%i=0) break;判斷是否為a的質(zhì)因數(shù) if(z=i) if(a%z=0) k+; if(k=1) printf(%d=%d,a1,z);用計數(shù)器來解決每行輸入不同的問題。 else printf(*%d,z); a/=z; goto l

30、oop; 解二:main() int n, k=2, isfirst=1; printf(Input n=); scanf(%d,&n); while(k=n) if(n%k=0) if(isfirst) printf(%d=%d, n, k); isfirst=0; else printf(*%d,k); n/=k; else k+; printf(n);5、從鍵盤輸入兩個整數(shù),輸出這兩個整數(shù)的商的小數(shù)點后所有1000位整數(shù) for(i=1;i=2;i-) if(fm%i=0&fz%i=0) fz/=i; fm/=i; z=fz/fm; fzx=fz%fm; if(fzx=0) printf

31、(%d%d/%d-%d%d/%d=%dn,z1,fz1,fm1,z2,fz2,fm2,z); else if(z=0) printf(%d%d/%d-%d%d/%d=%d/%dn,z1,fz1,fm1,z2,fz2,fm2,fzx,fm); else printf(%d%d/%d-%d%d/%d=%d%d/%dn,z1,fz1,fm1,z2,fz2,fm2,z,fzx,fm);(2)近似問題1、書P122習(xí)題4-6注意千萬不要忘記添加#include “math.h”#include math.hmain() float x,j=1,k,s,so; int n; scanf(%f,&x); s

32、=x; so=x+1; for(n=1;fabs(s-so)1e-6;n+) for(k=1;k1e-6) x=(x1+x2)/2; f=x*x*x+4*x*x-10;可以用/*if(f*f10) x2=x; else x1=x; printf(%fn,x);(3)枚舉法(4)數(shù)列問題二、數(shù)組問題(1)排序問題1、從小到大排序main() int a10,i,j,t; for(i=0;i10;i+) scanf(%d,&ai); for(i=1;i10;i+) for(j=0;jaj+1) t=aj+1;aj+1=aj;aj=t; for(i=0;i10;i+) printf(%d ,ai);

33、 printf(n);注意排序問題:1、須迅速,熟練,無差錯經(jīng)常插入在程序中間2、現(xiàn)使用最大數(shù)下沉冒泡法還可以使用最小數(shù)上浮冒泡法3、j控制前面一個數(shù)和后面一個數(shù)一一比較。由于是最大數(shù)下沉,i+1后j仍要從0開始。4、i控制這樣的操作一共要做多少次5、注意i j的控制次數(shù)2、從大到小排序main()現(xiàn)使用最大數(shù)上浮冒泡法還可使用最小數(shù)下沉冒泡法 int a10,i,j,t; for(i=0;i10;i+) scanf(%d,&ai); for(i=1;i=i;j-) if(ajaj-1) t=aj-1; aj-1=aj; aj=t; for(i=0;i10;i+) printf(%d ,ai)

34、;(2)二維數(shù)組三、字符或字符串輸入輸出問題(1)字符打印1、打印*此類題的溯源為書P122 4.11(1),其他題都是它的拓展 for (i=1;i=n;i+) 一共要輸出的行數(shù) for(j=1;j=i;j+) 每行要打印的*數(shù) printf(*); printf(n); a、*解題要點:此類題關(guān)鍵在于找到每行要打印的個數(shù)和行數(shù)的關(guān)系。此題j=i j=n-i+1b、* for(i=1;i=n;i+) 一共要輸出的行數(shù) for(j=1;j=n-i;j+) 控制空格數(shù) printf( ); for(k=1;k=i;k+) 每行要打印的*數(shù) printf(*); printf(n); c、 * *

35、 *解題要點:在出現(xiàn)空格的時候,在找到每行要打印的*個數(shù)和行數(shù)的關(guān)系后,還應(yīng)找到空格和行數(shù)的關(guān)系,分不同的參數(shù)進(jìn)行循環(huán)。此題k=i j=n-i j=i-1k=n-i+1d、* * for(i=1;i=n;i+) for(j=1;j=n-i;j+) printf( ); for(k=1;k=2*i-1;k+) printf(*); printf(n); * *e、 * * * for(i=1;i=n-1;i+) for(j=1;j=i;j+) printf( ); for(k=1;k=2*(n-1-i)+1;k+) printf(*); printf(n); for(i=1;i=n;i+) fo

36、r(j=1;j=n-i;j+) printf( ); for(k=1;k=2*i-1;k+) printf(*); printf(n); * * * * * *2、打印9*9乘法表解題要點:注意尋找行與列的規(guī)律。i*ji代表列j代表行for(i=1;i=9;i+) for(j=1;j=9;j+) printf(%-3d ,i*j); 注意輸出格式的控制 printf(n); 3、九九乘法表1 2 3 4 5 6 7 8 92 4 6 8 10 12 14 16 183 6 9 12 15 18 21 24 27 9 18 27 36 45 54 63 72 814、楊暉三角形11 11 2 1

37、1 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1(2)字符串打印問題for(i=1;i=7;i+) ai1=1; aii=1; for(i=3;i=7;i+) for(j=2;j=i-1;j+) aij=ai-1j-1+ai-1j; gets(a); puts(a); for(i=1;i0;j-) aj=aj-1; a0=t; for(k=0;k=a&ai=z) ai-=32; puts (a);3、逆序輸出gets (a); c=strlen(a); for(i=0;i=0;i-) 藍(lán)色部分可以簡寫為綠色部分coutai-1;4、如輸入:ab1 3,

38、;z 輸出:ab1注意點:1、= =2、while語句的使用處體會3、全面考慮問題 3,;zgets(a); while(a0= ) for(i=0;ai!=0;i+) ai=ai+1; for(i=0;ai!=0;i+)if(ai= &ai+1!= ) printf(n); else if(ai= &ai+1= ) for(k=i;ak!=0;k+) ak+1=ak+2; i-; elseprintf(%c,ai);5、輸入3個字符串,按從小到大排序輸出這3個字符串。 使用一個兩維數(shù)組貯存多個字符串char a8181;注意:如何使用一個兩維數(shù)組貯存多個字符串 int i,j; for(i=

39、0;i3;i+) gets(ai); for(i=0;i3;i+) puts(ai);注意:1、scanf(%d%s,&n,str) 其中%s為字符串格式2、逐個給字符串賦值的方法見書140頁。 不可for(i=0;ai!=0;i+)3、stri=stri-A+10;4、pow函數(shù)5、任何進(jìn)制轉(zhuǎn)為十進(jìn)制的方法6、輸入一個整數(shù)n和一個字符串str,計算并輸出n進(jìn)制數(shù)str的值。 如輸入:7 16則輸出:13(16)7=(13)10如輸入:16 3A則輸出:58(3A)16=(58)10#include stdio.h#include math.hmain() char str81; int n,

40、i,s=0,t; clrscr(); scanf(%d%s,&n,str); for(i=0;stri!=0;i+) if(stri=A) stri=stri-A+10; else stri=stri-0; t=strlen(str); for(i=0;stri!=0;i+) s+=strt-i-1*pow(n,i); printf(%d,s);編寫程序,將一個十進(jìn)制正整數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)。 注意類比#include main()char a20;int x,i=0,j;clrscr();scanf(%d,&x);while(x) if(x%16=10&x%16=0;j-)printf(%c,

41、aj);printf(n);7、輸入一個字符串,將其中的縮寫形式展開,并輸出展開后的該字符串。所謂展開縮寫形式就是將其中由大小寫字母或數(shù)字構(gòu)成的形如a-f、U-Z、3-8 的形式展開成為 abcdef 、UVWXYZ 、345678,若出現(xiàn)f-a、A-7、9-5等形式則不予理睬。例如: 輸入:qwe246e-hA-d$-%4-7A-Dz-xp-R4-0輸出:qwr246efghA-d$-%4567ABCDz-xp-R4-0main() char a81; int i,c,s,k,t; gets(a); for(i=0;ai!=0;i+) if(ai=-) if(ai-1=A&ai+1=a&ai

42、+1=0&ai+1i;k-)ak+c-2=ak;as-1+c-2+1=0; for(;i=t;i+) ai=ai-1+1; puts(a);補(bǔ)充:循環(huán):求:a+aa+aaa+.的值#includevoid main()int a,n,i=1,sn=0,tn=0;coutinput a and nan;while(i=n)tn=tn+a;sn+=tn;a*=10;i+;coutthe answer is snendl;兩個乒乓球隊進(jìn)行比賽,各出3人。甲隊為A,B,C;已對是X,Y,Z;已經(jīng)抽簽決定比賽名單。有人向隊員大廳比賽的名單。A說他不和X比,C說他不和X,Z比。請編程序找出3對賽手的名單。

43、#includevoid main()char i,j,k;for(i=X;i=Z;i+)for(j=X;j=Z;j+)if(i!=j)for (k=X;k=Z;k+)if(i!=k&j!=k)if(i!=X&k!=X&k!=Z)coutA-i B-j C-kendl;枚舉口袋中有紅,黃,藍(lán),白,黑5種顏色的球若干。每次從口袋中任意取出3歌,問得到3種不同顏色球的可能取法,輸出每種排列的情況。#include#include /在C語言中不用加這句void main()enum colorred ,yellow ,blue,white, black;color pri;int i,j,k,n=

44、0,loop;for(i=red;i=black;i+)for(j=red;j=black;j+)if(i!=j)for (k=red;k=black;k+)if(k!=i)&(k!=j)n+;coutsetw(3)n; /setw是輸出格式的限定for(loop=1;loop=3;loop+)switch(loop)case 1:pri=color(i);break;case 2:pri=color(j);break;case 3:pri=color(k);break;default:break;switch(pri)case red:coutsetw(8)red;break;case yellow:coutsetw(8)yellow;break;case blue:coutsetw(8)blue;break;case white:coutse

溫馨提示

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

評論

0/150

提交評論