哪个大夫哪天值班

医院有ABCDEFG

七位大夫,在一星期内(星期一至星期天)

每人要轮流值班一天。现在已知:

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

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

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

F大夫的值班日在BC大夫的中间,且是星期四;

请确定每天究竟是哪位大夫值班?

#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;

	for(i=1;i<=3;i++)
	{ 
		a[i]=2;

		if(!a[i+3])
		a[i+3]=7;

		else
		{
			a[i]=0;continue;
		}

		for(t=1;t<=3;t++)
		{ 
			if(!a[t])
			a[t]=5;
			else
			continue; 
			if(!a[t+2])
			a[t+2]=4;
			else
			{
				a[t]=0;continue;
			}
			for(j=5;j<7;j++)
			{ 
				if(!a[j])
				a[j]=3;
				else
				continue; 
				if(!a[j+1])
				a[j+1]=1;
				else
				{
					a[j]=0;continue;
				}
				for(i=1;i<=7;i++)
				printf("Doctor %c is on duty %s.\n",'A'+a[i]-1,day[i]);
				exit(0);
				}
		}
	}
}

这是一道较为复杂的逻辑推理题,我们可以通过编写程序来实现自动化推理。 首先,我们可以定义一个列表来存储7位大夫的名字,如下所示: ``` doctors = ['A', 'B', 'C', 'D', 'E', 'F', 'G'] ``` 接着,我们可以定义一个字典来存储每位大夫在一星期内的值班情况,如下所示: ``` schedule = { 'Monday': None, 'Tuesday': None, 'Wednesday': None, 'Thursday': None, 'Friday': None, 'Saturday': None, 'Sunday': None } ``` 然后,我们可以根据题目中给出的条件来逐步推断出每天值班人员,代码如下所示: ``` # A大夫比C大夫1天值班 for day in range(2, 8): if schedule[day_to_weekday[day-1]] == 'C': schedule[day_to_weekday[day]] = 'A' break # D大夫比E大夫1天值班 for day in range(2, 8): if schedule[day_to_weekday[day-1]] == 'E': schedule[day_to_weekday[day]] = 'D' break # E大夫比B大夫2天值班 for day in range(3, 8): if schedule[day_to_weekday[day-2]] == 'B': schedule[day_to_weekday[day]] = 'E' break # B大夫比G大夫4天值班 for day in range(5, 8): if schedule[day_to_weekday[day-4]] == 'G': schedule[day_to_weekday[day]] = 'B' break # F大夫比B大夫1天值班 for day in range(2, 8): if schedule[day_to_weekday[day-1]] == 'B': schedule[day_to_weekday[day]] = 'F' break # F大夫比C大夫1天值班 for day in range(3, 8): if schedule[day_to_weekday[day-2]] == 'C': schedule[day_to_weekday[day]] = 'F' break # F大夫星期四值班 schedule['Thursday'] = 'F' ``` 其中,我们使用了一个名为`day_to_weekday`的字典来将从2到8的数字转换为对应的星期几,代码如下所示: ``` day_to_weekday = { 2: 'Monday', 3: 'Tuesday', 4: 'Wednesday', 5: 'Thursday', 6: 'Friday', 7: 'Saturday', 8: 'Sunday' } ``` 最后,我们可以将每天值班人员输出到控制台上,代码如下所示: ``` for day, doctor in schedule.items(): print(f'{day}: {doctor}') ``` 完整代码如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值