在C语言中,可以使用多种方法来实现值班表。以下是两种常见的方法:
方法一:使用switch语句
这种方法通过用户输入的整数来表示星期几,并使用switch-case语句来匹配并打印值班人员信息。代码如下:
```c
include
int main() {
int day;
printf("请输入要查询的日期(1-7): ");
scanf("%d", &day);
switch (day) {
case 1:
printf("星期一值班的是张三。\n");
break;
case 2:
printf("星期二值班的是李四。\n");
break;
case 3:
printf("星期三值班的是王五。\n");
break;
case 4:
printf("星期四值班的是赵六。\n");
break;
case 5:
printf("星期五值班的是丁七。\n");
break;
case 6:
printf("星期六值班的是周小华。\n");
break;
case 7:
printf("星期日为休息日,无人值班。\n");
break;
default:
printf("输入错误,请输入1-7之间的整数。\n");
break;
}
return 0;
}
```
方法二:使用数组和条件判断
这种方法通过用户输入的条件来确定医生的值班顺序。代码如下:
```c
include include define MAX_DOCTORS 7 define MAX_CONDITIONS 10 typedef struct { int day; char doctor; } Condition; int main() { int n; printf("请输入医生数量: "); scanf("%d", &n); Condition conditions[MAX_CONDITIONS]; int condition_count = 0; for (int i = 0; i < condition_count; i++) { char op1, op2, op3; int day1, day2, day3; char doctor1, doctor2, doctor3; printf("请输入条件 %d (编号 比较运算符 编号 天数): ", i + 1); scanf(" %c %c %d %c %d %c", &op1, &op2, &day1, &op3, &day2, &doctor1); conditions[condition_count].day = day1; conditions[condition_count].doctor = doctor1; if (op2 == '>') { conditions[condition_count].doctor = doctor2; } else if (op2 == '<') { conditions[condition_count].doctor = doctor3; } condition_count++; } // 排序条件 for (int i = 0; i < condition_count - 1; i++) { for (int j = 0; j < condition_count - 1 - i; j++) { if (conditions[j].day > conditions[j + 1].day) { Condition temp = conditions[j]; conditions[j] = conditions[j + 1]; conditions[j + 1] = temp; } } } // 输出值班表 printf("星期一至星期日的值班人员为:\n"); for (int i = 0; i < n; i++) { printf("%c\n", conditions[i].doctor); } return 0; } ``` 这两种方法各有优缺点,方法一简单直观,适合快速查询特定日期的值班人员;方法二功能更强大,适合处理复杂的条件关系,但实现起来较为复杂。根据实际需求选择合适的方法即可。