首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 某文本文件中保存了若干个日期数据,格式如下(年/月/日): 2005/1 2/1 2013/2/29 1997/10/11 1980/5/15
阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 某文本文件中保存了若干个日期数据,格式如下(年/月/日): 2005/1 2/1 2013/2/29 1997/10/11 1980/5/15
admin
2017-09-14
72
问题
阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
某文本文件中保存了若干个日期数据,格式如下(年/月/日):
2005/1 2/1
2013/2/29
1997/10/11
1980/5/15
但是其中有些日期是非法的,例如2013/2/29是非法日期,闰年(即能被400整除或者能被4整除而不能被100整除的年份)的2月份有29天,2013年不是闰年。现要求将其中自1985/1/1开始、至2010/12/31结束的合法日期挑选出来并输出。
下面的C代码用于完成上述要求。
【C代码】
#include
typedef struct{
int year,month,day; /*年,月,日*/
}DATE;
int isLeapYear(int y) /*判断y表示的年份是否为闰年,是则返回1,否则返回0*/
{
return((y%4=0&&y%100 1=0)‖(y%400==0});
}
int isLegal(DATE date) /*判断date表示的日期是否合法,是则返回1,否则返回0*/
{
int y=date.year,m=date.month,d=date.day;
if(y<1 985 ‖ y>201 0‖ m<1‖ m>12 ‖ d<1‖ d>31) return 0;
if((m=4 ‖ m=6 ‖m==9‖m==i 1)&& (1) ) return 0;
if(m==2) {
if(isLeapYear(y)&& (2) ) return 1;
eise
if (d>2 8) return 0;
}
return 1;
}
int Lteq(DATE dl,DATE d2)
/*比较日期d1和d2,若dl在d2之前或相同则返回1,否则返回0*/
{
long t1,t2;
t1=d1.year*10000+d1.month*100+d1.day;
t2=d2.year*10000+d2.month*100+d2.day;
if( (3) ) return 1;
else return 0;
}
int main()
{
DATE date,start={1 98 5,1,1},end={2 01 0,12,31);
FILE*fp;
fp=fopen(“dtxt”,“r”);
if( (4) )
return一1;
while(!feof(fp)){
if(fscanf(fp,“%d/%d/%d”,&date.year,&date.month,&date.day)!=3)
break;
if( (5) ) /*判断是否为非法日期*/
continue;
if( (6) )/*调用Lteq判断是否在起至日期之间*/
printf(“%d/%d/%d\n”,date.year,date.month,date.day);
}
fclose(fp);
return 0;
}
选项
答案
(1)d>30 或d>=31或等价形式 (2)d<=29 或d<30或等价形式 (3)t1<=t2 或等价形式 (4)!fp或fp==0或fp==NULL (5)!isLegal(date) (6)Lteq(start,date)&&Lteq(date,end)或等价形式
解析
本题考查C程序设计的基本结构和运算逻辑。
阅读程序时需先理解程序的结构,包括各函数的作用,然后确定主要变量的作用。本题中,函数isLegal(DATE date)的作用是判断date表示的日期是否合法。对于一个日期数据,需要分别判断年、月、日的合法性。基本的规则是月份只能在整数区间[1,12],日只能在整数区间[1,3 1],还需结合大、小月及2月份的特殊性。按照题目要求,满足条件(y<1985 ‖ y>2010 ‖ m<1 ‖m>12 ‖ d<1 ‖ d>31)的日期先排除,接下来考虑小月份,即4、6、9、11这四个月份不存在3 1日,所在这几个月中若出现3 1日或更大值,就是非法日期,即空(1)处应填入“d>30”或其等价形式。当月份为2时,需要考虑是否闰年,闰年的2月是29天、平年是28天,因此空(2)处应填入“d<30”或其等价形式。
函数L,teq(DATE d1,DATE d2)的功能是比较日期d1和d2的前后,若d1在d2之前或相同则返回1,否则返回0。通过将日期数据转换为整数来比较日期的先后,显然,日期靠前时其对应的整数就小,因此空(3)处应填入“t1<=t2”或其等价形式。
在main函数中,从文本文件中读取日期数据,因此文件指针fp与文件的关联失败时,应结束程序,空(4)处应填入“fp==NULL”或其等价形式。
根据题意,非法日期不输出,因此空(5)处应填入“!isL,egal(date)”或“isL,egal(date)==0”。
根据注释,空(6)处应填入“L,teq(start,date)&&Lteq(date,end)”或其等价形式。
转载请注明原文地址:https://www.kaotiyun.com/show/q9jZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
数据录入工作有两个指标:录入速度和错误率。一般而言,数据录入员在录入大批数据时,录入速度会(65),错误率会(66)。65
在Word2010文本编辑状态下,按住Alt键的同时在文本上拖动鼠标,可以()。
在PowerPoint中,执行插入新幻灯片的操作后,被插入的幻灯片将出现在(53)。
在Excel中,函数“=AVERAGE(A1,.B4)”的含义是()。
在Excel2007中,单元格中的绝对地址在被复制或移动到其他单元格时,其单元格地址(42)________________。
2008年9月27日,地面指挥中心通过“天地语音系统”和航天员进行了通话。“天地语音系统”的地面设备包括通信设备、数据传输设备、分组交换设备和地面卫星通信站等,飞船上则配备了无线通信、视频传输与数据记录等设备,使得航天员与地面指挥中心随时可以进行信息交流。
采购了多种品牌的部件进行计算机组装,每个部件都正常,连接、安装、配置操作也完全正确,但系统仍不能正常使用。很可能是____________问题。
综合布线系统由6个子系统组成,将图1-1中(1)~(6)处空缺子系统的名称填写在答题纸对应的解答栏内。为满足公司要求,通常选用什么类型的信息插座?
请认真阅读下列有关网络中计算机安全的说明信息,回答问题1至问题4。【说明】“震荡波”病毒对网络中计算机系统的攻击方式是:以本地IP地址为基础,开辟128个扫描线程,每个线程随机选取一个IP地址作为攻击目标,疯狂地试探连接目标主机的445端口,
ASP是(1)网页制作技术。A.动态B.静态从以下备选答案内为程序中(5)~(9)处空缺部分选择正确答案。(5)A.CreatObjectB.ConnectC.ExecuteSQLD.Open()(6)A.<body>
随机试题
简述阿司匹林的不良反应及防治措施。
除了捕食者的捕杀之外,巨鸟们的身体状况也是其灭绝的原因之一。巨鸟身材高大,体重也惊人,无法再在天空翱翔,久而久之,翅膀退化,它们只能在地上行走。当捕食者的威胁并不严峻时,巨鸟不需要快速奔跑以躲避追捕,因此它们的活动能力也随着身体日渐庞大而衰退。当捕食者突然
提出决策的“有限性”标准和“满意度”原则的学者是()。
从肾脏排泄最少的磺脲类药物是
男孩,6岁,不慎被开水烫伤头颈部及双上肢,则该患者烫伤面积为
男,64岁,在抗洪抢险一线,突获其母病故后当日发生急性下壁心肌梗死。既往有高血压病5年、糖尿病10年、吸烟40余年。该患者急性心肌梗死的主要病因是
某电器专卖店(一般纳税人)2014年8月发生下列购销业务:(1)销售空调300台,每台零售价格3000元,商场派人负责安装,每台收取安装费200元;(2)采取有奖销售方式销售电冰箱100台,每台零售价格2800元;将外购的50只石英手表对外投资,市场
甲公司为扩大销售额制订了四种方案,四种方案的预计费用和销售额如下表所示,如采用价值分析法中的单一目标决策,最优的方案是()。
已知:第一,《神鞭》的首次翻译出版用的或者是英语或者是日语,二者必居其一。第二,《神鞭》的首次翻译出版或者在旧金山或者在东京,二者必居其一。第三,《神鞭》的译者或者是林浩如或者是胡乃初,二者必居其一。如果上述断定都是
设x是整型变量,与函数IIf(x>0,-x,x)有相同结果的代数式是( )。
最新回复
(
0
)