首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C语言函数,填补空缺。 [说明] 函数count months(DATE start, DATE end)的功能是:计算两个给定日期之间所包含的完整月份数。 该函数先算出起止日期中所含的完整年数,再计算余下的完整月份数。 规
阅读以下说明和C语言函数,填补空缺。 [说明] 函数count months(DATE start, DATE end)的功能是:计算两个给定日期之间所包含的完整月份数。 该函数先算出起止日期中所含的完整年数,再计算余下的完整月份数。 规
admin
2012-04-11
26
问题
阅读以下说明和C语言函数,填补空缺。
[说明]
函数count months(DATE start, DATE end)的功能是:计算两个给定日期之间所包含的完整月份数。
该函数先算出起止日期中所含的完整年数,再计算余下的完整月份数。
规定两个相邻年份的同月同日之间的问隔为1年。例如,2007.5.30—2008.5.30的间隔为1年。若相邻两年中前一年是闰年,并且日期是2月29日,则到下一年的2月28日为1年,即2008.2.29—2009.2.28的间隔为1年。
规定两个相邻月份的相同日之间的间隔为1个月,但需要特别考虑月末的特殊情况。例如,2007.1.29—2007.2.28的间隔为1个月,同理,2007.1.30—2007.2.28、2007.1.31—2007.2.28的间隔都是1个月。
计算起止日期间隔不足一年的完整月份数时,分两种情况:
(1)起止日期不跨年度。先用终止日期的月号减去起始日期的月号得到月份数,然后再根据情况进行修正。例如,起止日期为2008.3.31—2008.9.20,通过月号算出月份数为6。修正时,通过调用函数makevalid将2008.9.31改为2008.9.30,与终止日期2008.9.20比较后,将月份数修正为5。
(2)起止日期跨年度。计算方法如下例所示:对于起止日期2008.7.25—2009.3.31,先计算2008.7.25—2008.12.25的月份数为5,再算出2008.12.25—2009.3.25的月份数为3,因此2008.7.25—2009.3.31之间的完整月份数为8。
日期数据类型定义如下:
typedef struct {
int year; int month; int day; /*日期的年号(4位)、月和日号*/
}DATE;
程序中使用的函数cmp_date( )、isLeapYear( )和makevalid( )说明如表11-8所示。
表11-8 函数说明
[C语言函数]
int count_months(DATE start, DATE end)
{
int years=0, months=0;
DATE r;
if (cmp_date(start, end)>0) {
r=start; start=end; end=r;
}
years=end.year-start.year; /*计算年数*/
r=start;
r.year=end.year;
if (cmp_date(r, end)>0) { /*修正年数*/
_________;
r.year--;
}
if(r. year<end. year) { /*跨年度时,先计算到12月的月份数*/
months= _______ ;
r. month= (12) ;
}
months+=(end. month+12-r. month)%12;
r. year=end. year; r. month=end. month;
makeva!id( _______ ); /*将日期r修正为有效日期*/
if(cmp_date(r, end)>0) /*修正月份数*/
________ ;
months+= ________ ; /*计算总月份数*/
return months;
}
选项
答案
years--,或其他等价形式 12_r.month,或其他等价形式 &r months--,或其他等价形式 years*12
解析
years=end. year-start. year语句计算出的年份多算了一年,应该减去1,所以(1)处应为years--。跨年度时计算日期应该分两阶段,年前部分和年后部分,所以(2)处应为12-r.month。根据函数makevalid的接口说明可知,函数的实参应该是变量r的地址,所以(3)处应为“&r”。用两个月份号相减可能会多算一个月,因此应该将months减少1,所以(4)处应为“months--”。计算总月份数时,年份数years*12再加上不足一整年的月份数即可得到月份总数,所以(5)处为“years*12”。
转载请注明原文地址:https://kaotiyun.com/show/nEVZ777K
本试题收录于:
程序员上午基础知识考试题库软考初级分类
0
程序员上午基础知识考试
软考初级
相关试题推荐
数据模型是表示实体间联系的,网状模型、层次模型和关系模型都是数据库中的基本数据模型。在搜索数据时,关系模型是通过(14)实现的。
在病毒的生存期内,病毒将与自身完全相同的副本放入其他程序或者硬盘上的某些特定分区的阶段称为(49)。
HTML语言中,(41)为表单标记。
某电子商务网站交易界面如图1-1所示。该电子商务交易方式为(34)。
在Word的编辑状态,不能完成删除整个表格(及其内容)任务的操作是(14)。
计算机处理中断时,为了使进程能正确返回中断点,系统必须保存当前处理机状态字PSW和(21)的值。
以太网策略中有3种监听方法,其中一种是,一旦“介质空闲就发送数据,假如介质忙,继续监听,直到介质空闲后立即发送数据”,这种算法称为(31)监听算法。这种算法的主要特点是(32)。 CSMA/CD协议具有:中突检测功能,网络中的站点一旦检测到>中突,就立即停
以太网策略中有3种监听方法,其中一种是,一旦“介质空闲就发送数据,假如介质忙,继续监听,直到介质空闲后立即发送数据”,这种算法称为(31)监听算法。这种算法的主要特点是(32)。 CSMA/CD协议具有:中突检测功能,网络中的站点一旦检测到>中突,就立即停
假设微处理器的主振频率为50MHz,两个时钟周期组成一个机器周期,平均三个机器周期完成一条指令,则它的机器周期是(11),平均运算速度约为(12)MIPS。
WindowsXP是一种(56)操作系统,为了支持网络通信的功能;在它的网络体系中包含了网络API、传输驱动程序接口(TDI)客户、TDI传送器、NDIS小端口驱动程序和(57),同时NDIS库也为(58)的使用提供了函数接口。
随机试题
24岁初产妇,规律宫缩10小时,连续观察2小时,宫口由6cm开大至7cm,胎头+1,胎心140次/分。本例恰当的处置应是
社会工作组织和人员在其职业活动中不仅仅要遵守法规与政策,还应该以积极的行动参与到法规与政策的完善和发展过程之中。社会工作者具有“专家”和()的双重角色,他们在相关法规和政策的制定、完善和发展过程中可以发挥重要作用。
冷原子吸收法测定总汞时,以氩气作为载气将元素汞吹入汞测定仪进行冷原子吸收测定。
Asasmallboy,hewasslow______learningtoreadandwrite.
男性,19岁。自5岁患麻疹后咳嗽迁延不愈,渐起喘息,反复发作,每逢秋冬尤频。体检:一般情况尚可,气稍急。呼气延长,两肺散布哮鸣音。心脏(一),该患者出现呼吸困难是属于
下列哪些项目必需进行招标?(卷一/2007年第71题)
分区规划、详细规划由()组织编制。
我国最著名的“海市蜃楼”奇景是()。
根据下列资料,回答下列问题。截止2015年12月,我国网民规模达6.88亿,全年共计新增网民3951万人,互联网普及率为50.3%,较2014年底提升了2.4个百分点。按照2012年底的同比增速测算,2010年底的网民平均上网时长可
事业单位负责的年度考核按照规定程序和管理权限,由()组织实施。
最新回复
(
0
)