首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C语言函数,将应填入(n)处。 【说明】 已知1900年1月1日是星期一,下面的函数count_5_13(int year)用于计算给定的年份year中有几个“黑色星期五”。“黑色星期五”指既是13日又是星期五的日期。 函
阅读以下说明和C语言函数,将应填入(n)处。 【说明】 已知1900年1月1日是星期一,下面的函数count_5_13(int year)用于计算给定的年份year中有几个“黑色星期五”。“黑色星期五”指既是13日又是星期五的日期。 函
admin
2009-01-20
57
问题
阅读以下说明和C语言函数,将应填入(n)处。
【说明】
已知1900年1月1日是星期一,下面的函数count_5_13(int year)用于计算给定的年份year中有几个“黑色星期五”。“黑色星期五”指既是13日又是星期五的日期。
函数count_5_13(int year)首先算出年份year的1月13日是星期几,然后依次计算每个月的13日是星期几,若是星期五,则计数。
程序中使用了函数isLeapYear(int year),其功能是判断给定年份是否为闰年,返回值为1(或0)表示year是(或不是)闰年。
【C语言函数】
int count_5_13(int year)
{
int date; /*date为0表示星期日,为1~6分别表示星期一至星期六*/
long days=0; /*days记录天数*/
int m,y,c=0; /*c用于表示黑色星期五的个数*/
if (year<1900) return-1;
/*计算从1900年1月1日起至给定年份year的1月13日间隔的天数*/
days=12;
for (y= 1900; y < year; y++) {
days +=365;
if (isLeapYear(y))(1);
}
date=((days%7) +1) %7; /*算出给定年份year的1月13日是星期几*/
c=((2)) ?1:0;
for(m=1;(3);m++) {
switch (m) {
case 1:case 3: case 5: case 7:case 8:case 10:case 12:
days=31; break;
case 4: case 6: case 9: case 11:
days=30; break;
case 2:days=28;
if((4)) days=29;
break;
}/*end of switch*/
date=((days%7)+ (5) )%7;
if (date==5) c++;
} /*end of for*/
return c;
}
选项
答案
(1)days++,days+=1,days=days+1,或其等价表示 (2)date==5,或其等价表示 (3)m<12,或其等价表示 (4)isLeapYear(year),或year%4==0 && year%100!=0||year%400==0,或其等价表示 (5)date
解析
本题考查基本程序设计能力。
题中程序用于计算给定年份中“黑色星期五”(既是13日又是星期五的日期)的数目。 基本的常识为平年每年365天、闰年366天。若今天是星期三(date),则7天后的那天也是星期三,依此类推,可算出m天后为星期几((date+m)%7,为0表示星期日)。
题目中给出了1900年1月1日是星期一,因此,对于给定的日期,首先需要算出其距离1900.1.1的天数,然后用上式计算该日期对应星期几。
要计算给定年份中有几个“黑色星期五”,可先计算出该年份的1月13日是星期几,然后计算该年内每月的13日是星期几。所以,程序中首先计算出1900年1月1日至给定年份的1月13日共有多少天(days)。
在计算给定日期段的天数时,需要考虑大、小月,对于2月份,则需要考虑当前年号是否为闰年。期间若跨年度,则按每年365天(闰年366天)累加天数。对于以下代码段:
for (y == 1900; y < year; y++) {
days+=365;
if(isLeapYear(y)) (1) ;
}
显然,程序中空(1)处应填入days++或其等价表示形式。
根据程序中的注释,经语句date=((days%7)+1)%7;处理后,date表示给定年份的1月13日是星期几,而c用于表示“黑色星期五”的个数,因此空(2)处应填入 date==5。
在下面的代码中,计算给定年份2月份之后每个月的13日星期几(计算天数时需要考虑大、小月,2月份要考虑是否为闰年),其中m表示月号。
for(m=1; (3) ;m++) {
switch (m) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days=31; break;
case 4: case 6: case 9: case 11:
days=30; break;
case 2:days=28;
if( (4) ) days=29;
break;
}/*end of switch*/
由于1月13日已经考虑过,因此需要考虑的日期为2月至12月的每个13日,当月份m为12时,再计算出的日期就是下一年度的1月13日了,因此空(3)处应填入 m<12,空(4)处显然是判断当前年号是否为闰年,因此应填入isLeapYear(year)或 isLeapYear(y)。
对于代码date=((days%7)+ (5) %7;,之前已用date表示上个月13日是星期几,days表示间隔的天数,因此空(5)处应填入date。
转载请注明原文地址:https://kaotiyun.com/show/csjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
某企业对多项已完成的数据处理任务进行了评估,按其满意度和重要性度量值为坐标,标在下图中,用小圆表示)。这些坐标点分别落入I、Ⅱ、Ⅲ、Ⅳ四个区中。领导认为,位于________区中的任务是需要优先改进的。
在Access中,如果想要查询所有姓名为2个汉字的学生记录,在准则中应输入______。
在Excel中,A1单元格中显示的值为1.234E+05,下列选项中与其等值的是______。
在Access中,表和数据库的关系是(67)。
为查看Windows系统当前正在运行哪些应用程序或进程,可用(43)组合键实现。
若要查询成绩为70-80分之间(包括70分,不包括80分)的学生的信息,以下查询准则设置正确的是()。
下列选项中,既是输入设备又是输出设备的是(6)。
在Excel2007中,设单元格A1中的值为-1,B1中的值为1,A2中的值为0,B2中的值为1,若在C1单元格中输入函数“=IF(AND(A1>0,B1>0),A2,B2)”,按回车键后,C1单元格中的值为______。
下列关于Windows7屏幕保护程序的叙述中,不正确的是__________。
计算机使用一段时间后发现,系统启动时间变长,系统响应迟钝,应用程序运行缓慢,为此,需要进行系统优化。系统优化工作不包括___________。
随机试题
Weonlyhaveoneearth,soweneedtotakecareofher.That’swhatSenatorGaylordNelsonofWisconsinbelieved.Hewasdisturb
痰肿的特点是
2006年7月2日秦老大将自己家的骡子借给邻居鲁四使用。7月8日鲁四向秦老大提出将骡子卖给自己,秦老大表示同意。双方商定了价格,并约定三天后交付价款。但7月10日,骡子矢足坠下山崖摔死。对于该财产损失,应当由()承担。
某工程施工至2016年6月底,已完工作预算费用为600万元,已完工作实际费用为800万元,计划工作预算费用为700万元,则该工作此时的偏差情况是()。
发行人持有或者控制保荐人股份超过(),保荐人不得推荐发行人证券发行上市。
教师职业道德的核心和精髓是()。
在人类曲折的历史上,微生物曾引发过大量死亡的流行性疾病,如黑死病、流感、疟疾等。虽然很多微生物是人类的致病原,但我们也应看到,它们也可产生像青霉素这样的抗生素。随着科技的发展以及知识的更新,人们逐步利用微生物来生产疫苗、抗生素等,帮助人们战胜传染病。作者接
领导说话要对,要管用,不能说违心的话,不能说废话;说话要真,实事求是,不________;说话要慎,不能________,更不能无原则地封官许愿;说话要少,需要保密的事项不说,不利于团结的话不说,来自小道的消息不听、不信、不传、不说。填入画横线部分最恰当的
VBA中定义符号常量应使用的关键字是()。
Between1833and1837,thepublishersofa"pennypress"provedthatalow-pricedpaper,editedtointerestordinarypeople,cou
最新回复
(
0
)