//飞机分配座位 #include<iostream> using namespace std; void mainyuan(int [],int* ,char);//满员后处理 void syt(int [],int);//用图形打印座位的位置 const int size=20; int main() { int seat[size]={0}; int td=0,pt=size/2;//头等,普通 int key=0;//记录用户输入 char yn; do { cout<<"欢迎来订机票,头等舱按1,普通舱按2"<<endl; if(cin>>key)//如果输入为int型 { if(key==1&&td<size/2)//选择头等舱,而且有位置 { seat[td]=1; syt(seat,td); td++; } else if(key==1&&pt<size)//选择头等舱,不过没位置,但是普通舱有位置 { cout<<"头等舱没位置了,要不要普通舱?y or n?"<<endl; cin>>yn; mainyuan(seat,&pt,yn); } else if(key==2&&pt<size)//选择普通,而且有位置 { seat[pt]=1; syt(seat,pt); pt++; } else if(key==2&&td<size/2)//选择普通,不过没位置,但是普通舱有位置 { cout<<"普通舱没位置了,要不要头等舱? y or n?"<<endl; cin>>yn; mainyuan(seat,&td,yn); } if(key!=1&&key!=2)//如果输入不是1也不是2 cout<<"不知道你输入的是什么!"<<endl; } else cout<<"输入错误,再来一次!"<<endl; } while(td<size/2&&pt<size); cout<<"都没位置了,下一班其实是半小时后起飞,再等等吧!"<<endl; return 0; } void mainyuan(int seat[],int *p,char key) { if (key=='n') cout<<"不要算了,下一班飞机半个月后起飞,你慢慢等吧,!"<<endl; else if(key=='y') { seat[*p]=1; syt(seat,*p); *p++; } else if(key!='y'&&key!='n') cout<<"老大你输入错误了吧?"<<endl; } void syt(int seat[], int wz) { cout<<"你的座位号是"<<wz+1<<"如图所示:"<<endl; for(int i=0;i<size;i++) { if(i%5==0) cout<<endl; if(i==wz) cout<<"*"; else cout<<"o"; } cout<<endl; } 出现错误啦!! 当一个舱满员后直接结束while循环, 找不出错误,请高手指教!