问题 解答题
求函数y=log
1
3
(x2-5x+4)的定义域、值域和单调区间.
答案

由μ(x)=x2-5x+4>0,解得x>4或x<1,

所以x∈(-∞,1)∪(4,+∞),

当x∈(-∞,1)∪(4,+∞),{μ|μ=x2-5x+4}=R+

所以函数y=log

1
3
(x2-5x+4)的值域是(-∞,+∞).

因为函数y=log

1
3
(x2-5x+4)是由y=log
1
3
μ(x)与μ(x)=x2-5x+4复合而成,

函数y=log

1
3
μ(x)在其定义域上是单调递减的,

函数μ(x)=x2-5x+4在(-∞,

5
2
)上为减函数,在[
5
2
,+∞]上为增函数.

考虑到函数的定义域及复合函数单调性,

y=log

1
3
(x2-5x+4)的增区间是定义域内使y=log
1
3
μ(x)为减函数、μ(x)=x2-5x+4也为减函数的区间,即(-∞,1);

y=log

1
3
(x2-5x+4)的减区间是定义域内使y=log
1
3
μ(x)为减函数、μ(x)=x2-5x+4为增函数的区间,即(4,+∞).

问答题

【说明】
在一公文处理系统中,开发者定义了一个公文结构OfficeDoc,其中定义了公文应该具有的属性。当公文的内容或状态发生变化时,与之相关联的DocExplorer结构的值都需要发生改变。一个OfficeDoc结构能够关联一组DocExplorer结构。当OfficeDoc结构的内容或状态发生变化时,所有与之相关联的DocExplorer结构都将被更新,这种应用被称为观察者模式。以下代码采用C语言实现,能够正确编译通过。
【代码13-4】
# include<stdio.h>
# define OBS_MAXNUM 20 /*一个OfficeDoc变量最多能够关联的DocExplorer变量的个数*/
typedef void( (1) )(struc OffieeDoc*, struct DoeExplorer*)I;
struct DocExplorer
func update;/*DocExplorer结构采用的更新函数*/
/*其它的结构字段省略*/
;
struet OffieeDoc
(2) myObs[OBS_MAXNUM

;
/*存储所有与OfficeDoc相关联的DocExplorer结构指针*/
int index;/*与OffieeDoc结构变量相关联的DoeExplorer结构变量的个数*/

void attaeh(struct OfficeDoc*doc, struct DocExplorer*ob)
/*关联Observer结构ob与OffieeDoe结构doe*/
int loop=0;
if(doc->index>=OBS_MAXNUM||ob==NULL)return;
for(loop=0, loop<doc->index; loop++)
if(doc->myObs[loop]==ob)return;
doc->myObs[doe->index]=ob;
doc->index++;void detaeh(struct OfficeDoc*doc, struct DocExplorer*ob)
/*解除doc结构与ob结构间的关联*/
int loop;
if(ob==NULL)return;
for(loop=0;loop<doc->index; loop++)
if(doe->myObs[loop]==ob)
if(loop<=doc->index-2)
doc->myObs[loop]=doc->myObs[ (3) ];
doc->myObs[doc->index-1]=NULL;
doc->index——;
breack;

void updatel(struct OfficeDoe*doe, struct DoeExplorer *ob)
/*更新ob结构的值,更新代码省略*/
void update2(struct OffieeDoc*doc,struet DocExplorer *ob)
/*更新ob结构的值,更新代码省略*/void notifyObs(struct OfficeDoc* doc)
/*当doc结构的值发生变化时,通知与之关联的所有DocExplorer结构变量*/
int loop;
for(loop=0; loop<doc->index; loop++)
(doc->myObs[loop

)->update( (4) );
void main()
struct OfficeDoc doc; /*定义一了OfficeDoe变量*/
struct DocExplorer explorer1, explorer2; /*定义两个DocExplorer变量*/
/*初始化与OfficeDoc变量相关的DocExplorer变量个数为0*/
doc.index=0;
explorer1.update=update1; /*设置explorer1变量的更新函数*/
explorer2. update=update2; /*设置explorer2变量的更新函数*/
attach(&doc, &explorer1); /*关联explorer1与doc对象*/
attach(&doc, &explorer2); /*关联explorer2与doc对象*/
/*其它代码省略*/
(5) ; /*通知与OfficeDoe相关的所有DoeExploer变量*/
return;

单项选择题