值班

医院有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表示星期一到星期天,
 1 #include <stdio.h>
  2 
  3 int main()
  4 {
  5     int i, j, t;
  6     int a[8]={0};
  7     char *day[]={"","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"};
  8     a[4]=6;
  9     for (i = 1;i <= 3; i++)
 10     {
 11         a[i]=2;
 12         if (!a[i+3])
 13         {
 14             a[i+3]=7;
 15         }
 16         else
 17         {
 18             a[i]=0;
 19             continue;
 20         }
 21         for (t = 1; t <= 3; t++)
 22         {
 23             if (!a[t])
 24              {
 25                  a[t]=5;
 26              }
 27             else
 28             {
 29                 continue;
 30             }
 31             if (!a[t+2])
 32             {
 33                 a[t+2]=4;
 34             }
 35             else
 36             {
 37                 a[t]=0;
 38                 continue;
 39             }
 40             for (j = 5; j < 7; j++ )
 41             {
 42                 if (!a[j])
 43                 {
 44                     a[j]=3;
 45                 }
 46                 else
 47                 {
 48                     continue;
 49                 }
 50                 if (!a[j+1])
 51                 {
 52                     a[j+1]=1;
 53                 }
 54                 else
 55                 {
 56                     a[j]=0;
 57                     continue;
 58                 }
 59                 for (i = 1; i <= 7; i++)
 60                 {
 61                     printf("Doctor %c is on duty %s.\n",'A'+a[i]-1,day[i]);
 62                 }
 63             }
 64         }
 65     }
 66     return 0;
 67 }
[root@localhost 55]# ./a.out 
Doctor E is on duty MONDAY.
Doctor B is on duty TUESDAY.
Doctor D is on duty WEDNESDAY.
Doctor F is on duty THURSDAY.
Doctor G is on duty FRIDAY.
Doctor C is on duty SATURDAY.
Doctor A is on duty SUNDAY.
用数组元素的值分别表示A~F七位大夫。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值