基于MATLAB的货车动力性能的分析实验_第1页
基于MATLAB的货车动力性能的分析实验_第2页
基于MATLAB的货车动力性能的分析实验_第3页
基于MATLAB的货车动力性能的分析实验_第4页
基于MATLAB的货车动力性能的分析实验_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PAGE 2基于MATLAB的货车动力性能的分析实验实验目的及要求1.1 实验目的了解MATLAB的基本知识,熟悉相关的操作;能够熟练运用其中的一些方法来解决和专业有关的基本问题。1.2 实验要求掌握MATLAB数值计算、程序设计以及二维绘图的基本操作方法;以轻型货车为例,通过独立的编程实验确定汽车的动力性能;以4挡和5挡两种变速器的对比、2挡和4挡两种起步挡位的对比来分析变速器传动比和起步挡位的变化对汽车的动力性能的影响。背景介绍数值计算指有效使用数字计算机求数学问题近似解的方法与过程,主要研究如何利用计算机更好的解决各种数学问题。MATLAB软件具有出色的数值计算能力,在世界上同类软件中占

2、据主导地位,它的数值计算功能主要包括:变量和数值;矩阵和数组;多项式计算;数据分析等四个方面的内容。MATLAB语言简洁紧凑,使用方便灵活,其语法规则与人的思维和书写习惯相近,方面操作。且程序书写形式自由,利用其丰富的库函数避开繁杂的子程序编程任务,压缩了很多不必要的编程工作。另外,它的语法限制不严格,程序设计自由度大。此外,MATLAB还有着非常强大的绘图功能。作为一个功能强大的工具软件,MATLAB提供了大量的二维、三维图形函数。由于系统采用面向对象的技术和丰富的矩阵运算,所以在图形处理方面既方便又高效。在此背景下,像确定汽车动力性能这样不是很复杂的数值计算和二维图形处理问题,运用MATL

3、AB来进行解决是绰绰有余的。基本实验内容3.1 实验原理汽车的动力性系指汽车在良好路面上直线行驶时由汽车受到的纵向外力决定的、所能达到的平均行驶速度。从获得尽可能高的平均行驶速度的观点出发,汽车的动力性主要由三方面的指标来评定,即:汽车的最高速度umax,指在水平良好的路面(混凝土或沥青)上汽车能达到的最高行驶速度;汽车的加速时间t,表示汽车的加速能力,常用原地起步加速时间与超车加速时间来表明汽车的加速能力;汽车的最大爬坡度imax,指满载(或某一载质量)时汽车在良好路面上的最大爬坡度,表征汽车的上坡能力。动力性是汽车各种性能中最基本、最重要的性能,作为高效率的运输工具,汽车的运输效率之高低很

4、大程度上取决于汽车的动力性。确定汽车的动力性能即确定上述三项动力性指标。通常将汽车行驶方程式用图解法来进行分析汽车行驶时的受力情况和平衡关系,作出汽车驱动力-行驶阻力平衡图,并以它来确定汽车的动力性能。根据汽车理论的知识,汽车的行驶方程式为:Ft=F=Ff+Fw+Fi+Fj (1) 式中,Ft为驱动力,F为行驶阻力之和。, (2) Ttq为发动机转矩,ig为变速器传动比,i0为主减速器传动比,T为传动系机械效率,r为车轮半径;滚动阻力Ff=Wf, (3)W为车轮负荷(等于汽车重力),f为滚动阻力系数; 空气阻力, (4)CD为空气阻力系数,A为迎风面积,ua为汽车行驶速度,;(5)坡度阻力Fi

5、=Gi, (6)G为汽车的重力,i为道路坡度;加速阻力, (7)为汽车旋转质量换算系数, (8)m为汽车质量,为行驶加速度。(1)由此便可得出驱动力-行驶阻力平衡图,图中含有各挡的驱动力,又有叠加后的行驶阻力曲线,可以很轻松地找到驱动力曲线和行驶阻力曲线的交点,即为最高车速umax。其中,坡度阻力和加速阻力不叠加在内。(2)汽车的加速能力由它从最低稳定速度加速到一定距离或80%umax所需的时间来评价,由汽车理论知识,可通过绘制汽车的行驶加速度倒数曲线用MATLAB编程求得。分析1挡或2挡起步加速行驶至70km/h的加速时间。(3)当汽车达到最大爬坡度时,此时imax=tan,为I挡时的最大爬

6、坡度, 。 (9)3.2 实验数据轻型货车的有关数据如下:汽油发动机使用外特性的Ttq-n曲线的拟合公式为(n为发动机转速):(10)发动机的最低转速nmin=600r/min,最高转速nmax=4000r/min货车装载质量2000kg,整车整备质量1800kg,总质量3880kg,车轮半径0.367m,传动系机械效率T=0.85,滚动阻力系数f=0.013,空气阻力系数迎风面积CDA=2.77m2,主减速器传动比i0=5.83,飞轮转动惯量If=0.218kgm2,二前轮转动惯量Iw1=1.798kgm2,四后轮转动惯量Iw2=3.598kgm2,变速器传动比i0数据见下表:1挡2挡3挡4

7、挡5挡4挡变速器6.093.091.711.005挡变速器5.562.7691.6441.000.7933.3 实验步骤装用5挡变速器,确定货车的动力性能。根据MATLAB的数值计算规则,运用plot函数,列写程序以得到驱动力-行驶阻力平衡图。其中货车总质量m、车轮半径r等常值变量可以直接用辅值语句写出,需要注意的是发动机转速(令转速数值的变化步长为5r/min)和变速器传动比需要用矩阵的形式列出,各挡驱动力、行驶阻力、加速度等均可由上述各式推导得出,则有:Ft1=Tq*ig(1)*i0*nT/r; %1挡驱动力曲线方程,往后各挡以此类推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);语句直接选取,也可以通过循环语句编程获得。(2)汽车最大爬坡度根据式(9)直接计算出1挡时的坡度即可。(3)汽车的加速时间通过顺序、选择、循环等结构语句编程求出。改变参数,观察动力性能的变化情况。根据步骤1,很快能够得出装用4挡变速器的货车的动力性能评价指标,对比其与装用5挡变速器的不同,进行讨论分析。以装

9、用5挡变速器为例,调整变速器的起步挡位,本次实验选取2挡和4挡两个挡位作为低挡起步和高挡起步的研究对象,分析不同起步挡位对汽车加速时间的影响。实验结果和分析两种挡位的货车动力性能对比分析 图(1)5挡变速器平衡图 图(2) 4挡变速器平衡图 图(3) 5挡变速器运行结果 图(4) 4挡变速器运行结果 图(5) 5挡变速器加速度倒数曲线 图(6) 4挡变速器加速度倒数曲线由图(1)、图(2)的对比图可以看出,挡位数的多少对车辆的驱动力和行驶阻力并没有特别大的影响,两者在驱动力-行驶阻力平衡图中的对应曲线变化都十分接近。当采用5挡变速器时,驱动力和行驶阻力曲线的交点很明显,进而得出最高车速,而采用

10、4挡变速器时,两者没有交点,无法直观得到货车的最高车速,因此在运行结果中装用4挡变速器的货车无法得出最高时速的数值。从图(3)、(4)来看,5挡的最大爬坡度比4挡的大4%,也就是说挡位数越多,货车的上坡能力越好,但爬坡能力也不宜过大,否则会影响汽车行驶的加速性能。由图(5)、(6)共同表明,I挡的加速度是最大的,而高档位时的加速度要小些,又I挡与II挡没有交点,所以应该在I挡位加速行驶至发动机转速达到最高转速时换入II挡,但挡位数量几乎没有对汽车的加速性能产生影响。不同挡位起步对货车动力性能影响的对比分析 图(7) 2挡起步加速时间曲线 图(8) 4挡起步加速时间曲线 图(9) 2挡起步运行结

11、果 图(10) 4挡起步运行结果根据图(7)、(8)(9)、(10)可知,低速挡起步的加速时间曲线的斜率明显大于高速挡,且同样加速到70km/h,2挡原地起步只需25s,4挡原地起步需要65s,多了不止一倍的时间,这说明了,汽车具有快的起步速度并不代表具有更好的加速能力,这是因为低挡位时汽车的加速度远远大于高速挡。源程序清单由于装用4挡变速器的源程序只需在5挡的基础上进行简单修改即可获得,因此这里只列出了装用5挡变速器的源程序清单。m(1)=1800;%整车整备质量(单位:kg);m(2)=2000;%装载质量(单位:kg);m(3)=3880;%总质量(单位:kg);g=9.8;%重力加速度

12、(单位:N/kg);r=0.367;%车轮半径(单位:m);nT=0.85;%传动系机械效率;f=0.013;%滚动阻力系数;CDA=2.77;%空气阻力系数*迎风面积CDA(单位:m2);io=5.83;%主减速器传动比;If=0.218;%飞轮转动惯量(单位:kgm2);Iw1=1.798;%二前轮转动惯量(单位:kgm2);Iw2=3.598;%四后轮转动惯量(单位:kgm2);ig=5.56 2.769 1.644 1.00 0.793;%5档变速器的各档传动比;L=3.2;%轴距(单位:m);a=1.947;%质心至前轴距离(满载)(单位:m);hg=0.9;%质心高(满载)(单位:

13、m);nmin=600;nmax=4000;%转速的最小值和最大值(单位:r/min); %(1)绘制汽车驱动力与行驶阻力平衡图n=linspace(600,4000);%发动机转速,最低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;%发动机转矩与转速的关系;Ft1=ig(1,1)*Tq*io*nT/r;%各档的驱动力公式;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);%坐标的含义;axis(0 120 0 15000);%坐标范围;gridPAGE 21title(汽车驱动力与行驶阻力平衡图);%图形的含义;legend(Ft1,Ft2,Ft3,Ft4,Ft5,Ff+Fw);%曲线的含义;%gtext(1

16、档)手动选取位置 %(2)求汽车最高车速、最大爬坡度;%求最高车速:即5档时,驱动力与行驶阻力平衡时;x,y=ginput(1);disp(汽车最高时速=);disp(x);disp(km/h)手动选点Ft5_F5 = diff(Ft5-F5)=0);id = find(Ft5_F5);cross_num = length(id);%穿越次数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);%结果显示:最高车速为99.0828km/h,驱动力为1780.0992N;%最大爬坡度b=asin(max(Ft1-F1)/(m(3)*g);i=tan(b);disp(汽车最大爬坡度=);disp(i);%结果显示i = 0.3522,最大爬坡度为35.22%; %绘制汽车行驶加

18、速度倒数曲线,求汽车用2档起步加速行驶至70km/h的加速时间;%绘制汽车行驶加速度倒数曲线:R1=1+(Iw1+Iw2)/(m(3)*r2)+(If*ig(1,1)2*io2*nT)/(m(3)*r2);%汽车旋转质量换算系数;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;%各档的加速度倒数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(汽车的加速度倒数曲线);ylabel(1/a);%坐标的含义;axis(0 120 0 14);%坐标范围;gridtitle(汽车行驶加速度倒数曲线);%图形的含义;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);总结通过这次实验,了解并掌握了很多与MATLAB相关的知识,以前我一直认为它只是用来解决数学问题,但其实还可以应用于许多其他的领域。本次实验仅仅是将课堂上学习到的一些基础知识点进行了适当的拓展,比如相关m文件的建立,二维绘图用到的标注,配色,坐标控制,一张图里可以同时分配不同的曲线,便于分析比较,相关参数的设置以及相关函数的调用格式等等。这些简单语句和操作的组合就可以解决在书本上出现的难题,这让我认识到,以前我总是

26、害怕软件操作不易学就放弃了尝试,但是这次实验改变了我的想法。MATLAB的语句很符合人的思维和使用习惯,很好上手,方便理解,自身带有丰富的函数库且功能强大,对于我的专业研究方向来说是一款很有帮助的辅助工具。本实验主要采用二维图像分析比较的方法来重新认识了汽车的动力性能,使用MATLAB编程的过程更加深了我原有的理解,很多之前疑惑的地方都得到了解答。同时还发现了汽车的挡位数量会对汽车的最高速度、最大爬坡度等产生影响,但是影响不大。而原地起步挡位的大小对于汽车的加速能力则有很大的影响,为了很好的使汽车提速应该选用低挡位发动汽车。附录资料:不需要的可以自行删除c语言典型问题处理方法小结循环问题(1)

27、、数论问题1、求素数 for(i=2;i1,如果它仅有平凡约数1和a,则我们称a为素数(或质数)。整数 1 被称为基数,它既不是质数也不是合数。整数 0 和所有负整数既不是素数,也不是合数。 2、求最大公约数和最小公倍数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、辗转相除法求解 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、求完数 一个数如果恰好等于它的因子之和,这个数就称为“完数”。 例如:6的因子为1、2、3,而6123,因此6是“完数”。for(a=1;a=1000;a+) s=0; for(i=1;i=a) break; if(s=a) printf(%dt,a);注意S=0所放的位置 4、分解质因数 将一个整数写成几个质因数的连乘积,如: 输入36,则程序输出36=2*2*3*3 。解一、看似简单,但要自己完整地写出来还真不容易!竟然还动用了got

29、o语句,正好可以熟悉一下goto语句的用法!main() int a,z,i; clrscr(); scanf(%d,&a);判断下一个数开始有要重新从2开始了。所以用loop语句回到for语句,这是for语句仍从2初始化。从2开始的原则不变,变的是a的值。 loop: for(z=2;z=a;z+)判断是否为质数for(i=2;i=z;i+) if(z%i=0) break;判断是否为a的质因数 if(z=i) if(a%z=0) k+; if(k=1) printf(%d=%d,a1,z);用计数器来解决每行输入不同的问题。 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、从键盘输入两个整数,输出这两个整数的商的小数点后所有1000位整数 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习题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)数列问题二、数组问题(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、须迅速,熟练,无差错经常插入在程序中间2、现使用最大数下沉冒泡法还可以使用最小数上浮冒泡法3、j控制前面一个数和后面一个数一一比较。由于是最大数下沉,i+1后j仍要从0开始。4、i控制这样的操作一共要做多少次5、注意i j的控制次数2、从大到小排序main()现使用最大数上浮冒泡法还可使用最小数下沉冒泡法 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)二维数组三、字符或字符串输入输出问题(1)字符打印1、打印*此类题的溯源为书P122 4.11(1),其他题都是它的拓展 for (i=1;i=n;i+) 一共要输出的行数 for(j=1;j=i;j+) 每行要打印的*数 printf(*); printf(n); a、*解题要点:此类题关键在于找到每行要打印的个数和行数的关系。此题j=i j=n-i+1b、* for(i=1;i=n;i+) 一共要输出的行数 for(j=1;j=n-i;j+) 控制空格数 printf( ); for(k=1;k=i;k+) 每行要打印的*数 printf(*); printf(n); c、 * *

35、 *解题要点:在出现空格的时候,在找到每行要打印的*个数和行数的关系后,还应找到空格和行数的关系,分不同的参数进行循环。此题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乘法表解题要点:注意寻找行与列的规律。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-) 蓝色部分可以简写为绿色部分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个字符串。 使用一个两维数组贮存多个字符串char a8181;注意:如何使用一个两维数组贮存多个字符串 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函数5、任何进制转为十进制的方法6、输入一个整数n和一个字符串str,计算并输出n进制数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);编写程序,将一个十进制正整数转换成十六进制数。 注意类比#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、输入一个字符串,将其中的缩写形式展开,并输出展开后的该字符串。所谓展开缩写形式就是将其中由大小写字母或数字构成的形如a-f、U-Z、3-8 的形式展开成为 abcdef 、UVWXYZ 、345678,若出现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);补充:循环:求: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;两个乒乓球队进行比赛,各出3人。甲队为A,B,C;已对是X,Y,Z;已经抽签决定比赛名单。有人向队员大厅比赛的名单。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;枚举口袋中有红,黄,蓝,白,黑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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论