某生产车间有12 名员工,编号为: 001、002、003、… 012。由于工作需要, 在生产旺季取消了周末公休日,即周一至周日均要上班,因此需要实行员工轮休制度。每天安排两人休息,一星期中每人只能休息一天。每个员工可以预先自认为合适的休息日。用C语言编程
时间: 2023-12-10 14:40:37 浏览: 154
c语言编写职员轮班休息程序
以下是一种实现员工轮休制度的C语言代码,采用了简单的数组和循环结构:
```c
#include <stdio.h>
int main() {
int i, j, k;
int rest[12] = {0}; // 记录每个员工的休息日,0表示未安排
for (i = 0; i < 7; i++) { // 一星期七天
printf("Day %d:\n", i+1);
for (j = 0; j < 2; j++) { // 每天安排两人休息
printf(" Rest #%d and #%d.\n", j*2+1, j*2+2);
for (k = 0; k < 12; k++) { // 遍历每个员工
if (rest[k] == 0) { // 如果这个员工还没安排休息
printf(" Employee #%03d, please choose a rest day (1-7): ", k+1);
int day;
scanf("%d", &day);
if (day < 1 || day > 7) { // 如果输入的休息日不合法
printf(" Invalid input, please choose again.\n");
k--; // 让这个员工重新选择
} else {
int conflict = 0;
for (int l = 0; l < 12; l++) {
if (rest[l] == day && l != k) { // 如果这个休息日已经被别人选了
conflict = 1;
break;
}
}
if (conflict) { // 如果有冲突
printf(" The rest day has been chosen by others, please choose again.\n");
k--;
} else { // 如果没有冲突
rest[k] = day;
}
}
}
}
}
}
printf("Rest schedule:\n");
for (i = 0; i < 12; i++) {
printf(" Employee #%03d: rest on Day %d\n", i+1, rest[i]);
}
return 0;
}
```
该代码使用了三层嵌套循环,分别处理一星期中的每一天、每一天中的两个休息员工,以及每一个员工选择休息日的过程。在每个员工选择休息日时,程序会先检查输入的休息日是否合法,然后再检查这个休息日是否已经被其他员工选了,如果有冲突则要求该员工重新选择。最后程序输出每个员工的休息日安排。
阅读全文