问题 单项选择题

有的科学家推测:地球生命之源可能来自40亿年前坠人地球海洋的一颗或数颗彗星。当时,地球大气密度很高,减慢了彗星下坠的速度,使彗核表面的温度不会过高,从而保护了彗核表面的类生命物质。当彗核坠人海洋后,它们得到了再发展的条件,便形成了更为复杂的系统(通常由上百个分子组成)。该系统只让氧气、水等小分子进出,而氨基酸等则不能进出,久而久之这种有序状态促成了该系统能自我复制,进而导致了生命的诞生。
下列四项中,不属于“再发展”的一项是( )。

A.彗核表面的类生命物质发展为上百个分子组成的复杂的系统
B.彗核坠人海洋后,变成了促使原始生命产生并发展的条件
C.彗核表面的类生命物质,逐渐形成了以氨基酸为核心的有序结构
D.多分子组成的类生命物质的复杂系统终于能够自我复制

答案

参考答案:C

解析: 由该段文章可得,当彗核坠入海洋后,形成了吏为复杂的系统,只有氧气、水分子进出,而氨基酸等则不能进出,故彗核表面的类生命物质所形成的有序状态并不是以氨基酸为核心。故选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()、isLeap Year()和makevalid()说明如下。

【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) { /*修正年数*/

(1) ;

r.year--;

}

if (r.year < end.year) { /*跨年度时,先计算到12月的月份数*/

months = (2) ;

r.month = 12;

}

months += (end.month + 12 - r.month) % 12;

r.year = end.year; r.month = end.month;

makevalid ( (3) ); /*将日期r修正为有效日期*/

if (cmp_date(r,end) > 0) /*修正月份数*/

(4) ;

months += (5) ; /*计算总月份数*/

return months;

}

单项选择题