55.哪个大夫哪天值班

医院有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#includeint a[8];

char *day[]={"","MONDAY","TUESDAY","WEDNESDAY","THURSDAYT",

"FRIDAY","SATUDAY","SUNDAY"}; /*建 立星期表*/

void 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);

}

}

}

}

*运行结果

Doctor E is on duty MONDAY. (星期一:E)

Doctor B is on duty TUESDAY. (星期二:B)

Doctor D is on duty WEDNESDAY. (星期三:D)

Doctor F is on duty THUESDAY. (星期四:F)

Doctor G is on duty FRIDAY. (星期五:G)

Doctor C is on duty SATURDAY. (星期六:C)

Doctor A is on duty SUNDAY. (星期日:A)

*思考题

在本题的求解过程中,我们只考虑了一星期之内的情况,没有考虑跨周的情况。对于“B大夫比G大夫早三天值班的”条件只是简单的认为是在同一周内早三天。若考虑跨周的情况就可能出现:B大夫星期一值班,而G大夫是上周的星期五。同样,对“F大夫的值班日在B和C大夫的中间”这个条件,也可以扩展为:“只要F大夫的值班日在B和C大夫的中间就可以”。

请考虑允许跨周的情况下,可能的时间安排表。

C趣味程序百例(17)哪个大夫哪天值班.doc

下载Word文档到电脑,方便收藏和打印[全文共1440字]

编辑推荐:

下载Word文档

c语言医生值班题目讲解,C趣味程序百例(17)哪个大夫哪天值班相关推荐

  1. 谁在说谎c语言编译,C趣味程序百例(15)谁在说谎

    50.谁在说谎 张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎.现在问:这三人中到底谁说的是真话,谁说的是假话? *问题分析与算法设计 分析题目,每个人都有可能说的是真话,也有可能说的是 ...

  2. C语言编程验证卡布列克,C趣味程序百例(26)卡布列克常数

    83.卡布列克常数 验证卡布列克运算.任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律: 1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的的四位数: 2)将组成该四位 ...

  3. c 语言趣味入门,Cc++趣味程序百例(献给CC++初学者).doc

    Cc趣味程序百例(献给CC初学者) C/c++趣味程序百例(獻給C/C++初學者) 1.繪製餘弦曲線 2.繪製餘弦曲線和直線 3.繪製圓 4.歌星大獎賽 5.求最大數 6.高次方數的尾數 7.階乘尾數 ...

  4. 1到9组成3个3位数用C语言,C趣味程序百例(18)1~9分成1:2:3的三个3位数

    60.1~9分成1:2:3的三个3位数 将1到9 这九个数字分成三个3位数,分求第一个3位数,正好是第二个3位数的二倍,是第三个3位数的三倍.问应当怎样分法. *问题分析与算法设计 问题中的三个数之间 ...

  5. 黑白子交换c语言思路,C趣味程序百例(28)黑白子交换

    87.黑白子交换 有三个白子和三个黑子如下图布置: ○ ○ ○ . ● ● ● 游戏的目的是用最少的步数将上图中白子和黑子的位置进行交换: ● ● ● . ○ ○ ○ 游戏的规则是:(1)一次只能移动 ...

  6. c/c++ 趣味程序百例

    C/c++趣味程序百例(献给C/C++初学者) C/c++趣味程序百例(献给C/C++初学者) 1.绘制余弦曲线 2.绘制余弦曲线和直线 3.绘制圆 4.歌星大奖赛 5.求最大数 6.高次方数的尾数 ...

  7. C语言趣味程序百例精解

    1.绘制余弦曲线 在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 *问题分析与算法设计 如果在程序中使用数组,这个问题十分简单.但若规定不能使用数组,问题就变得不容易了 ...

  8. C/C++趣味程序百例

    1.绘制余弦曲线  2.绘制余弦曲线和直线  3.绘制圆  4.歌星大奖赛  5.求最大数  6.高次方数的尾数  7.阶乘尾数零的个数    8.借书方案知多少  9.杨辉三角形   10.数制转换 ...

  9. C语言编程验证卡布列克,C语言生趣程序百例精解之JAVA实现(83):卡布列克常数...

    C语言趣味程序百例精解之JAVA实现(83):卡布列克常数 C语言趣味程序百例精解之JAVA实现: public class Test83{ public static void main(Strin ...

最新文章

  1. linux lnmp yum,yum安装LNMP
  2. IronRuby:元编程特性【method_missing】的使用
  3. windows下的sysprep
  4. 后台原理_从浏览器如何进入路由器后台【详细介绍】
  5. python调用api做用户登录认证_(二)Python调用Zabbix api之从入门到放弃——登录并获取身份验证令牌...
  6. MySQL(九)插入、更新和删除
  7. Mybatis缓存配置
  8. 动手造轮子:写一个日志框架
  9. 使用openssl完成aes-cbc模式的数据加解密,输入和输出都是字符串的形式
  10. 070——VUE中vuex之使用getters计算每一件购物车中商品的总价
  11. MicroNets:更小更快更好的MicroNet,三大CV任务都秒杀MobileNetV3
  12. bzoj4593: [Shoi2015]聚变反应炉
  13. matlab 常用函数或符号用法总结
  14. 想给视频去色并加马赛克就用它
  15. 免费下载百度文库需下载券文件
  16. Stata: 空间计量模型溢出效应的动态呈现
  17. JSP教程|1小时玩转JSP网站开发技术
  18. 短文本相似度计算-simHash从原理到实现
  19. SNAP 4. 使用snap进行地物光谱分析
  20. Kubernetes(K8S)入门到运维 ( 六) Helm与功能组件及证书年限

热门文章

  1. python江红余青松_python上机实践重点代码江红余青松版
  2. 珠宝erp是否能带回珠宝行业的“黄金时代”?
  3. 倒计时 限制次数记录 公共操作/验证的静态类
  4. 教育大数据应用技术国家工程实验室正式启动
  5. Python探索性数据分析(EDA)统计数据和建模
  6. python怎么自动生成文档_用 Python 自动生成 Word 文档
  7. synchronized同步机制——如果你愿意一层一层剥开我的心
  8. 拖延的原因、误区、及建议
  9. 《性格色彩》测试加分析
  10. python 实现 代理模式