[0]>need[i][0]||request[i][1]>need[i][1]||request[i][2]>need[i][2];)//若请求向量大于需求资源,则认为是输入错误,要求重新输入{ printf("数据输入有误,请重试!\n请输入进程P%d的请求向量Request%d:",i,i); for(n=0;n<3;n++) scanf("%d",&request[i][n]); } if(request[i][0]<=available[0]&&request[i][1]<=available[1]&&request[i][2]<=available[2])//判断系统是否有足够资源提供分配{ printf("系统正在为进程P%d分配资源……\n",i); change();//分配资源 j=0; } else printf("系统没有足够的资源,进程P%d需要等待。\n",i); if(j==0)//j=0表示系统有足够资源分配的情况{ printf("当前系统资源情况如下:\n");//输出分配资源后的系统资源分配情况 output(); if(check()==0)//若找不到安全系列,则之前的资源分配无效{ printf("本次资源分配作废,恢复原来的资源分配状态。\n"); for(m=0;m<3;m++)//恢复分配资源前的系统资源状态{ available[m]+=request[i][m]; allocation[i][m]-=request[i][m]; need[i][m]+=request[i][m]; } output();//输出系统资源状态} } printf("是否还有进程请求资源?\n是:输入1\n否:输入0\n请输入:"); scanf("%d",&j);//若还有进程请求资源,j=1,之前的for循环条件满足?}?end();}