基于模糊控制和PID控制的自主车辆速度跟踪控制(含MATLAB仿真程序)_第1页
基于模糊控制和PID控制的自主车辆速度跟踪控制(含MATLAB仿真程序)_第2页
基于模糊控制和PID控制的自主车辆速度跟踪控制(含MATLAB仿真程序)_第3页
基于模糊控制和PID控制的自主车辆速度跟踪控制(含MATLAB仿真程序)_第4页
基于模糊控制和PID控制的自主车辆速度跟踪控制(含MATLAB仿真程序)_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、一、设计原理设计思想:油门控制采用增量式PID控制算法,刹车控制采用模糊控制算法,最后通过选择规则进行选择控制量输入。选择规则:首先定义速度偏差-50 km/he(k)50km/h,-20ec= e(k)- e(k-1)20,阀值eswith=10km/h。若:e(k)- eswith and throttlr_10 选择油门控制 = 2 * GB3 否则:先将油门控制量置0,再选择刹车控制若:0e(k) 先选择刹车控制,再选择油门控制若:e(k)=0 直接跳出选择刹车控制:刹车采用模糊控制算法1.确定模糊语言变量e基本论域取-50,50,ec基本论域取-20,20,刹车控制量输出u基本论域取

2、-30,30,这里我将这三个变量按照下面的公式进行压缩离散化: 其中,n为离散度。e、ec和u均取离散度n=3,离散化后得到三个量的语言值论域分别为:E=EC=U=-3,-2,-1,0,1,2,3其对应语言值为 NB,NM,NS,ZO, PS,PM,PB 2.确定隶属度函数E/EC和U取相同的隶属度函数,边界选取钟形隶属度函数,中间取三角形隶属度函数,即: 说明:边界选择钟形隶属度函数,中间选用三角形隶属度函数,图像略。实际EC和E输入值若超出论域范围,则取相应的端点值。 3.模糊控制规则由隶属度函数可以得到语言值隶属度(通过图像直接可以看出)如下表:表1:E/EC和U语言值隶属度向量表-3-

3、2-10123NB10.500000P0NM010.50000P1NS00.510.5000P2ZO000.510.500P3PS0000.510.50P4PM00000.510P5PB000000.51P6设置模糊规则库如下表:表2:模糊规则表UEECNBNMNSZOPSPMPBNBPBPBPMPMPSZOZONMPBPMPMPSZOZONSNSPMPMPSPSZONSNSZOPMPSPSZOZONSNMPSPSPSZOZOZONSNMPMPSZOZOZONSNMNBPBZOZOZONS*NMNMNB3.模糊推理由模糊规则表3可以知道输入E与EC和输出U的模糊关系,这里我取两个例子做模糊推理

4、如下:if (E is NB) and (EC is NM) then (U is PB)那么他的模糊关系子矩阵为:其中,,即表1中NB对应行向量,同理可以得到, , if (E is NB or NM) and (EC is NB) then (U is PB),结果略。按此法可得到27个关系子矩阵,对所有子矩阵取并集得到模糊关系矩阵如下:由R可以得到模拟量输出为:4.去模糊化由上面得到的模拟量输出为17的模糊向量,每一行的行元素(u(zij)对应相应的离散变量zj,则可通过加权平均法公式解模糊:从而得到实际刹车控制量的精确值u。油门控制:油门控制采用增量式PID控制,即:其中ki=kpts

5、/Ti,=kpTd/ts只需要设置、Ti、Td三个参数即可输出油门控制量。二、调整参数按照上述算法流程,应用MATLAB进行仿真实现,在参数调试过程中采用如下方法:首先将油门和刹车分开进行调整参数,最后再将调整好的参数写入总程序中调整。1.油门PID参数调节油门只需要调整kp、Ti、Td三个参数,根据经验,首先令Ti、Td为0,kp由0逐渐增大,在增大kp的过程可知,kp越大系统调节时间越短并趋于稳定,在达到一定程度后,继续增大系统将出现波动。 kp=0.1 kp=0.4kp=0.9调节Ti的过程发现,Ti对系统稳定性影响并不大,将Ti由10增大到30的过程中系统输出没有变化。 Ti=10 T

6、i=30在给Td赋值时,最开始从1增大,发现系统越来越不稳定,于是逐渐减小,到0.003时趋于稳定,它的可调节范围很小,随其值的减小最大误差值逐渐减小,增大则系统趋于不稳定。 kp=0.001 kp=0.002kp=0.0032.刹车调节首先,为了适应该系统,将刹车输出量限制在-150,150之内(最初设计其范围为-30,30),对于该控制,可调节参数较多,包括隶属度函数、模糊规则表、输入输出变量区间、语言值论域、模糊推理及解模糊方法等等,这里由于模糊规则需要经验设定,本算法没有实际参考,所以这里只调整规则表,其他参数固定不变。以下为最初设计的模糊规则表:UEECNBNMNSZONBPBPBP

7、MPMNMPBPMPMPSNSPMPMPSPSZOPMPSPSZOPSPSPSZOZOPMPSZOZOZOPBZOZOZOZO由于实际刹车控制中对于加速采取比较单一的置零(在选择规则中设定)输出,所以在规则表中e=A(i,n) kk(i,k)=A(i,k); else A(i,k)=A(i,n); kk(i,k)=A(i,k); end end endendfunction o=dikaer(A,n,B,N)for i=1:n for j=1:N if(A(i)=B(j) C(i,j)=A(i); else C(i,j)=B(j); end o=C; end end return;functi

8、on T=flisan(a,b,n,x) y=(a+b)/2+(b-a)*x/(2*n); T=round(y); return; function mm=bell(x,a,b,c)z=abs(x-c)/a)(2b);y=1/(1+z);mm=y;return;function ooo=jbing(A,B) for i=1:49 for j=1:7 if(A(i,j)B(i,j) A(i,j)=B(i,j); end end ooo=A; end return;function MM=jdikaer(A,n,B,m)for i=1:m for j=1:n if(A(j)B(i,j) A(i,j

9、)=B(i,j); end end oo=A; end return;function mm=lbell(x,a,b,c)if(x=Q(i) Q(i)=A(i,j); end end UU=Q; end return;function sum1=mean(U) a=-3 -2 -1 0 1 2 3; sum2=0;sum3=0; for i=1:7 sum2=sum2+U(i); sum3=sum3+U(i)*a(i); end sum1=sum3/sum2; return;function mm=rbell(x,a,b,c)if(xc) mm=1;elsez=(x-c)/a;v=abs(z)

10、;n=v(2*b);y=1/(1+n);mm=y;endreturn;function mww=trig(x,a,b,c) if(xa&xb&xc) mww=0; end end end end return; function ooo=xbing(A,B) for i=1:7 if(A(i)B(i) A(i)=B(i); end ooo=A; end return;clear all%*%/*%P0=1,0.5,0,0,0,0,0;%*NBP1=0,1,0.5,0,0,0,0;%*NMP2=0,0.5,1,0.5,0,0,0;%*NSP3=0,0,0.5,1,0.5,0,0;%*ZOP4=0

11、,0,0,0.5,1,0.5,0;%*PSP5=0,0,0,0,0.5,1,0;%*PMP6=0,0,0,0,0,0.5,1;%*PB%*%NB=-3;NM=-2;NS=-1;ZO=0;PS=1;PM=2;PB=3;%/*%Pg=PB PB PM PM PS ZO ZO; PB PM PM PS ZO ZO NS; PM PM PS PS ZO NS NS; PM PS PS ZO ZO NS NM; PS PS ZO ZO ZO NS NM; PS ZO ZO ZO NS NM NB; ZO ZO ZO NS NM NM NB;%/*R*%R1_=dikaer(xbing(P0,P1),7,

12、P0,7);R1_=reshape(R1_,1,49);R1=dikaer(R1_,49,P6,7);R2_=dikaer(xbing(P2,P3),7,P0,7);R2_=reshape(R2_,1,49);R2=dikaer(R2_,49,P5,7);R3_=dikaer(P0,7,P1,7);R3_=reshape(R3_,1,49);R3=dikaer(R2_,49,P6,7);R4_=dikaer(xbing(P1,P2),7,P1,7);R4_=reshape(R4_,1,49);R4=dikaer(R4_,49,P5,7);R5_=dikaer(P3,7,P1,7);R5_=re

13、shape(R5_,1,49);R5=dikaer(R5_,49,P4,7);R6_=dikaer(xbing(P0,P1),7,P2,7);R6_=reshape(R6_,1,49);R6=dikaer(R6_,49,P5,7);R7_=dikaer(xbing(P2,P3),7,P2,7);R7_=reshape(R7_,1,49);R7=dikaer(R7_,49,P4,7);R8_=dikaer(P0,7,P3,7);R8_=reshape(R8_,1,49);R8=dikaer(R8_,49,P5,7);R9_=dikaer(xbing(P1,P2),7,P3,7);R9_=resh

14、ape(R9_,1,49);R9=dikaer(R9_,49,P4,7);R10_=dikaer(P3,7,P3,7);R10_=reshape(R10_,1,49);R10=dikaer(R10_,49,P3,7);R11_=dikaer(xbing(P0,P1),7,P4,7);R11_=reshape(R11_,1,49);R11=dikaer(R11_,49,P4,7);P45=xbing(P4,P5);R12_=dikaer(xbing(P2,P3),7,P45,7);R12_=reshape(R12_,1,49);R12=dikaer(R12_,49,P3,7);R13_=dika

15、er(P0,7,P5,7);R13_=reshape(R13_,1,49);R13=dikaer(R13_,49,P4,7);R14_=dikaer(P1,7,P5,7);R14_=reshape(R14_,1,49);R14=dikaer(R14_,49,P3,7);P01=xbing(P0,P1);R15_=dikaer(xbing(P01,P2),7,P6,7);R15_=reshape(R15_,1,49);R15=dikaer(R15_,49,P3,7);R16_=dikaer(P3,7,P6,7);R16_=reshape(R16_,1,49);R16=dikaer(R16_,49

16、,P2,7);R17_=dikaer(P4,7,P0,7);R17_=reshape(R17_,1,49);R17=dikaer(R17_,49,P4,7);R18_=dikaer(xbing(P5,P6),7,P0,7);R18_=reshape(R18_,1,49);R18=dikaer(R18_,49,P3,7);R19_=dikaer(xbing(P4,P5),7,P1,7);R19_=reshape(R19_,1,49);R19=dikaer(R19_,49,P3,7);R20_=dikaer(P6,7,xbing(P1,P2),7);R20_=reshape(R20_,1,49);

17、R20=dikaer(R20_,49,P2,7);P23=xbing(P2,P3);R21_=dikaer(P4,7,xbing(P23,P4),7);R21_=reshape(R21_,1,49);R21=dikaer(R21_,49,P3,7);R22_=dikaer(P5,7,xbing(P23,P4),7);R22_=reshape(R22_,1,49);R22=dikaer(R22_,49,P2,7);R23_=dikaer(P6,7,xbing(P3,P4),7);R23_=reshape(R23_,1,49);R23=dikaer(R23_,49,P1,7);R24_=dikae

18、r(P4,7,P5,7);R24_=reshape(R24_,1,49);R24=dikaer(R24_,49,P2,7);R25_=dikaer(P5,7,P5,7);R25_=reshape(R25_,1,49);R25=dikaer(R25_,49,P1,7);R26_=dikaer(P6,7,xbing(P6,P5),7);R26_=reshape(R26_,1,49);R26=dikaer(R26_,49,P0,7);R27_=dikaer(xbing(P4,P5),7,P6,7);R27_=reshape(R27_,1,49);R27=dikaer(R27_,49,P1,7);m=

19、R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,R14,R15,R16,R17,R18,R19,R20,R21,R22,R23,R24,R25,R26,R27;R=bingji(m); %*e=0;ec=0;y_1=0;y_2=0;u=0;u_1=0;u_2=0;u_3=0;e_1=0;e_2=0;Eswith=10;throttle_1=0;brake_1=0;x=0 0 0;ts=0.001;sys=tf(1,1,2,1,inputdelay,0.5);dsys=c2d(sys,ts,zoh);num,den=tfdata(dsys,v);for k=

20、1:1:40000%*time(k)=k*ts;if(k2000) throttle=2000;endif(throttle-2000) throttle=-2000;end%*%/*%E=lisan(-50,50,3,e);EC=lisan(-20,20,3,ec);%/*%E_R(1)=lbell(E,1,4,-3);E_R(2)=trig(E,-3,-2,0);E_R(3)=trig(E,-3,-1,1);E_R(4)=trig(E,-2,0,2);E_R(5)=trig(E,-1,1,3);E_R(6)=trig(E,0,2,3);E_R(7)=rbell(E,1,4,3);EC_R(

21、1)=lbell(EC,1,4,-3);EC_R(2)=trig(EC,-3,-2,0);EC_R(3)=trig(EC,-3,-1,1);EC_R(4)=trig(EC,-2,0,2);EC_R(5)=trig(EC,-1,1,3);EC_R(6)=trig(EC,0,2,3);EC_R(7)=rbell(EC,1,4,3);%/*%U_R1=dikaer(E_R,7,EC_R,7);U_R1=reshape(U_R1,1,49);U_R2=jdikaer(U_R1,49,R,7);U_R=max(U_R2);u_L=mean(U_R);%/*%brake=-flisan(-2000,200

22、0,3,u_L);e_2=e_1;e_1=e;%/*if (e-Eswith)|(throttle_1=0) if(throttle=throttle_1) throttle_1=throttle;% throttle_1=throttle_1-throttle; u=throttle; Q(k)=u; W(k)=0; else throttle=0; throttle_1=throttle; u=throttle; Q(k)=u; W(k)=0; end else if(throttle_1=0) brake_1=brake; u=brake; W(k)=u; Q(k)=0; else th

23、rottle=0; throttle_1=throttle; u=throttle; Q(k)=u; W(k)=0; end endelse if(e=0) if(brake_1=0) throttle_1=throttle; u=throttle; Q(k)=u; W(k)=0; else brake=0; brake_1=brake; u=brake; end else u=0; W(k)=0; Q(k)=0; endend%*M(k)=u;N(k)=e;%*if (time(k)=0.5) u=0; else u=M(k-0.5/ts);endend% figure(1);plot(ti

24、me,vd,r,time,y,k,linewidth,2);xlabel(time(s);ylabel(vd,y);legend(,); figure(2);plot(time,Q,r,time,W,k,linewidth,2);xlabel(time(s);ylabel(u); figure(2);plot(time,Q,r,linewidth,2);xlabel(time(s);ylabel(u);figure(3);plot(time,W,r,linewidth,2);xlabel(time(s);ylabel(u); figure(4);plot(time,N,b);xlabel(ti

25、mes);ylabel(e); 附录资料:不需要的可以自行删除c语言典型问题处理方法小结循环问题(1)、数论问题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

26、)/is);b、辗转相除法求解 a1=a; b1=b; while(a%b!=0) t=a%b; a=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

27、,则程序输出36=2*2*3*3 。解一、看似简单,但要自己完整地写出来还真不容易!竟然还动用了goto语句,正好可以熟悉一下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)

28、;用计数器来解决每行输入不同的问题。 else printf(*%d,z); a/=z; goto loop; 解二: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)

29、 fz/=i; fm/=i; z=fz/fm; fzx=fz%fm; if(fzx=0) printf(%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

30、.hmain() float x,j=1,k,s,so; int n; scanf(%f,&x); s=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

31、=aj+1;aj+1=aj;aj=t; for(i=0;i10;i+) printf(%d ,ai); 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=

32、aj-1; aj-1=aj; aj=t; for(i=0;i10;i+) printf(%d ,ai);(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( ); fo

33、r(k=1;k=i;k+) 每行要打印的*数 printf(*); printf(n); c、 * * *解题要点:在出现空格的时候,在找到每行要打印的*个数和行数的关系后,还应找到空格和行数的关系,分不同的参数进行循环。此题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-

34、1-i)+1;k+) printf(*); printf(n); 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); * * * * * *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

35、 21 24 27 9 18 27 36 45 54 63 72 814、杨晖三角形11 11 2 11 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);

36、 for(i=0;i=0;i-) 蓝色部分可以简写为绿色部分coutai-1;4、如输入:ab1 3,;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个字符串。 使用一个两维数组贮存多

37、个字符串char a8181;注意:如何使用一个两维数组贮存多个字符串 int i,j; for(i=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#incl

38、ude stdio.h#include math.hmain() char str81; int n,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();sc

39、anf(%d,&x);while(x) if(x%16=10&x%16=0;j-)printf(%c,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

40、(a); for(i=0;ai!=0;i+) if(ai=-) if(ai-1=A&ai+1=a&ai+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;已经抽签决

41、定比赛名单。有人向队员大厅比赛的名单。A说他不和X比,C说他不和X,Z比。请编程序找出3对赛手的名单。#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 colorre

42、d ,yellow ,blue,white, black;color pri;int i,j,k,n=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:coutsetw(8)white;break;case black:coutsetw(8)black;break;defa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论