某生产车间有12名员工,编号为: 001、002、003、... 012。由于工作需要,在生产旺季取消了周末公休日,即周一至周日均要上班,因此需要实行员工轮休制度。每天安排两人休息,一星期中每人只能休息一天。每个员工可以预先自行选择一个 自认为合适的休息日。请用C语言编制程序,打印轮休的所有可能方案。尽可能做到使每个人都满意,保证排班的公平性。
时间: 2023-12-10 17:40:57 浏览: 194
c语言编写职员轮班休息程序
以下是一个简单的C语言程序,可以实现你的需求。
```c
#include <stdio.h>
int main()
{
int schedule[12][7]; // 存储轮休方案的数组
int i, j, k, l, m, n;
// 初始化轮休方案数组为0
for (i = 0; i < 12; i++) {
for (j = 0; j < 7; j++) {
schedule[i][j] = 0;
}
}
// 每个员工选择一个自认为合适的休息日
int rest_day[12];
printf("请每个员工选择一个自认为合适的休息日(1-7):\n");
for (i = 0; i < 12; i++) {
printf("员工 %03d 选择的休息日:", i + 1);
scanf("%d", &rest_day[i]);
schedule[i][rest_day[i]-1] = 1; // 将休息日标记为1
}
// 打印轮休方案
printf("轮休方案如下:\n");
for (i = 0; i < 7; i++) {
printf("第%d天:", i+1);
for (j = 0; j < 12; j++) {
if (schedule[j][i] == 0) { // 如果该员工当天不休息
printf("%03d ", j+1);
}
}
printf("\n");
}
return 0;
}
```
程序中,首先定义了一个12行7列的二维数组schedule,用于存储轮休方案。数组中每个元素表示某个员工在某天是否休息,0表示不休息,1表示休息。然后通过循环初始化数组所有元素为0。
接着,要求每个员工选择一个自认为合适的休息日,并将该员工的休息日在schedule数组中标记为1。
最后,按天循环遍历schedule数组,打印当天不休息的员工编号。
运行程序后,输入每个员工选择的休息日即可得到所有轮休方案。注意,程序中没有考虑到有些员工可能会选择相同的休息日,需要在输入时进行判断和处理。
阅读全文