您的位置:首页 > 其它

哪个大夫哪天值班

2017-01-22 15:37 190 查看
哪个大夫哪天值班

医院有A、B、C、D、E、F、G七位大夫,在一星期内(星期一至星期天)每人要轮流值班一天。现在已知:

A大夫比C大夫晚一天值班;

D大夫比E大夫晚二天值班;

B大夫比G大夫早三天值班;

F大夫的值班日在B和C大夫的中间,且是星期四;
请确定每天究竟是哪位大夫值班?




*问题分析与算法设计
由题目可推出如下已知条件:

*F是星期四值班;

*B值班的日期在星期一至星期三,且三天后是G值班;

*C值班的日期在星期五至星期六,且一天后是A值班;

*E两天后是D值班;E值班的日期只能在星期一至星期三;
在编程时用数组元素的下标1到7表示星期一到星期天,用数组元素的值分别表示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);
}
}
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: