• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: C/C++
  • 标签: c/c++  

资源简介

理发店里有一位理发师,一把理发椅和N把供等候理发的顾客坐的椅子 如果没有顾客,则理发师便在理发椅上睡觉。当一个顾客到来时,他必须先唤醒理发师。如果顾客到来时理发师正在理发,则如果有空椅子,可坐下来等;否则离开。

资源截图

代码片段和文件信息

#include
#include
#include
#define random (rand()*10000)/RAND_MAX //用来产生随机数
int main()
{
 int chairs=10; //普通椅子数
 int customers=0; //顾客数
 int count=0; //循环中用来计量的
 int waiting=0; //等候理发的人数
 int finish=0; //已经理完发的人数
 int work=0; //理发师是否在工作
 int sleeping=0; //理发师是否在打瞌睡
 char opendoor; //理发店是否开门接待顾客
 char blank; //获取空白字符 
 blank=getchar(); //这句话不太理解
 printf(“要开门接待顾客吗?y/n\n“);
 opendoor=getchar();
 printf(“理发店内总共有%d把普通椅子。\n“chairs);
 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%3&&count<=5;count++) /*理发师为一个顾客理发的期间随机产生顾客,分有顾客和没顾客两种情况若为真则有顾客且最多为来了五个*/
 {
    customers++;
    printf(“第%d个顾客到来了。\n“customers);
    sleeping=0; //设定理发师不在打瞌睡状态
    if(work==1)      //判断是否正为顾客理发,是则新来顾客等待,否则不用等待
    {
        if(waiting        { 
            printf(“有%d把空椅子,顾客坐下等待。\n“chairs-waiting);
            waiting++;
        }
        else
            printf(“没有空椅子,顾客离开。\n“);
    }
       else
       {
            printf(“理发

评论

共有 条评论