哪个大夫哪天值班

来源:互联网 发布:js加密 有用么 编辑:程序博客网 时间:2024/04/27 17:47

哪个大夫哪天值班


医院有ABCDEFG七位大夫,在一星期内(星期一至星期天)每人要轮流值班一天。现在已知:
A大夫比C大夫晚一天值班;
D大夫比E大夫晚二天值班;
B大夫比G大夫早三天值班;
F大夫的值班日在BC大夫的中间,且是星期四;
请确定每天究竟是哪位大夫值班?


*问题分析与算法设计
由题目可推出如下已知条件:
*F是星期四值班;
*B值班的日期在星期一至星期三,且三天后是G值班;
*C值班的日期在星期五至星期六,且一天后是A值班;
*E两天后是D值班;E值班的日期只能在星期一至星期三;
在编程时用数组元素的下标17表示星期一到星期天,用数组元素的值分别表示A~F七位大夫。

#include<stdio.h>#include<stdlib.h>int a[8];char *day[]={"","MONDAY","TUESDAY","WEDNESDAY","THURSDAYT","FRIDAY","SATUDAY","SUNDAY"}; /*建 立星期表*/int main(){int i,j,t;a[4]=6; /*星期四是F值班*/ for(i=1;i<=3;i++){a[i]=2; /*假设B值班的日期*/if(!a[i+3]) a[i+3]=7; /*若三天后无人值班则安排G值班*/else{ a[i]=0;continue;} /*否则B值班的日期不断对*/for(t=1;t<=3;t++) /*假设E值班的时间*/{if(!a[t]) a[t]=5; /*若当天无人值班则安排E值班*/else continue;if(!a[t+2]) a[t+2]=4; /*若E值班两天后无人值班则应为D*/else{ a[t]=0;continue;} /*否则E值班的日期不对*/for(j=5;j<7;j++){if(!a[j]) a[j]=3; /*若当天无人值班,则安排C值班*/else continue;if(!a[j+1]) a[j+1]=1; /*C之后一天无人值班则应当是A值班*/else{ a[j]=0;continue;} /*否则A值班日期不对*/for(i=1;i<=7;i++) /*安排完毕,输出结果*/printf("Doctor %c is on duty %s.\n",'A'+a[i]-1,day[i]);exit(0);}}}}





0 0