2 wshger wshger 于 2014.01.02 12:15 提问

请问这个c语言版的理发师问题,怎么改成java版的?,求大神赐教,感激不尽!!

#include
#include

#define random (rand()*10000)/RAND_MAX //用来产生随机数

main()
{
int chairs; //普通椅子数
int customers=0; //顾客数
int count=0; //循环中用来计量的
int waiting=0; //等候理发的人数
int finish=0; //已经理完发的人数
int work=0; //理发师是否在工作
int sleeping=0; //理发师是否在打瞌睡
char opendoor; //理发店是否开门接待顾客
char blank; //获取空白字符

printf("请输入理发店内的普通椅子数:\n");
scanf("%d",&chairs);
blank=getchar(); //这句话不太理解
printf("理发店内总共有%d把普通椅子。\n",chairs);
printf("要开门接待顾客吗?y/n\n");
opendoor=getchar();

while(opendoor!='y')
{
printf("对不起,尚未营业!\n");
blank=getchar();
printf("要开门接待顾客吗?y/n\n");
opendoor=getchar();
}

printf("开门迎接客人!\n"); //开门接待顾客

if(random%2) //刚开门时随机产生顾客,分有顾客和没顾客两种情况,若为真,则有顾客
{
printf("刚开门就有顾客到来。\n");
customers++; //顾客数加1
printf("理发师为第%d个顾客理发。\n",customers);
work=1; //进入工作状态

Loop:for(count=0;random%2&&count<=5;count++) /*理发师为一个顾客理发的期间随机产生顾客,分有顾客和没顾客两种情况,若为真则有顾客,且最多为来了五个*/
{
customers++;

printf("第%d个顾客到来了。\n",customers);
sleeping=0; //设定理发师不在打瞌睡状态

       if(work==1)      //判断是否正为顾客理发,是则新来顾客等待,否则不用等待
       {
            if(waiting<chairs)                         //判断是否有空椅子
            { 
                 printf("有%d把空椅子,顾客坐下等待。\n",chairs-waiting);
                 waiting++;
            }
            else
                 printf("没有空椅子,顾客离开。\n");
       }
       else
       {
            printf("理发师为第%d个顾客理发。\n",customers);
            work=1;
       }
   }

   if(work==1)                                         
   {
       Sleep(2000);                                  //为一个顾客理发需要时间
       printf("理发完成。\n");
       work=0;                                        //理发完成,理发师空闲
       finish++;                                         //理发完人数加1
   }

   if(finish>4)                //完成为4个人理发的任务,询问理发师是否继续工作
   {
       printf("已经为%d位顾客理发了,还有%d个顾客在等待,是否继续工作?y/n\n",finish,waiting);
       blank=getchar();
       opendoor=getchar();
       if(opendoor=='n')
           exit(0);
       sleeping=0;                                   //继续工作则改为清醒状态

   }

   if(waiting>0)                                      //看看是否有人在等待理发
   {  
       printf("有%d位顾客等待,理发师继续为等待的顾客理发\n",waiting);
       waiting--;
       work=1;                                           //有则进入工作状态
       goto Loop;
   }

   else                                                  //无则打瞌睡
   {   
       if(sleeping==0)
       {
           printf("没有顾客来理发,理发师打瞌睡中……\n");
           sleeping=1;
       }
       goto Loop;                                      //继续边打瞌睡边等顾客
   }

}

else //刚开门时随机产生顾客,若为假,则无顾客,理发师打瞌睡
{

if(sleeping==0)
{
printf("没有顾客来理发,理发师打瞌睡中……\n");
sleeping=1;
}
goto Loop;
}
}

1个回答

u013264396
u013264396   2014.01.02 13:04

人数统计aw6uw经济区为

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!