某银行有一个客户办理业务站,在一天内随机地有客户到达,设每位客户的业务办理时间是某个范围内的值。设只有一个窗口,一位业务人员,要求程序模拟统计在一天时间内,所有客户的平均等待时间。模拟数据按客户到达的先后顺序依次由键盘输入,对应每位客户有两个数据,到达时刻和需要办理业务的时间。c语言代码实现
时间: 2023-06-11 17:05:36 浏览: 110
以下是一个简单的C语言程序,用于模拟统计一天时间内所有客户的平均等待时间:
```
#include <stdio.h>
int main() {
int n, i, arr_time, svc_time, start_time, wait_time, total_wait_time = 0;
float avg_wait_time;
printf("请输入客户数:\n");
scanf("%d", &n);
start_time = 0; // 初始化第一个客户的开始办理时间
for (i = 1; i <= n; i++) {
printf("请输入第%d位客户的到达时刻和需要办理业务的时间:\n", i);
scanf("%d %d", &arr_time, &svc_time);
if (start_time <= arr_time) { // 如果业务人员在客户到达之前已经处理完上一个客户的业务,则无需等待,直接开始处理
start_time = arr_time + svc_time;
} else { // 否则需要等待
wait_time = start_time - arr_time;
total_wait_time += wait_time; // 累加等待时间
start_time += svc_time; // 更新开始办理时间
}
}
avg_wait_time = (float) total_wait_time / n;
printf("所有客户的平均等待时间为:%.2f\n", avg_wait_time);
return 0;
}
```
上述程序中,我们定义了几个变量:
- `n`:表示客户数。
- `arr_time`:表示客户到达时刻。
- `svc_time`:表示客户需要办理的业务时间。
- `start_time`:表示当前业务人员可以开始办理客户业务的时间。
- `wait_time`:表示客户等待的时间。
- `total_wait_time`:表示所有客户的等待总时间。
程序的核心部分是一个循环,该循环依次处理所有客户的到达时间和业务办理时间:
```
for (i = 1; i <= n; i++) {
printf("请输入第%d位客户的到达时刻和需要办理业务的时间:\n", i);
scanf("%d %d", &arr_time, &svc_time);
if (start_time <= arr_time) { // 如果业务人员在客户到达之前已经处理完上一个客户的业务,则无需等待,直接开始处理
start_time = arr_time + svc_time;
} else { // 否则需要等待
wait_time = start_time - arr_time;
total_wait_time += wait_time; // 累加等待时间
start_time += svc_time; // 更新开始办理时间
}
}
```
如果业务人员在客户到达之前已经处理完上一个客户的业务,则无需等待,直接开始处理。否则需要等待,等待时间为当前业务人员可以开始办理业务的时间减去客户到达的时间,等待结束后,业务人员开始办理当前客户的业务。在每个客户的等待时间结束后,我们累加等待时间以便后面计算平均等待时间:
```
total_wait_time += wait_time; // 累加等待时间
```
最后,我们计算所有客户的平均等待时间,输出结果:
```
avg_wait_time = (float) total_wait_time / n;
printf("所有客户的平均等待时间为:%.2f\n", avg_wait_time);
```
阅读全文