C语言程序设计小练习(窗口服务指示系统)

窗口服务指示系统:

一个营业服务厅,有8个或者16个或者32个服务窗口办理不同业务,每隔2秒钟随机有客户到不同业务窗口报道(可能重复,客户需要等待),同时提示当前的所有窗口服务情况,当某个窗口受理客户服务后,记录相应窗口的服务状态,直到全部窗口用于受理客户业务,看看当第一次达到全部窗口进行业务受理使用了多少时间?

每隔两秒 --->  sleep(2);
随机数据 --->  rand();

函数使用帮助  man 3 函数名


这道题的思路:为什么我的窗口数刚好是8的整数呢?好像一个字节刚好有8位,那我们是不是刚好可以用一个字节的数据类型char的每个位的状态作为我们窗口的服务状态呢。

我的答案:

#include<stdio.h>
#include <stdlib.h>


int main(int argc,char *argv[])
{
int timecount;           //计算循环次数
int count;
unsigned char Ckou=0x00;       // 一个字节,开始时所有窗口置0
unsigned char Rpeo;                //产生随机数

for(timecount=0;Ckou!=0xFF;timecount++)         
{
sleep(2);
Rpeo=rand()%8;                       //产生0-7的随机数
printf("Rpeo=%hhd\n",Rpeo);
Ckou|=(0x01<<Rpeo);             将窗口数对应的位置1


for(count=0;count<8;count++)       //循环输出各窗口的状态
{if(Ckou&(0x01<<count))        //或者if((Ckou>>count)&0x1 == 0x1)
printf("waiting!%d\n",count);         //相与为1说明当前窗口正在使用
else
printf("ok!%d\n",count);
}




}
printf("total time=%d\n",timecount*2);
return 0;


}




上面那道题难度不是很大,接着我们做一下下面这道题。



窗口服务指示系统2:

继续上述情景,假如每个客户业务的处理时间为随机(1-3秒,业务生成时确定任务处理时间),同时需要对排队客户进行
服务(同一窗口,不同用户有重复的业务请求),当窗口全满时,停止接受新客户的业务,待窗口空置数超过一半时恢复业务请求,
统计哪项业务最受欢迎,及其平均处理时间(每十单统计)

注意:记录每个窗口的排队人数,并需要根据顺序处理完毕。

(答案我到时会在评论里公布,因为我暂时还没想出来吐舌头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值