vs2010
在功能表先选择1输入数据后,再选择2的时候会出现闪退的情况,并且会出现三行线程已退出,返回值为1的输出,不是很清楚怎么解决。
程序部分源代码:
void main()
{
LinkQueue q1,q2;
InitQueue(q1);
InitQueue(q2);
int a[13][2],m,n;
int b[40],l=0,k=0;
int psum=0,bsum=0;
int flag;
int time;
int x;
cout<<"请输入今日校车时刻表:"<<endl;
cout<<"(时间格式为2位小时数(00-23)和2位分钟数(00-59),如0720)"<<endl;
for(m=0;m<13;m++)
for(n=0;n<2;n++)
cin>>a[m][n];//输入校车时刻表
cout<<"请注意发车时间表!"<<endl;
cout<<"若未到发车时间,人数已满,则可安排发车."<<endl;
cout<<"若已到发车时间,人数未满,也应安排发车."<<endl;
do {
cout<<"功能表:"<<endl;
cout<<"1---乘客到校车站进行登记"<<endl;
cout<<"2---乘客上车"<<endl;
cout<<"3---命令校车发车"<<endl;
cout<<"4---输出当前乘客排队情况"<<endl;
cout<<"5---查看今日乘客数量以及发车数量"<<endl;
cout<<"6---结束程序运行"<<endl;
cout<<"请输入你的选择(1-6):";
do {
cin>>flag;
if(flag<1 || flag>6) cout<<"输入错误,请重新输入:";
} while(flag<1 || flag>6);
switch(flag) {
case 1:
cout<<"请输入乘客的学号和工号,假定001--100为教师,否则为学生."<<endl;
cout<<"可以输入多位乘客,用空格分开,直到输入-1为止."<<endl;
while(1){
cin>>x;
if(x==-1) break;
if(x<100) EnQueue(q1,x);
else EnQueue(q2,x);
} break;
case 2:
if(EmptyQueue(q1)&&EmptyQueue(q2))
cout<<"暂无乘客需要乘坐校车"<<endl;
else {
while(!EmptyQueue(q1)&&l<40) {
b[l]=OutQueue(q1);
l++;
}
while(!EmptyQueue(q2)&&l<40) {
b[l]=OutQueue(q2);
l++;
}
}
if(l<=40&&EmptyQueue(q1)&&EmptyQueue(q2))
cout<<"教师已全部上车,学生已全部上车."<<endl;
else {
while(!EmptyQueue(q2)&&k<40) {
b[k]=OutQueue(q2);
k++;
}
cout<<"教师已全部上车,学生已全部上车."<<endl;
} break;