资源描述:
《《数组竞赛培训讲义》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数组竞赛培训讲义计算机中心陈辉金例题选讲:阿姆斯特朗数如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。如407=43+03+73就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。题目分析与算法设计可采用穷举法,依次取1000以内的各数(设为i),将i的各位数字分解后,据阿姆斯特朗数的性质进行计算和判断。采用数组连乘得到每个数的三次方程序说明与注释#includevoidmain(){inti,t,k,a[3];printf("TherearefollwingArmstrongnumbe
2、rsmallerthan1000:");for(i=2;i<1000;i++)/*穷举要判定的数i的取值范围2~1000*/{for(t=0,k=1000;k>=10;t++)/*截取整数i的各位(从高向低位)*/{a[t]=(i%k)/(k/10);/*分别赋于a[0]~a[2}*/k/=10;}if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]==i)/*判断i是否为阿姆斯特朗数*/printf("%5d",i);/*若满足条件,则输出*/}printf("");}*运行结果Therearef
3、ollowingArmstrongnumbersmallerthan1000:153370371407例题选讲:哪个大夫哪天值班医院有A、B、C、D、E、F、G七位大夫,在一星期内(星期一至星期天)每人要轮流值班一天。现在已知:A大夫比C大夫晚一天值班;D大夫比E大夫晚二天值班;B大夫比G大夫早三天值班;F大夫的值班日在B和C大夫的中间,且是星期四;请确定每天究竟是哪位大夫值班?*问题分析与算法设计题目分析与算法设计由题目可推出如下已知条件:*F是星期四值班;*B值班的日期在星期一至星期三,且三天后是G值班;*C值班的日期在星期五至星期六,且一天后
4、是A值班;*E两天后是D值班;E值班的日期只能在星期一至星期三;在编程时用数组元素的下标1到7表示星期一到星期天,用数组元素的值分别表示A~F七位大夫。程序说明与注释(1)#include"stdio.h"#include"string.h"inta[8];char*day[]={"","MONDAY","TUESDAY","WEDNESDAY","THURSDAYT","FRIDAY","SATUDAY","SUNDAY"};/*建立星期表*/voidmain(){inti,j,t;a[4]=6;/*星期四是F值班*/for(i=1;i<=3;i
5、++){a[i]=2;/*假设B值班的日期*/if(!a[i+3])a[i+3]=7;/*若三天后无人值班则安排G值班*/else{a[i]=0;continue;}/*否则B值班的日期不断对*/程序说明与注释(2)for(t=1;t<=3;t++)/*假设E值班的时间*/{if(!a[t])a[t]=5;/*若当天无人值班则安排E值班*/elsecontinue;if(!a[t+2])a[t+2]=4;/*若E值班两天后无人值班则应为D*/else{a[t]=0;continue;}/*否则E值班的日期不对*/for(j=5;j<7;j++){i
6、f(!a[j])a[j]=3;/*若当天无人值班,则安排C值班*/elsecontinue;if(!a[j+1])a[j+1]=1;/*C之后一天无人值班则应当是A值班*/else{a[j]=0;continue;}/*否则A值班日期不对*/for(i=1;i<=7;i++)/*安排完毕,输出结果*/printf("Doctor%cisonduty%s.",'A'+a[i]-1,day[i]);}}}}*运行结果DoctorEisondutyMONDAY.(星期一:E)DoctorBisondutyTUESDAY.(星期二:B)DoctorDi
7、sondutyWEDNESDAY.(星期三:D)DoctorFisondutyTHUESDAY.(星期四:F)DoctorGisondutyFRIDAY.(星期五:G)DoctorCisondutySATURRDAY.(星期六:C)DoctorAisondutySUNDAY.(星期日:A)思考题在本题的求解过程中,我们只考虑了一星期之内的情况,没有考虑跨周的情况。对于“B大夫比G大夫早三天值班的”条件只是简单的认为是在同一周内早三天。若考虑跨周的情况就可能出现:B大夫星期一值班,而G大夫是上周的星期五。同样,对“F大夫的值班日在B和C大夫的中间”这
8、个条件,也可以扩展为:“只要F大夫的值班日在B和C大夫的中间就可以”。请考虑允许跨周的情况下,可能的时间安排表。例题选讲: