《西北工业 算法设计与分析B卷 参考 答案》由会员分享,可在线阅读,更多相关《西北工业 算法设计与分析B卷 参考 答案(5页珍藏版)》请在金锄头文库上搜索。
1、180 算法设计与分析西北工业大学网络教育学院2019年10月大作业学习中心: 课程名称: 算法设计与分析 考试时间 120分钟 考试形式:大作业 A卷 B卷 学号姓名考试日期 年 月 日编程题(C、JAVA、C+等均可)(每小题50分,共100分)1医院有A、B、C、D、E、F、G七位大夫,在一星期内(星期一至星期天)每人要轮流值班一天。现在已知: A大夫比C大夫晚一天值班; D大夫比E大夫晚二天值班; B大夫比G大夫早三天值班; F大夫的值班日在B和C大夫的中间,且是星期四;请确定每天究竟是哪位大夫值班?并用计算机实现。JAVA实现的具体代码如下:import java.util.Arra
2、yList;public class Hospital public static void main(String args) ArrayListlist=new ArrayList();list.add(sun);list.add(mon);list.add(tus);list.add(wed);list.add(thu);list.add(fri);list.add(sat); int a,b,c,d,e,f,g,loop; /定义整形变量 char ch=A; /定义字符变量 String day = null; f=list.indexOf(thu); /按照题意,F医生是星期四值班
3、 for(a=list.indexOf(sun);a=list.indexOf(sat);a+) /需要逐个检查A医生星期几符合条件 if(a!=f) /A医生值班日子不应该与F医生相同 for(b=list.indexOf(sun);bb) /B医生值班日子不应该与A医生相同,且F在B之后 for(c=list.indexOf(sun);c=list.indexOf(sat);c+) /逐个检查C医生星期几符合条件 if(c!=a)&(c!=b)&(c!=f)&(a=c+1)&(fc) /C医生值班日子不应该与A,B,F医生相同,且A比C晚一天 for(d=list.indexOf(sun)
4、;d=list.indexOf(sat);d+) /逐个检查D医生星期几符合条件 if(d!=a)&(d!=b)&(d!=c)&(d!=f)&(c=d+3) /D医生值班日子不应该与A,B,C,F医生相同,且C与D之后3天 for(e=list.indexOf(sun);e=list.indexOf(sat);e+) /逐个检查E医生星期几符合条件 if(e!=a)&(e!=b)&(e!=c)&(e!=d)&(e!=f)&(d=e+2) /E值班不应该与A,B,C,D,E,F相同,且E与D前2天 for(g=list.indexOf(sun);g=list.indexOf(sat);g+) /
5、逐个检查G医生条件 if(g!=a)&(g!=b)&(g!=c)&(g!=d)&(g!=e)&(g!=f)&(g=b+2) /G值班不应该与A,B,C,D,E,F相同,且G与B后2天 /符合以上条件才能执行以下工作 for(loop=0;loop7;loop+) System.out.print(Doctor+(char)(ch+loop)+:); switch(loop+1) case 1:day=list.get(a);break; case 2:day=list.get(b);break; case 3:day=list.get(c);break; case 4:day=list.get
6、(d);break; case 5:day=list.get(e);break; case 6:day=list.get(f);break; case 7:day=list.get(g);break; switch(day) case sun:System.out.println(Sunday);break; case mon:System.out.println(Monday);break; case tus:System.out.println(Thusday);break; case wed:System.out.println(Wednesday);break; case thu:Sy
7、stem.out.println(Thurday);break; case fri:System.out.println(Friday);break; case sat:System.out.println(Saturday);break; 程序运行结果如下:2编写一个函数,输入n为偶数时,调用函数求1/2+1/4+.+1/n,当输入n为奇数时,调用函数求1/1+1/3+.+1/n。(利用指针函数)JAVA实现的具体代码如下:public class Number public static double evenOrodd(int n) double a = 0;double i=n%2;if (i=0) i=2;while (i=n) a=a+(double)(1/i);i=i+2;return a;public static void main(String args) System.out.println(n=100时,结果=+evenOrodd(100);System.out.println(n=99时,结果=+evenOrodd(99);代码运行结果如下:注:学生必须在答题纸上答题,否则没有成绩。 第 5 页 共 5 页