首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和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
36
问题
阅读以下说明和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://jikaoti.com/ti/4HW7FFFM
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
通常情况下,通过Windows任务栏不能直接完成的操作有(37)。
关于ADSL接入技术,下面的论述正确的是(15)。
以下关于数据的叙述中,________并不正确。
为将演示文稿置于另一台不带PowerPoint系统的计算机上放映,那么在放映前应该对演示文稿进行()。
在Excel的A1单元格中输入函数“=6+16+MAX(16,6)”,按回车键后,A1单元格中显示的值为__________。
OSI七层模型中,提供面向用户连接服务的是______。
在文档中插入形状“圆”后,在圆心位置输入了字符C却看不到,为将字符C显示出来,可以右击该形状,选择将其__________。
在Word2007中要建立一个表格,方法是()。
资源记录文件位于/var/named目录下。这个目录是在以上的(1)文件中定义的。从备选选项中选择(6)~(10)处的解答。在问题4的named.abc.net文件中,出现了5种类型的记录。其中SOA是(6),NS是(7),MX是(8),A是
传统意义上的计算机病毒具有哪些特征?实施数据库服务器的病毒防护时,主要需要保护哪些元素?
随机试题
下列选项中,不属于全国人民代表大会常务委员会职权的是()
下列哪项不是妊娠滋养细胞肿瘤常用的化疗药物
某大学,23岁,今年大学毕业,父母为其找了一份很好的工作,同时该同学又以优异的成绩考上了研究生,该同学又想工作,又想上研究生,来到心理咨询门诊询问,是工作还是去上学,要求心理医师为其进行选择,此时心理咨询师最应注意采用的原则是
某女,左乳红肿疼痛1周,高热不退,口渴,苔黄,脉弦数,乳房肿块,肿块周围皮肤色红,肿块质软,有波动感。治宜
立法用药体现“行血则便脓自愈,调气则后重自除”的方剂是
( )是由监理工程师组织与主持、按一定程序召开、研究施工中出现的计划、进度、质量及工程款支付等问题的工地会议。
根据《最低生活保障审核审批办法(试行)》,家庭经济状况主要指申请人及其家庭成员拥有的全部()收入和家庭财产。
一、注意事项1.本题本由给定材料与作答要求两部分构成,考试时限为150分钟。其中,阅读给定材料参考时限为40分钟,作答参考时限为110分钟。满分100分。2.请在题本、答题卡指定位置上用黑色字迹的铅笔或签字笔填写自己的姓名和准考证号,并
居间,就其实质而言,是一种商业形式,是牵线搭桥、举荐媒引,促使交易双方成交的一种经纪活动。专项从事这种经纪活动而从中获取报酬的人,就是居间人。根据以上定义,下列不属于居间人的是:
在中国共产党七届二中全会上,毛泽东告诫全党:“务必使同志们继续地保持谦虚、谨慎、不骄、不躁的作风,务必使同志们继续地保持艰苦奋斗的作风。”其原因主要是()
最新回复
(
0
)