问题 选择题

如图所示为匀强电场,A、B两点间的电势差为U.将电荷量为+q的粒子从A点移动到B点,在这个过程中(  )

A.电场力对带电粒子做功为-qU,带电粒子的电势能增加

B.电场力对带电粒子做功为+qU,带电粒子的电势能减少

C.电场力对带电粒子做功为-

U
q
,带电粒子的电势能增加

D.电场力对带电粒子做功为+

U
q,带电粒子的电势能减少

答案

由题意可知,UAB=∅A-∅B>0,根据电势差的定义式:UAB=

WAB
 q 
可得:

A、B两点间的电势差为:U=

W
q
,则电场力对带电粒子做功为+qU,电势能减小,故ACD错误,B正确;

故选B.

问答题

[说明]
在某些系统中,存在非常复杂的对象,可以采用循序渐进的方式,进行组合将小对象组合成复杂的对象。
以下实例展示了Builder(生成器)模式。该实例用来建立“文件”,文件内容包括:一个标题、一串字符以及一些有项目符号的项目。Builder类规定组成文件的方法,Director类利用这个方法产生一份具体的文件。图7-1显示了各个类间的关系。
[图7-1]


以下是C语言实现,能够正确编译通过。
[C代码]
typedef void( (1) )(char *title);
typedef void(*fun2)(char items[] [10], int N);
typedef char* (*fun3)();
char buffer[500];
struct Builder//构造器
fun1 makeTitle;
(2) makeString;
fun2 makeItems;
fun3 getResult;
;
struct Director
struct Builder builder;
;
char* construct( (3) director)//构造文件

char items[2][10] = "早安", "午安";
director->builder.makeTitle("Greeting");
director->builder.makeString("从早上到白天结束");
director->builder.makeItems(items, 2);
director->builder.makeString("到了晚上");
strcpy(items[0], "晚安");
strcpy(items[1], "好梦");
director->builder.makeItems(items, 2);
return director->builder.getResult();

void TXTmakeTitle(char* title)

strcat(buffer, "『");
Strcat(buffer, title);
strcat(buffer, "』\n\n");

void TXTmakeString(char* str)

strcat(buffer, "■");
Strcat(buffer, str);
strcat(buffer, "\n\n");

void TXTmakeItems(char items[] [10], int N)//将items加入文件中

for(int i = 0, i < N; i++)
strcat(buffer, "·");
strcat(buffer, (4) );
strcat(buffer, "\n");

strcat(buffer, "\n");

char* TXTgetResult()

return buffer;

void main()

Director director;
(5) = ’\0’;//清空缓冲区,使目前缓冲区中的内容不影响新生成的文件
director.builder.makeTitle = TXTmakeTitle;
director.builder.makeString = TXTmakeTitle;
director.builder.makeItems = TXTmakeItems;
director.builder.getResult = TXTgetResult;
char* result = construct(&director);
printf("%s\n", result);

多项选择题