《数据结构—用C语言描述》课后习题答案

《数据结构—用C语言描述》课后习题答案
《数据结构—用C语言描述》课后习题答案

数据结构课后习题参考答案

第一章绪论

1.3 (1) O(n)

(2)(2)O(n)

(3)(3)O(n)

(4)(4)O(n12)

(5)(5)执行程序段的过程中,x,y值变化如下:

循环次数x y

0(初始)91 100

1 9

2 100

2 9

3 100

………………

9 100 100

10 101 100

11 91 99

12 92 100

………………

20 101 99

21 91 98

………………

30 101 98

31 91 97

到y=0时,要执行10*100次,可记为O(10*y)=O(n)

1.5 2100 , (23)n , log2n , n12 ,n32, (32)n , n log2n , 2 n ,n! , n n

第二章线性表(参考答案)

在以下习题解答中,假定使用如下类型定义:

(1)顺序存储结构:

#define MAXSIZE 1024

typedef int ElemType; 实际上,ElemType可以是任意类型

typedef struct

{ ElemType data[MAXSIZE];

int last; last表示终端结点在向量中的位置

}sequenlist;

(2)链式存储结构(单链表)

typedef struct node

{ElemType data;

struct node *next;

}linklist;

(3)链式存储结构(双链表)

typedef struct node

{ElemType data;

struct node *prior,*next;

}dlinklist;

(4)静态链表

typedef struct

{ElemType data;

int next;

}node;

node sa[MAXSIZE];

2.1 头指针:指向链表的指针。因为对链表的所有操均需从头指针开始,即头指针具有标识链表的作用,所以链表的名字往往用头指针来标识。如:链表的头指针是la,往往简称为“链表la”。

头结点:为了链表操作统一,在链表第一元素结点(称为首元结点,或首结点)之前增加的一个结点,该结点称为头结点,其数据域不无实际意义(当然,也可以存储链表长度,这只是副产品),其指针域指向头结点。这样在插入和删除中头结点不变。

开始结点:即上面所讲第一个元素的结点。

2.2 只设尾指针的单循环链表,从尾指针出发能访问链表上的任何结点。

2·3

void insert(ElemType A[],int elenum,ElemType x)

向量A目前有elenum个元素,且递增有序,本算法将x插入到向量A中,并保持向量的递增有序。

{ int i=0,j;

while (i

for (j= elenum-1;j>=i;j--) A[j+1]=A[j]; 向后移动元素

A[i]=x; 插入元素

} 算法结束

2·4

void rightrotate(ElemType A[],int n,k)

以向量作存储结构,本算法将向量中的n个元素循环右移k位,且只用一个辅助空间。{ int num=0; 计数,最终应等于n

int start=0; 记录开始位置(下标)

while (num

{ temp=A[start]; 暂存起点元素值,temp与向量中元素类型相同

empty=start; 保存空位置下标

next=(start-K+n) %n; 计算下一右移元素的下标

while (next !=start)

{ A[empty]=A[next]; 右移

num++; 右移元素数加1

empty=next;

next=(next-K+n) %n; 计算新右移元素的下标

}

A[empty]=temp; 把一轮右移中最后一个元素放到合适位置

num++;

start++; 起点增1,若num

}

} 算法结束

算法二

算法思想:先将左面n-k个元素逆置,接着将右面k个元素逆置,最后再将这n个元素逆置。

void rightrotate(ElemType A[],int n,k)

以向量作存储结构,本算法将向量中的n个元素循环右移k位,且只用一个辅助空间。{ ElemType temp;

for(i=0;i<(n-k)2;i++) 左面n-k个元素逆置

{temp=A[i]; A[i]=A[n-k-1-i]; A[n-k-1-i]=temp; }

for(i=1;i<=k;i++) 右面k个元素逆置

{temp=A[n-k-i]; A[n-k-i]=A[n-i]; A[n-i]=temp; }

for(i=0;i

{temp=A[i]; A[i]=A[n-1-i]; A[n-1-i]=temp; }

} 算法结束

2·5

void insert(linklist *L,ElemType x)

带头结点的单链表L递增有序,本算法将x插入到链表中,并保持链表的递增有序。{ linklist *p=L->next, *pre=L,*s;

p为工作指针,指向当前元素,pre为前驱指针,指向当前元素的前驱

s=(linklist *)malloc(sizeof(linklist));申请空间,不判断溢出

s->data=x;

while (p && p->data<=x) {pre=p; p=p->next;} 查找插入位置

pre->next=s; s->next=p; 插入元素

} 算法结束

2·6

void invert(linklist *L)

本算法将带头结点的单链表L逆置。

算法思想是先将头结点从表上摘下,然后从第一个元素结点开始,依次前插入以L为头结点的链表中。

{ linklist *p=L->next,*s;

p为工作指针,指向当前元素,s为p的后继指针

L->next=null;头结点摘下,指针域置空。算法中头指针L始终不变

while (p)

{s=p->next; 保留后继结点的指针

p->next=L->next; 逆置

L->next=p;

p=s; 将p指向下个待逆置结点

}

} 算法结束

2·7

(1) int length1(linklist *L)

本算法计算带头结点的单链表L的长度

{ linklist *p=L->next; int i=0;

p为工作指针,指向当前元素,i 表示链表的长度

while (p)

{ i++; p=p->next; }

return(i);

} 算法结束

(2) int length1(node sa[MAXSIZE])

本算法计算静态链表s中元素的个数。

{ int p=sa[0].next, i=0;

p为工作指针,指向当前元素,i 表示元素的个数,静态链指针等于-1时链表结束

while (p!=-1)

{ i++; p=sa[p].next; }

return(i);

} 算法结束

2·8

void union_invert(linklist *A,*B,*C)

A和B是两个带头结点的递增有序的单链表,本算法将两表合并成一个带头结点的递减有序单链表C,利用原表空间。

{ linklist *pa=A->next,*pb=B->next,*C=A,*r;

pa,pb为工作指针,分别指向A表和B表的当前元素,r为当前逆

元素的后继指针, 使逆置元素的表避免断开。

算法思想是边合并边逆置,使递增有序的单链表合并为递减有序的单链表。

C->next=null;头结点摘下,指针域置空。算法中头指针C始终不变

while (pa && pb) 两表均不空时作

if (pa->data<=pb->data) 将A表中元素合并且逆置

{ r=pa->next; 保留后继结点的指针

pa->next=C->next; 逆置

C->next=pa;

pa=r; 恢复待逆置结点的指针

}

else 将B表中元素合并且逆置

{ r=pb->next; 保留后继结点的指针

pb->next=C->next; 逆置

C->next=pb;

pb=r; 恢复待逆置结点的指针

}

以下while (pa)和while (pb)语句,只执行一个

while (pa) 将A表中剩余元素逆置

{ r=pa->next; 保留后继结点的指针

pa->next=C->next; 逆置

C->next=pa;

pa=r; 恢复待逆置结点的指针

}

while (pb) 将B表中剩余元素逆置

{ r=pb->next; 保留后继结点的指针

pb->next=C->next; 逆置

C->next=pb;

pb=r; 恢复待逆置结点的指针

}

free(B);释放B表头结点

} 算法结束

2·9

void deleteprior(linklist *L)

长度大于1的单循环链表,既无头结点,也无头指针,本算法删除*s 的前驱结点

{ linklist *p=s->next,*pre=s; p为工作指针,指向当前元素, pre为前驱指针,指向当前元素*p的前驱

while (p->next!=s) {pre=p; p=p->next;} 查找*s的前驱 pre->next=s;

free(p); 删除元素

} 算法结束

2·10

void one_to_three(linklist *A,*B,*C)

A是带头结点的的单链表,其数据元素是字符字母、字符、数字字符、其他字符。本算法将A表分成

三个带头结点的循环单链表A、B和C,分别含有字母、数字和其它符号的同一类字符,利用原表空间。

{ linklist *p=A->next,r;

p为工作指针,指向A表的当前元素,r为当前元素的后继指针,使表避免断开。

算法思想是取出当前元素,根据是字母、数字或其它符号,分别插入相应表中。

B=(linklist *)malloc(sizeof(linklist));申请空间,不判断溢出

B->next=null; 准备循环链表的头结点

C=(linklist *)malloc(sizeof(linklist));申请空间,不判断溢出

C->next=null; 准备循环链表的头结点

while(p)

{ r=p->next; 用以记住后继结点

if (p->data>=’a’&&p->data<=’z’||p->data>=’A’&& p->data<=’Z’)

{p-> next=A->next; A->next=p;} 将字母字符插入A表

else if (p->data>=’0’&&p->data<=’9’)

{p->next=B->next; B->next=p;} 将数字字符插入B 表

else {p->next=C->next; C->next=p;} 将其它符号插入C 表

p=r; 恢复后继结点的指针

}while

} 算法结束

2·11

void locate(dlinklist *L)

L是带头结点的按访问频度递减的双向链表,本算法先查找数据x,

查找成功时结点的访问频度域增1,最后将该结点按频度递减插入链表中适当位置。

{ linklist *p=L->next,*q;

p为工作指针,指向L表的当前元素,q为p的前驱,用于查找插入位置。

while (p && p->data !=x) p=p->next; 查找值为x的结点。

if (!p) return (“不存在值为x的结点”);

else { p->freq++; 令元素值为x的结点的freq域加1 。

p->next->prir=p->prior; 将p结点从链表上摘下。

p->prior->next=p->next;

q=p->prior; 以下查找p结点的插入位置

while (q !=L && q->freqprior;

p->next=q->next; q->next->prior=p; 将p结点插入

p->prior=q; q->next=p;

}

} 算法结束

第三章栈和队列(参考答案)

从数据结构角度看,栈和队列是操作受限的线性结构,其顺序存储结构

和链式存储结构的定义与线性表相同,请参考教材,这里不再重复。

3.1 1 2 3 4 2 1 3 4 3 2 1 4 4 3 2 1

1 2 4 3 2 1 4 3 3 2 4 1

1 3

2 4 2

3 1

4 3 4 2 1

1 3 4

2 2

3

4 1

1 4 3

2 2 4

3 1

设入栈序列元素数为n,则可能的出栈序列数为C2n n=(1n+1)*(2n!(n!)2)

3.2 证明:由jp k说明p j在p k之后出栈,即p j被p k压在下面,后进先出。由以上两条,不可能存在i

3.3 void sympthy(linklist *2) 前一半字符进栈

{ push(s,p->data); p=p->next; }

if (n % 2 !==0) p=p->next; 奇数个结点时跳过中心结点

while (p && p->data==pop(s)) p=p->next;

if (p==null) printf(“链表中心对称”);

els e printf(“链表不是中心对称”);

} 算法结束

3.4

int match()

从键盘读入算术表达式,本算法判断圆括号是否正确配对

(init s;初始化栈s

scanf(“%c”,&ch);

while (ch!=’#’) ’#’是表达式输入结束符号

switch (ch)

{ case ’(’: push(s,ch); break;

case ’)’: if (empty(s)) {printf(“括号不配对”); exit(0);} pop(s);

}

if (!empty(s)) printf(“括号不配对”);

else printf(“括号配对”);

} 算法结束

3.5

typedef struct 两栈共享一向量空间

{ ElemType v[m]; 栈可用空间0—m-1

int top[2] 栈顶指针

}twostack;

int push(twostack *s,int i, ElemType x)

两栈共享向量空间,i是0或1,表示两个栈,x是进栈元素,

本算法是入栈操作

{ if (abs(s->top[0] - s->top[1])==1) return(0); 栈满

else {switch (i)

{case 0: s->v[++(s->top)]=x; break;

case 1: s->v[--(s->top)]=x; break;

default: printf(“栈编号输入错误”); return(0);

}

return(1); 入栈成功

}

} 算法结束

ElemType pop(twostack *s,int i)

两栈共享向量空间,i是0或1,表示两个栈,本算法是退栈操作

{ ElemType x;

if (i!=0 && i!=1) return(0); 栈编号错误

else {switch (i)

{case 0: if(s->top[0]==-1) return(0);栈空

else x=s->v[s->top--];break;

case 1: if(s->top[1]==m) return(0);栈空

else x=s->v[s->top++]; break;

default: printf(“栈编号输入错误”);return(0);

}

return(x); 退栈成功

}

} 算法结束

ElemType top (twostack *s,int i)

两栈共享向量空间,i是0或1,表示两个栈,本算法是取栈顶元素操作{ ElemType x;

switch (i)

{case 0: if(s->top[0]==-1) return(0);栈空

else x=s->v[s->top]; break;

case 1: if(s->top[1]==m) return(0);栈空

else x=s->v[s->top]; break;

default: printf(“栈编号输入错误”);return(0);

}

return(x); 取栈顶元素成功

} 算法结束

3.6

void Ackerman(int m,int n)

Ackerman 函数的递归算法

{ if (m==0) return(n+1);

else if (m!=0 && n==0) return(Ackerman(m-1,1);

else return(Ackerman(m-1,Ackerman(m,n-1))

} 算法结束

3.7

(1) linklist *init(linklist *q)

q是以带头结点的循环链表表示的队列的尾指针,本算法将队列置空

{ q=(linklist *)malloc(sizeof(linklist));申请空间,不判断空间溢出q->next=q;

return (q);

} 算法结束

(2) linklist *enqueue(linklist *q,ElemType x)

q是以带头结点的循环链表表示的队列的尾指针,本算法将元素x入队{ s=(linklist *)malloc(sizeof(linklist));申请空间,不判断空间溢出s->next=q->next; 将元素结点s入队列

q->next=s;

q=s; 修改队尾指针

return (q);

} 算法结束

(3) linklist *delqueue(linklist *q)

q是以带头结点的循环链表表示的队列的尾指针,这是出队算法

{ if (q==q->next) return (null); 判断队列是否为空

else {linklist *s=q->next->next; s指向出队元素

if (s==q) q=q->next; 若队列中只一个元素,置空队列

else q->next->next=s->next; 修改队头元素指针

free (s); 释放出队结点

}

return (q);

} 算法结束。算法并未返回出队元素

3.8

typedef struct

{ElemType data[m]; 循环队列占m个存储单元

int front,rear; front和rear为队头元素和队尾元素的指针

约定front指向队头元素的前一位置,rear指向队尾元素}sequeue;

int queuelength(sequeue *cq)

cq为循环队列,本算法计算其长度

{ return (cq->rear - cq->front + m) % m;

} 算法结束

3.9

typedef struct

{ElemType sequ[m]; 循环队列占m个存储单元

int rear,quelen; rear指向队尾元素,quelen为元素个数

}sequeue;

(1) int empty(sequeue *cq)

cq为循环队列,本算法判断队列是否为空

{ return (cq->quelen==0 ? 1: 0);

} 算法结束

(2) sequeue *enqueue(sequeue *cq,ElemType x)

cq是如上定义的循环队列,本算法将元素x入队

{if (cq->quelen==m) return(0); 队满

else { cq->rear=(cq->rear+1) % m; 计算插入元素位置

cq->sequ[cq->rear]=x; 将元素x入队列

cq->quelen++; 修改队列长度

}

return (cq);

} 算法结束

ElemType delqueue(sequeue *cq)

cq是以如上定义的循环队列,本算法是出队算法,且返回出队元素

{if (cq->quelen==0) return(0); 队空

else { int front=(cq->rear - cq->quelen + 1+m) % m; 出队元素位置

cq->quelen--; 修改队列长度

return (cq->sequ[front]); 返回队头元素

}

} 算法结束

第四章串 (参考答案)

在以下习题解答中,假定使用如下类型定义:

#define MAXSIZE 1024

typedef struct

{ char data[MAXSIZE];

int curlen; curlen表示终端结点在向量中的位置

}seqstring;

typedef struct node

{char data;

struct node *next ;

}linkstring;

4.2 int index(string s,t)

s,t是字符串,本算法求子串t在主串s中的第一次出现,若s串中包含t串,返回其第一个字符在s中的位置,否则返回0

{m=length(s); n=length(t);

i=1;

while(i<=m-n+1)

if(strcmp(substr(s,i,n),t)==0) break;

else i++;

if(i<=m-n+1) return(i);模式匹配成功

else return(0);s串中无子串t

}算法index结束

4.3 设A=” ”, B=”mule”, C=”old”, D=”my” 则:

(a)(a)strcat(A,B)=”mule”

(b)(b)strcat(B,A)=”mule”

(c)(c)strcat(strcat(D,C),B)=”myoldmule”

(d)(d)substr(B,3,2)=”le”

(e)(e)substr(C,1,0)=” ”

(f)(f)strlen(A)=0

(g)(g)strlen(D)=2

(h)()replace(C,2,2,”k”)=”ok”

4.4 将S=“(xyz)*”转为T=“(x+z)*y”

S=concat(S, substr(S,3,1)) ”(xyz)*y”

S=replace(S,3,1,”+”) ”(x+z)*y”

4.5

char search(linkstring *X, linkstring *Y)

X和Y是用带头结点的结点大小为1的单链表表示的串,本算法查找X中第一个不在Y中出现的字符。算法思想是先从X中取出一个字符,到Y中去查找,如找到,则在X中取下一字符,重复以上过程;若没找到,则该字符为所求

{ linkstring *p, *q,*pre; p,q为工作指针,pre控制循环

p=X->next; q=Y->next; pre=p;

while (p && q)

{ ch=p->data; 取X中的字符

while (q && q->data!=ch) q=q->next; 和Y中字符比较

if (!q) return(ch); 找到Y中没有的字符

else { pre=p->next; 上一字符在Y中存在,

p=pre; 取X中下一字符。

q=Y->next; 再从Y的第一个字符开始比较

}

}

return(null); X中字符在Y中均存在

} 算法结束

4.6

int strcmp(seqstring *S, seqstring *T)

S和T是指向两个顺序串的指针,本算法比较两个串的大小,若S串大于T串,返回1;若S串等于T串,返回0;否则返回-1

{int i=0;

while (s->ch[i]!=’\0’ && t->ch[i]!=’\0’)

if (s->ch[i]>t->ch[i]) return(1);

else if (s->ch[i]ch[i]) return(-1);

else i++; 比较下一字符

if (s->ch[i]!=’\0’&& t->ch[i]==0) return(1);

else if (s->ch[i]==’\0’&& t->ch[i]!=0) return(-1);

else return(0);

} 算法结束

4.7

linkstring *invert(linkstring *S, linkstring *T)

S和T是用带头结点的结点大小为1的单链表表示的串,S是主串,T是

模式串。本算法是先模式匹配,查找T在S中的第一次出现。如模式匹

配成功,则将S中的子串(T串)逆置。

{linkstring *pre,*sp, *tp;

pre=S; pre是前驱指针,指向S中与T匹配时,T 中的前驱

sp=S->next; tp=T->next;sp 和tp分别是S和T串上的工作指针

while (sp && tp)

if (sp->data==tp->data) 相等时后移指针

{sp=sp->next; tp=tp->next;}

else 失配时主串回溯到下一个字符,子串再以第一个字符开始

{pre=pre->next; sp=pre->next; tp=T->next;}

if (tp!=null) return (null); 匹配失败,没有逆置

else 以下是T串逆置

{tp=pre->next; tp是逆置的工作指针,现在指向待逆置的第一个字符pre->next=sp; 将S中与T串匹配时的前驱指向匹配后的后继

while (tp!=sp)

{ r=tp->next;

tp->next=pre->next;

pre->next=tp;

tp=r

}

}

} 算法结束

第五章多维数组和广义表(参考答案)

5.1 A[2][3][2][3]

A0000, A0001, A0002

A0010, A0011, A0012

A0100, A0101, A0102

A0110, A0111, A0112

A0200, A0201, A0202

A0210, A0211, A0212

将第一维的0变为1后,可列出另外18个元素。以行序为主(即行优先)时,先改变右边的下标,从右到左进行。

5.2 设各维上下号为c1…d1,c2…d2,c3…d3,每个元素占l个单元。

LOC(a ijk)=LOC(a c1c2c3)+[(i-c1)*(d2-c2+1)*(d3-c3+1)+(j-c2)*(d3-c3+1)+(k-c3)]*l

推广到n维数组!!(下界和上界)为(ci,di),其中1<=i<=n.则:其数据元素的存储位置为:

LOC(a j1j2….jn)=LOC(a c1c2…cn)+[(d2-c2+1)…(d n-c n+1)(j1-c1)+(d3-c3+1) …(d n-c n+1)

n

(j2-c2)+…+(d n-c n+1)(j n-1-c n-1)+(j n-c n)]*l=LOC(a c1c2c3)+ ∑αi(j i-c i)

i=1

n

其中αi∏(d k-c k+1)(1<=i<=n)

k=i+1

若从c开始,c数组下标从0开始,各维长度为b i(1<=i<=n)则:

LOC(a j1j2…jn)=LOC(a00…0)+(b2* b3*…* b n*j1+ b3* …* b n*+ j2…+ b n* j n-1+ j n)*l

n

=LOC(a00…0)+ ∑αi j i其中:αi=l,αi-1=b i*αi,1

5.3 (1) k=2*i+j ( 0<=k<3n-2 )

(2) i=(k+1)3 ( 0<=k<3n-2 )

j=k-2*i

5.4

void saddlepoint(int a[m][n]);

a是m行n列的二维数组,本算法求所有马鞍点

b是一维数组,存放一行中可能的马鞍点的列值,k记相等值个数

c是一维数组,存放某列可能马鞍点的行值,kk记相等值个数

{for(i=0;i

{min=a[i,0]; 最小值初始化

b[0]=0; k=1; b数组记最小值的列号,k记最小值的个数

for(j=1;j

if (a[i][j]

else if (a[i][j]==min) {b[k+1]=j; k++;} 有相等的最小值

for (jj=0;jj

{j=b[jj]; max=a[i][jj]; kk=0; a[i][j]是否是马鞍点

while (kk=a[i][kk]) kk++;

if(kk>=m)printf(“马鞍点 i=%d,j=%d,a[i][j]=%d”,i,j,a[i][j]);

} END OF for jj

} END OF for i

最坏时间复杂度为O(m*(n+n*m)). (最坏时所有元素相同,都是马鞍点) 解法2: 若矩阵中元素值互不相同,则用一维数组row记下各行最小值,再用一维数组col 记下各列最大值,相等者为马鞍点。

for (i=0;i

{row[i]=a[i][0]; 最小值初始化

for (j=1;j

if (a[i][j]

}

for (j=0;j

{col[j]=a[0,j]; 最大值初始化

for (i=1;i

if (a[i][j]>col[j]) col[j]=a[i][j]; 重新确定最大值

}

for (i=0;i

for (j=1;j

if(row[i]==col[j])

printf(“马鞍点 i=%d,j=%d,a[i][j]=%d”,i,j,a[i][j]);

时间复杂度O( (m*n)).

解法3: 设定两个数组: max[0..n-1] 记各列的最大值所在行号

min[0..m-1] 记各行的最小值所在列号

第j 列的最大值为A[max[j]][j],第i行的最小值是A[i][min[i]]

void saddlepoint(int a[m][n]);

a是m行n列的二维数组,本算法求所有马鞍点

{ int max[]=0,min[]=0;for(i=0;i

for(i=0; i

for (j=0; j

{ if (A[i][j]>A[max[j]][j]) max[j]=i; 重新确定第j列最大值的行号if (A[i][j]

}

for (i=0;i

{j=min[i]; a[i][j]是否是马鞍点

if( max[j]==i) printf(“马鞍点 A[%d][%d]=%d”,i,j,a[i][j]);

} END OF for jj

}

时间复杂度为O(m*n+m).

5.5 (1)三元组表(行号0—5,列号0—5)

S=((0,0,15),(0,3,22),(0,5,-15),(1,1,11),(1,2,3),(2,3,-6),(4,0,91),(5,2,28))

(2)

5.6算法分析:两矩阵A和B相加的结果是一矩阵C,其元素C ij有三种情况;(1)C ij=A ij (B ij =0);(2)C ij=B ij(A ij =0);(3)C ij=A ij+B ij。在(3)种情况下,要看结果是否为0,

C矩阵只有非零元素。

V oid matrixaddition(crosslist *A,*B)

稀疏矩阵A和B用十字链表存储结构,本算法将稀疏矩阵B加到矩阵A上{ca=A->next;cb=B->next;

while(ca!=A&&cb!=B)

设pa和pb为矩阵A和B想加时的工作指针

{pa=ca->right;pb=cb->right;}

if(pa==ca)ca=ca->next;A表在该行无非0元素;

else

if(pb==cb)cb=cb->nextB表在该行无非0元素;

else if(pb->colcol)B的非0元素插入A中;

{j=pb->col;pt=chb[j];pre=pt 取到表头指针;

while(pt->down_colcol)

{pre=pt;pt=pt->down;}

pre->down=pt->down;该结点从B表相应列摘下

i=pb->right;pt=chb[i];pre=pt;取B表行表头指针

while(pt->right->rowrow

{pre=pt;pt=pt->right;}

pre->right=pt->riht;该结点从B表相应行链表中摘下。

Pbt=pb;pb=pb->right;B表移至下一结点

以下是将pbt插入A表的相应列链表中

j=pbt->col;pt=cha[j];pre=pt;

while(pt->down !=cha[j]&&pt->down->rowrow)

{pre=pt;pt=pt->down}

pre->down=pbt;pbt->down=pt;

以下是将pbt插入A表相应行链表中

i=pbt->right;pt=cha[i];pre=pt;

while(pt->right !=cha[i]&&pt->right-colcol)

{pre=pt;pt=pt->right;}

pre->right=ptb;

ptb->right=pt;

}end of “if (pb->colcol)

else if(pa->col=pb->col)处理两表中行列相同的非0元素

{v=pa->data+pb->data;

if(v !=0)

{pa->data+=pb->data;pa=pa->right;

将pb从行链表中删除;pb=pb->right;

}

else{将pa,pb从链表中删除;然后

pa=pa->right;

pb=pb->right;

}

5.7 (1) ,则

n=n0+n1+n2+……+nm+ (1)

设树的分支数为B,有

n=B+1

n=1n1+2n2+……+mnm+1 (2)

由(1)和(2)有:

n0=n2+2n3+……+(m-1)nm+1

6.4

(1) k i-1 (i为层数)

(2) (n-2)k+1

(3) (n-1)*k+i+1

(4) (n-1)%k !=0; 其右兄弟的编号 n+1

6.5(1)顺序存储结构

注:#为空结点

6.6

(1) 前序 ABDGCEFH

(2) 中序 DGBAECHF

(3) 后序 GDBEHFCA

6.7

(1) 空二叉树或任何结点均无左子树的非空二叉树

(2) 空二叉树或任何结点均无右子树的非空二叉树

(3) 空二叉树或只有根结点的二叉树

6.8

int (0);

else { bl=(bl>br? bl+1: br+1); 左右子树高度的大者加1(根) }

} 算法结束

6.9

void preorder(cbt[],int n,int i);

cbt是以完全二叉树形式存储的n个结点的二叉树,i是数

组下标,初始调用时为1。本算法以非递归形式前序遍历该二叉树

{ int i=1,s[],top=0; s是栈,栈中元素是二叉树结点在cbt中的序号

top是栈顶指针,栈空时top=0

if (n<=0) { printf(“输入错误”);exit(0);}

while (i<=n ||top>0)

{ while(i<=n)

{visit(cbt[i]); 访问根结点

if (2*i+1<=n) s[++top]=2*i+1; 若右子树非空,其编号进栈

i=2*i; 先序访问左子树

}

if (top>0) i=s[top--]; 退栈,先序访问右子树

} END OF while (i<=n ||top>0)

} 算法结束

以下是非完全二叉树顺序存储时的递归遍历算法,“虚结点”用‘*’表示

void preorder(bt[],int n,int i);

bt是以完全二叉树形式存储的一维数组,n是数组元素个数。i是数

组下标,初始调用时为1。

{ if (i<=n && bt[i]!=’*’)

{ visit(bt[i]);

preorder(bt,n,2*i);

preorder(bt,n,2*i+1);

} 算法结束

6.10

int equal(bitree T1,bitree T2);

T1和T2是两棵二叉树,本算法判断T1和T2是否等价

T1和T2都是空二叉树则等价

T1和T2只有一棵为空,另一棵非空,则不等价

T1和T2均非空,且根结点值相等,则比较其左、右子树

{if (T1==null && T2==null) return(1); 同为空二叉树

else if (T1==null || T2==null) return(0); 只有一棵为空

else if (T1->data!=T2->data) return(0); 根结点值不等

else return(equal(T1->lchild,T2->lchild)&&equal(T1->rchild,T2->rchild)) 判左右子树等价

} 算法结束

6.11

void levelorder (bitree +1]; s是指针数组,数组中元素为二叉树节点的指针

top=0;

while (t!=null || top!=0)

{ while (t!=null) { visit(*t); s[++top]=t; t=t->lchild }

if (top!=0) { t=s[top--]; t=t->rchild;}

}

} 算法结束

void inorder (bitree *t); (中序非递归遍历)

{bitree *s[n+1];

top=0;

while ((t!=null || top!=0)

{ while (t!=null) { s[++top]=t; t=t->lchild }

if (top!=0) { t=s[top--]; visit(*t); t=t->rchild; }

} 算法结束

void postorder (bitree *t); (后序非递归遍历)

{typedef struct node

{ bitree *t; tag:0..1

} stack;

stack s[n+1] ;

top=0;

while (t || top)

{ while (t) { s[++top].t=t; s[top].tag=0; t=t->lchild; }

while (top && s[top].tag==1) { printf(s[top--].t->data:3);}

if (top) { s[top].tag=1; t=s[top].t->rchild ;}

}

} 算法结束

6.13

bitree *dissect(bitree **t,ElemType x)

二叉树t至多有一个结点的数据域为x,本算法拆去以x为根的子树

拆开后的第一棵树用t表示,成功拆开后返回第二棵二叉树

{bitree *p,*find;

if (*t!=null)

{ if ((*t)->data==x) 根结点数据域为x

{p=*t; *t=null;

return(p);

}

else {find=(dissect(&(*t)->lchild),x); 在左子树中查找并拆开若在左子树中未找到,就到右子树中查找并拆开

if (!find) find=(dissect(&(*t)->rchild),x);

return(find);

}

}

else return(null); 空二叉树

} 算法结束

6.14

int search(bitree t,ElemType x)

设二叉树t中,值为x的结点至多一个,本算法打印x的所有祖先

算法思想是,借助后序非递归遍历,用栈装遍历过程的结点,当查到

值为x的结点时,栈中元素都是x的祖先

{ typedef struct

{ bitree p;

int tag;

}snode;

snode s[];

int top=0;

while (t && t->data !=x || top)

{ while (t && t->data !=x) 沿左分支向下

{ s[++top].p=t; s[top].tag=0; t=t->lchild; }

if (t->data==x)

{for (i=1;i<=top;++i) printf(“%c\n”,s[i].p->data); 输出,设元素为字符

return(1);

}

else

while (top>0 && s[top].tag==1) top--;退出右子树已访问的结点

if (top>0) 置访问标志1,访问右子树

{s[top].tag=1;t=s[top].p; t=t->rchild; }

}

return(0); 没有值为x的结点

} 算法结束

6.15 中序序列

后序序列

前序序列ABCDEFGH

6.16

null

只有空指针处才能加线索。

6.17

bitree *search(bitree *p)

查找前序线索二叉树上给定结点p 的前序后继

{ if (p->ltag==1) return(p->rchild); 左标记为1时,若p 的右子树非空,p 的右子树的根p->rchild 为p 的后继;若右子树为空,p->rchild 指向后继

else return(p->lchild); 左标记为0时,p 的左子女p->lchild 为p 的后继 . } 算法结束

6.18 bitree *search (b :tree *p )

在后序线索二叉树中查找给定结点的后序前驱的算法

{ if(p->rtag==0) return(p->rchild); p 有右子女时,其右子女p->rchild 是p 的后序前驱 else return(p->lchild);

p 的左标记为0,左子女p->lchild 是后序前驱, 否则,线索p->lchild 指向p 的后序前驱 } 6.19

前序序列:ABCDEFGHIJKLMPQRNO 后序序列:BDEFCAIJKHGQRPMNOL 6.21

6.22

7,19,2,6,32,3,21,10其对应字母分别为a,b,c,e,f,g,,i<>j. { visited[1..n]=0;found=0; scanf (&i,&j); dfs (i);

if (found) printf (” 顶点”,i,”和顶点 ”,j,”有路径 ”);

else printf (” 顶点”,i,”和顶点 ”,j,”无路径 ”); } void connect_DFS (2)宽度优先遍历

全程变量,调用函数与(1)相同,下面仅写宽度优先遍历部分。 void bfs(vtxptr x)

{ initqueue(q);enqueue(q,x); while (!empty(q));

{ y=delqueue(q); if (y= =j)

{ found=1;exit(0);}有通路,退出 else {p=g[x].firstarc;第一邻接点 while (p!=null) {k=p->adjvex;

if (! Visted[k]) enqueue(q,k); p=p->nextarc }

} if(y= =j)

}while(!empty(q))

7.5。假定该有向图以邻接表存储,各顶点的邻接点按增序排列

DFS 序列:V1,V3,V6,V7,V4,V2,V5,V8 BFS 序列:V1,V3,V4,V6,V7,V2,V5,V8

DFS 森林 BFS 森林 V1 V2 V1 V2 V3

V4 V3 V4 V5 V5

V6 V7 V6 V8 V8 V7

7.6简单回路指起点和终点相同的简单路径。算法基本思想是利用图的遍历,以顶点VK 开始,若遍历中再通到VK ,则存在简单回路,否则不存在简单回路。 Adjlisttp g ; visited[1..n]=0; Int found =0;全程变量 Int dfs(btxptr x)

从k 顶点深度优先遍历图g ,看是否存在k 的简单回路 { visited[x]=1; p=g[x].firstarc; while(p!=null) { w=p->adjvex; if(w= =k)

{ found=1;exit(0);}有简单回路,退出 if (!visited[k] )

dfs(w ); p=p->nextarc; }while(p!=null) } dfs

7

第四章课后习题答案

4-8 一个半径为r =1m ,转速为1500r/min 的飞轮,受到制动,均匀减速,经时间t =50s 后静止,求:(1)飞轮的角加速度和飞轮的角速度随时间的关系;(2)飞轮到静止这段时间内转过的转数;(3)t =25s 时飞轮边缘上一点的线速率和加速度的大小。 解 (1)由于均匀减速,所以角加速度不变为 2015000.5/6050r r s s s β-= =-? 由角速度和角加速度的关系得 25/0 t r s d dt ω ωβ=? ? 得 250.5(/)t r s ω=- (2) d d d d dt dt d d ωωθωω βθθ = == 25/r s d d θβθωω=? ? 解得 625r θ= 所以转数为625 (3)由于250.5(/)t r s ω=- 所以t=25s 时 12.5/25(/)r s rad s ωπ== 所以线速率为 25(/)v r m s ωπ== 角加速度大小不变 4-9 某电机的转速随时间的关系为ω=ω0(1-e -t/τ ),式中,ω0=s ,τ=,求:(1) t =时的转速;(2)角加速度随时间变化的规律;(3)启动6s 后转过的圈数。 解 (1)t=60s 代入得 39(1)(/)8.6/e rad s rad s ω-=-= (2)由d dt ω β= 得 2 4.5t e β- = (3)由6 d dt θθω=?? 33618e θ-=+ [/2][5.87]5n θπ===

4-10 一个圆盘绕穿过质心的轴转动,其角坐标随时间的关系为θ(t )=γt+βt 3 ,其初始转速为零,求其转速随时间变化的规律。 解 由d dt θ ω= 得 23t ωγβ=+ 由于初始时刻转速为零,γ=0 23t ωβ= 4-11 求半径为R ,高为h ,质量为m 的圆柱体绕其对称轴转动时的转动惯量。 解 建立柱坐标,取圆柱体上的一个体元,其对转轴的转动惯量为 2 222 m m dJ dV d d dz R h R h ρρρρθππ== 积分求得 23220001 2 R h m J d d dz mR R h πρρθπ= =??? 4-12一个半径为R ,密度为ρ的薄板圆盘上开了一个半径为R/2的圆孔,圆孔与盘边缘相切。求该圆盘对通过圆盘中心而与圆盘垂直的轴的转动惯量。 解:把圆孔补上,取圆盘上一面元dS ,到转轴的距离为r ,则其转动惯量为 22dJ r dS r rdrd ρρθ== 积分得绕轴转动惯量为 23410 1 2 R J r drd R π ρθπρ==? ? 圆孔部分的绕轴转动惯量可由平行轴定理得 4 422213()()()222232 R R R R J πρπρρπ=+= 总的转动惯量为 4 121332 R J J J πρ=-= 4-13电风扇在开启电源后,经过t 1时间达到额定转速ω,当关闭电源后,经过t 2时间后停止转动,已知风扇转子的转动惯量为J ,并假定摩擦力矩和电动机的电磁力矩均为常量,求电动机的电磁力矩。 解:由转动定理得

孟祥莲嵌入式系统原理及应用教程部分习题答案

习题1 1. 嵌入式系统的概念的是什么?答:嵌入式系统是以应用为中心,以计算机技 术为基础,软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。(嵌入式系统是嵌入式到对象体系中的,用于执行独立功能的专用计算机系统。) 2. 嵌入式系统的特点是什么? 答:系统内核小;专用性强;运行环境差异大;可靠性要求高;系统精简和高实时性操作系统;具有固化在非易失性存储器中的代码嵌入式系统开发和工作环境 4. 嵌入式系统的功能是什么?答:提供强大的网络服务小型化,低成本,低 功能;人性化的人机界面;完善的开发平台 5. 嵌入式系统的硬件平台由哪些部分组成?答:嵌入式系统的硬件是以嵌入式处理器为核心,由存储器I/O 单元电路,通信模块,外部设备必要的辅助接口组成的。 7. 嵌入式操作系统的主要特点是什么?答:体积小;实时性;特殊的开发调试环境。 8. 叙述嵌入式系统的分类。答:按嵌入式微处理器的位数分类可以分为4 位、 8 位、16 位、32 位和64 位等;按软件实时性需求分类可以分为非实时系统(如PDA), 软实时系统(如消费类产品)和硬实时系统(如工业实时控制系统)按嵌入式系统的复杂程度分类可以分为小型嵌入式系统,中型嵌入式系统和复杂嵌入式系统。 习题2 处理器和工作状态有哪些?

答:ARM犬态:此时处理器执行32位的的字对齐的ARS旨令。 Thumb犬态:此时处理器执行16位的,半字对齐的Thumb旨令 2.叙述ARM9内部寄存器结构,并分别说明R13 R14 R15寄存器的 作用。 答:共有37个内部寄存器,被分为若干个组(BANK,这些寄存器包括31个通用寄存器,包括程序计数器(PC指针)6个状态寄存器。R13用作堆栈指针,R14称为子程序链接寄存器,R15用作程序计数器。处理器的工作模式有哪些? 答:用户模式:ARM处理器正常的程序执行状态。 快速中断模式:用于高速数据传输或通道处理 外部中断模式:用于通用中断处理管理模式:操作系统使用的保护模式数据访问终止模式:当数据或指令预期终止时进入该模式,可用于虚拟存储器及存储保护 系统模式:运行具有特权的操作系统任务 未定义指令终止模式:当未定义的指令执行时进入该模式,可用 于支持硬件协处理器的软件仿真。 微处理器支持的数据类型有哪些? 答:ARM微处理器中支持字节(8位)、半字(16位),字(32 位)

训诂学复习试题及答案

《训诂学》试题 一、单项选择题(每题的四个选项中只有一个正确答案,将答案写在题后的括号内,每小题1分,共20分) 1、以下着作,兼注音义的是() A、《尔雅》 B、《经传释词》 C、《经典释文》 D、《释名》 2、解释正文,同时解释前人注释的训诂术语是() A、疏 B、笺 C、音义 D、释文 3、柳宗元《捕蛇者说》:“苛政猛于虎也”,句中“政”指() A、统治 B赋税 C政治制度 D统治者 4、对原文的误字误读进行更正的术语是() A、之言 B、当为 C、读若 D、析言 5、训诂学史上,“浑言”、“析言”两个术语开始使用于() A、东汉 B、唐代 C、宋代 D、清代 6、提示同义词间内在联系及区别的术语是() A、读若 B、谓 C、如字 D析言 7、“盗,逃也”。释义的方式是() A、互训 B、直训 C、义界 D、推因 8、《陈情表》:“而今刘氏,日薄西山,气息淹淹。”句中“薄”的读音是() A、bá B、bà C、báo D、pā 9、“肥,多肉也”释义的方式是 A、互训 B、推因 C、摹写 D、义界 10、“百丈山怀海禅师始立天下禅林规式,谓之清规。”“清规”指() A、佛寺所定的规则和戒律 B、满清规矩 C、清真规矩 D、繁琐、不合理的成规 11、下列词语,属于佛教词汇的是() A、庄严 B、庄重 C、严肃 D、威严

12、《上林赋》:“仁频并闾”仁频即槟郎。句中“仁频”来自() A、朝鲜语 B、日语 C、爪哇语 D、马来西亚语 13、下列着作郭璞作注的是() A、《诗经》 B、《论语正义》 C、《孝经正义》 D、《尔雅正义》 14、孔颖达撰《五经正义》,包括《尚书正义》、《毛诗正义》、《礼记正义》、《春秋左传正义》和() A、《周易正义》 B、《论语正义》 C、《孝经正义》 D、《尔雅正义》 15、《孟子正义》的着者是() A、陈奂 B、马瑞尘 C、刘宝楠 D、焦循 16、汉朝人注释经籍鉴定了训诂学的基础,代表人物有() A、毛晋 B、郑玄 C、孔颖达 D、邢岗 17、训诂学发展的中落期在 A、先秦 B、两汉 C、魏至唐 D、宋至明 18、《诗经·南周·桃夭》:“之子于归,宜其室家。”“归”指() A、出嫁 B、回家 C、偿还 D、行礼 19、古籍在刻印、传抄过程中出现的失落字现象称为() A、衍文 B、脱文 C、讹文 D、倒文 20、利用他书来校勘本书的校勘法叫做() A、对校法 B、他校法 C、文物校书法 D、理校法 二、多项选择题(每小题列出的五个选项中至少有两个是符合题目要求的,将代码填写在题后的括号内,少选、错选、多选均不得分;本大题共5小题,每小题2分,共10分) 1、章炳麟《国故论衡》认为,“训诂”包含() A、通论 B、驸经 C、绪论 D、略例 E、概说 2、训诂的方法包括 A、据文证义 B、依境别义 C、因声求义 D、以形索义 E、析词审义 3、萧统的《文选》在唐代主要的注体有() A、李善注 B、五臣注 C、郭璞注 D、范宁注 E、孔颖达注

数据库应用基础第4章习题参考答案

习题 1.选择题 (1)设A、B两个数据表的记录数分别为3和4,对两个表执行交叉联接查询,查询结果中最多可获得(C )条记录。 A.3 B. 4 C. 12 D. 81 (2)如果查询的SELECT子句为SELECT A, B, C * D,则不能使用的GROUP B子句是( A )。 A.GROUP BY A B.GROUP BY A,B C.GROUP BY A,B,C*D D.GROUP BY A,B,C,D (3)关于查询语句中ORDER BY子句使用正确的是( C )。 A.如果未指定排序字段,则默认按递增排序 B.数据表的字段都可用于排序 C.如果在SELECT子句中使用了DISTINCT关键字,则排序字段必须出现在查询结果中 D.联合查询不允许使用ORDER BY子句 (4)在查询设计器中,不能与其他窗格保持同步的是(D )。 A.关系图窗格 B. 网格窗格 C.SQL窗格 D. 结果窗格 (5)下列函数中,返回值数据类型为int的是(B)。 A.LEFT B. LEN C.LTRIM D. SUNSTRING 2.填空题 (1) 在启动查询分析器时,在登录对话框中可使用(Local)作为本地服务器名称。 (2) 查询分析器窗口主要由对象浏览器和(查询)窗口组成。 (3) 从Windows“开始”菜单启动查询分析器后,默认数据库为(master)。 (4) 以表格方式显示的查询结果保存为(导出)文件,其文件扩展名为(csv);以文本方式显示的查询结果保存为(报表)文件,其文件扩展名为(rpt)。 (5) 可使用(PRINT)或(SELECT)语句来显示函数结果。 (6) 在查询语句中,应在(SELECT)子句中指定输出字段。 (7) 如果要使用SELECT语句返回指定条数的记录,则应使用(TOP)关键字来限定输出字段。 (8) 联合查询指使用(UNION)运算将多个(查询结果)合并到一起。 (9) 当一个子SELECT的结果作为查询的条件,即在一个SELECT语句的WHERE子句中出现另一个SELECT语句,这种查询称为(嵌套)查询。 (10) 连接查询可分为3种类型:(内连接)、(外连接)和交叉连接。 3.问答题 (1) 在SELECT语句中,根据列的数据对查询结果进行排序的子句是什么?能消除重复行的关键字是什么? (2) 写出与表达式“仓库号NOT IN('wh1','wh2')”功能相同的表达式。用BETWEEN、AND形式改写条件子句WHERE mark> 550 AND mark<650。 (3) 在一个包含集合函数的SELECT语句中,GROUP BY子句有哪些用途?

arm9嵌入式课后答案

arm9嵌入式课后答案 【篇一:arm嵌入式系统结构与编程习题答案(全)】ass=txt>第一章绪论 1. 国内嵌入式系统行业对“嵌入式系统”的定义是什么?如何理解?答:国内嵌入式行业一个普遍认同的定义是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,可靠性,成本,体积,功耗严格要求的专业计算机系统。从这个定义可以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的剪裁利用。因此有人把嵌入式系统比作是一个针对特定的应用而“量身定做”的专业计算机系统。 2.嵌入式系统是从何时产生的,简述其发展历程。 答:从20世纪70年代单片机的出现到目前各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了30多年的发展历史。 嵌入式系统的出现最初是基于单片机的。intel公司1971年开发出第一片具有4位总线结构的微处理器4004,可以说是嵌入式系统的萌芽阶段。80年代初的8051是单片机历史上值得纪念的一页。20世纪80年代早期,出现了商业级的“实时操作系统内核”,在实时内核下编写应用软件可以使新产品的沿着更快,更节省资金。20世纪90年代实时内核发展为实时多任务操作系统。步入21世纪以来,嵌入式系统得到了极大的发展。在硬件上,mcu的性能得到了极大的提升,特别是arm技术的出现与完善,为嵌入式操作系统提供了功能强大的硬件载体,将嵌入式系统推向了一个崭新的阶段。 3.当前最常用的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点。答:主要有嵌入式linux和嵌入式实时操作内核uc/os-ii 嵌入式linux操作系统是针对嵌入式微控制器的特点而量身定做的一种linux操作系统,包括常用的嵌入式通信协议和常用驱动,支持多种文件系统。主要有以下特点:源码开放,易于移植,内核小,功能强大,运行稳定,效率高等。 uc/os是源码工卡的实时嵌入式系统内核,主要有以下特点:源码公开,可移植性强,可固化,可剪裁,占先式,多任务,可确定性,提供系统服务等。

《ARM嵌入式系统结构与编程》第二章课后答案

第2章ARM技术与ARM体系结构 1.简述ARM处理器内核调试结构原理 答:ARM处理器一般都带有嵌入式追踪宏单元ETM(Embedded Trace Macro),它是ARM 公司自己推出的调试工具。ARM处理器都支持基于JTAG(Joint Test Action Group 联合测试行动小组)的调试方法。它利用芯片内部的Embedded ICE来控制ARM内核操作,可完成单步调试和断点调试等操作。当CPU处理单步执行完毕或到达断点处时,就可以在宿主机端查看处理器现场数据,但是它不能在CPU运行过程中对实时数据进行仿真。 ETM解决了上述问题,能够在CPU运行过程中实时扫描处理器的现场信息,并数据送往TAP(Test Access Port)控制器。上图中分为三条扫描链(图中的粗实线),分别用来监视ARM核,ETM,嵌入式ICE的状态。 1.分析ARM7TDMI-S各字母所代表的含义。 答:ARM7 T D M I – S 中 ARM是Advanced RISC Machines的缩写 7是系列号; T:支持高密度16位的Thumb指令集; D:支持JTAG片上调试; M:支持用于长乘法操作(64位结果)ARM指令,包含快速乘法器;; I:带有嵌入式追踪宏单元ETM,用来设置断点和观察点的调试硬件; S:可综合版本,意味着处理器内核是以源代码形式提供的。这种源代码形式又可以编译成一种易于EDA工具使用的形式。 2.ARM处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常模式,并指出处 理器在什么情况下进入相应的模式。 答:ARM技术的设计者将ARM处理器在应用中可能产生的状态进行了分类,并针对同一类型的异常状态设定了一个固定的入口点,当异常产生时,程序会自动跳转到对应异常入口处进行异常服务。 ?1.用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下 执行。在用户模式下,如果没异常发生,不允许应用程序自行改变处理器的工作模式,如果有异常发生,处理器不会自动切换工作模式 ?2.FIQ模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优先

训诂学试题(1)汇总

训诂学试题 一、解释下列训诂术语(每题3分,共15分) 1.形训——是以形说义的方法,即通过对字的形体结构的分析来寻求解释词义的释词方法。 2.互训——即以意义相同之字,相互训释。 3.犹——相当于现代汉语的“等于说”,一般用于以同义词或近义词作释。 4.读曰——又称“读为”“破字”,即用本字本义来说明假借字。 5.当为——校勘术语,用以直接指明正字以纠正误字。也称“当作”。 二、填空题(每空1分,共20分) 1.我国的传统语言学(旧称小学)大体上包括三个部分,即_音韵学_、_文字学_、_训诂学_。 2.所谓义疏,也是一种传注形式,其名源于六朝佛家的解释佛典,以后泛指_正义_。 3.学习和研究训诂学,应该采取正确的态度,它要求实事求是、无征不信。具体说来,应注意如下三点:一曰务平实,忌好奇;二曰重证据,戒臆断;三曰宁阙疑,勿强解。 4.谓和谓之不同:使用谓之时,被释的词放在谓之的后面;使用谓时,被释的词放在谓的前面。 5.《一切经音义》有两种,一种的编者是释玄应,凡二十五卷;另一种的编者是释慧琳,凡一百卷。 6.王念孙、王引之,世称高邮王氏父子,称他们的四部主要著作为高邮王氏四种,即:《读书杂志》、《广雅疏证》、《经义述闻》、《经传释词》。 7.读破又称破字或易字,这个术语包含两个意思:其一是指用本字来改读古书中的假借字。其二是指改变一个字原来的读音以表示意义的转变。 8.训诂的中心内容是释词,因此所谓训诂的方法,主要就是释词的方法。 三、辨识下列各题解释的正误(判断下列各题,正确的在题后括号内打“√”,错的打“╳”。每小题2分,共10分) 1.诸将微闻其计,以告项羽。( ╳ ) 微闻:略略听到。 2.若跨有荆、益,保其岩阻。( √ ) 保:依恃,凭仗。 3.察笃夭隐,孤寡存只。( √ ) 笃:察。 4.杯觞引满从衣湿,墙壁书多任手顽。( ╳ ) 从:随着。 5.牧童向日眠春草,渔父隈岩避晚风。(╳ ) 隈:躲在。 五、写出下列训诂学家的主要著作(每小题1分,共8分) 1.郝懿行:《易说》《书况》 2.刘熙:释名、孟子注 3.张揖:广雅、埤仓、古今字诂 4.颜师古:匡谬正俗、急就章注、汉书注、五经正义 5.郭璞:尔雅注 6.服虔:春秋左氏传行谊、春秋汉义驳 7.邢昺:论语正义尔雅义疏孝经正义 8.桂馥:说文解字义证 六、写出下列著作的作者及主要内容(每题4分,共12分) 1.周礼正义——书名,八十六卷,二百余万字,

第四章课后习题参考答案

1 数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与“数据 链路接通了”的区别何在? 答:(1)数据链路与链路的区别在于数据链路除链路外,还必须有一些必要的通信协议来控制数据的传输。因此,数据链路比链路多了实现通信协议所需要的硬件和软件。 (2)“电路接通了”表示链路两端的结点交换机已经开机,物理连接已经能够传送比特流了。但是,数据传输并不可靠。在物理连接基础上,再建立数据链路连接,才是“数据链路接通了”。此后,由于数据链路连接具有检测、确认和重传等功能,才使不太可靠的物理链路变成可靠的数据链路,进行可靠的数据传输。当数据链路断开连接时,物理电路连接不一定跟着断开连接。 2 数据链路层中的链路控制包括哪些功能? 答:数据链路层中的链路控制包括链路管理;帧同步;流量控制;差错控制;将数据和控制信息分开;透明传输;寻址等功能。 数据链路层做成可靠的链路层的优点和缺点取决于所应用的环境:对于干扰严重的信道,可靠的链路层可以将重传范围约束在局部链路,防止全网络的传输效率受损;对于优质信道,采用可靠的链路层会增大资源开销,影响传输效率。 3数据链路层的三个基本问题(帧定界,透明传输和差错检测)为什么都必须加以解决? 答:帧定界是分组交换的必然要求;透明传输是避免二进制比特流中出现与帧定界符号相同的模式,使节点错误识别帧;差错检测是为了避免接收到错误信息和防止信道中出现的无效数据帧浪费后续路由上的传输和处理资源。 4 如果在数据链路层不进行帧定界,会发生什么问题? 答:在数据传输过程中的传输网中的结点及接收方将无法区分分组(帧),也将不能确定分组的控制域和数据域,也不能实现差错控制。 5 PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不能使数据链路层实现可靠传输? 答:1,PPP是面向字节的点对点通信协议,适用于线路质量不太差的情况,其主要特点:(1)协议简单,不使用序号和确认机制,也不需要流量控制;具有检错能力,但无纠错功能;只支持点到点的链路通信和和全双工链路(2)PPP规定特殊的字符为帧界定符,且在同步传输链路时,采用比特填充法,当用在异步传输时,使用字符填充法来保证数据传输的透明性; (3)PPP可同时支持链路所连接的LAN或ROUTER上运行的多种网络层协议;(4)可在多种点到点的链路上运行(串行,并行,高速,低速,电的,光的,交换的或非交换的),并可自动检测链路的工作状态,同时对不同的链路设置最大传输单元MTU(帧的有效载荷)的标准默认值;(5)提供了网络地址协议和数据压缩功能. 2,在TCP/IP协议簇中,可靠的传输由TCP协议负责,而PPP只进行检错,它是一个不可靠的传输协议,因此不需要帧的编号。 3,PPP适用于质量不太差的点对点全双工通信链路,且上层协议要保证数据传输的可靠性,如用户通过ISP连接Internet. 4,(1)PPP只提供了检错功能,当发现帧出现错误时,只是将其丢弃;(2)PPP帧没有使用序号,接收端不能通过序号确认帧的顺序和是否完全到达。 6 要发送的数据为1101011011。采用CRC的生成多项式是P(x)=x4+x+1 。试求应添加在数 据后面的余数。 数据在传输过程中最后一个1变成了0,问接收端能否发现? 若数据在传输过程中最后两个1都变成了0,问接收端能否发现? 答:添加的检验序列(冗余码)为1110 (11010110110000除以数P=10011)

嵌入式期末复习提纲包含答案

嵌入式期末复习提纲包 含答案 文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]

考试题型: ?1、判断题 10分 ?2、填空题 20分 ?3、选择题 20分 ?4、简答题 30分(5个) ?5、应用题 20分(3个) ?6、名字解释 复习资料: ?书本 ?PPT课件,平时课堂例题。 ?平时作业和练习 ?考试范围:1-5章 ?其他说明: ?课后习题是重点。 ?简答题来源于前5章,每章一个。 每章重点: 第一章: 1.什么是嵌入式系统试简单列举一些生活中常见的嵌入式系统的实例。 嵌入式系统是用于检测、控制、辅助、操作机械设备的装置。以应用为中心,一计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗等严格要求的专用计算机系统。 2.嵌入式系统具有哪些特点 3.嵌入式系统由哪些部分组成简单说明各部分的功能和作用。

4.嵌入式系统是怎样分类的 5.嵌入式系统的定义。 嵌入式系统是用于检测、控制、辅助、操作机械设备的装置。以应用为中心,一计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗等严格要求的专用计算机系统。 6.什么是交叉编译,试说明交叉编译的实现过程。 7.嵌入式系统有哪些应用领域。 嵌入式系统技术具有非常广阔的应用前景,其应用领域可以包括: 1.工业控制: 基于嵌入式芯片的工业自动化设备将获得长足的发展,目前已经有大量的8、16、32位嵌入式微控制器在应用中,网络化是提高生产效率和产品质量、减少人力资源主要途径,如工业过程控制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统。就传统的工业控制产品而言,低端型采用的往往是8位单片机。但是随着技术的发展,32位、64位的处理器逐渐成为工业控制设备的核心,在未来几年内必将获得长足的发展。 2.交通管理: 在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式系统技术已经获得了广泛的应用,内嵌GPS模块,GSM模块的移动定位终端已经在各种运输行业获得了成功的使用。目前GPS设备已经从尖端产品进入了普通百姓的家庭,只需要几千元,就可以随时随地找到你的位置。 3.信息家电:

(完整版)嵌入式系统课后答案马维华

第1章嵌入式系统概述 1,什么是嵌入式系统嵌入式系统的特点是什么 嵌入式系统概念: (1) IEEE对嵌入式系统的定义:用于控制,监视或者辅助操作机器和设备的装置. (2)一般定义:以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能,可靠性,成本,体积,功耗有严格要求的专用计算机系统. 嵌入式系统的特点: (1) 专用的计算机系统 (2) 必须满足环境要求 (3) 必须能满足对象系统的控制要求 (4) 是集成计算机技术与各行业应用的集成系统 (5) 具有较长的生命周期 (6) 软件固化在非易失性存储器中 (7) 必须能满足实时性要求 (8) 需要专用开发环境和开发工具 2,简单分析几种嵌入式操作系统的主要特点,包括嵌入式Linux,Windows CE,uCOS II 及VxWorks. (1)嵌入式Linux:有多个主流版本,根据应用需求,性能略有差别.μCLinux是Linux小型化后,适合于没有MMU的微处理器芯片而裁剪成的操作系统,μCLinux保持了传统Linux操作系统的主要特性,包括稳定,强大的网络和文件系统的支持,μCLinux裁剪了大量的Linux内核以缩小尺寸,适合像512KB RAM,1MB Flash这样小容量,低成本的嵌入式系统.RT_Linux即能兼容通常的Linux,又能保证强实时性. (2)Windows CE:开发平台主要为WinCE Platform Builder,有时也用EVC环境开发一些较上层的应用.WinCE开发难度远低于嵌入式Linux,实时性略低,常用于手机,PDA等手持设备中. (3)uCOS II:结构小巧,抢先式的实时嵌入式操作系统,具有执行效率高,占用空间小,可移植性强,实时性能好和可扩展性能等优点.主要用于小型嵌入式系统. (4) VxWorks: 集成开发环境为Tornado,Vxworks因出现稍早,实时性很强,并且内核可极微(最小8K),可靠性较高等.通常应用在通信设备等实时性要求较高的系统中. 第2章嵌入式处理器体系结构 1,具体说明ARM7TDMI的含义,其中的T,D,M,I分别代表什么 ARM7TDMI是ARM7处理器系列成员之一,采用V4T版本指令.T表示Thumb,该内核可从16位指令集切换到32位ARM指令集;D表示Debug,该内核中放置了用于调试的结构,支持片内Debug调试;M表示Multiplier,支持位乘法;I表示Embedded ICE ,内含嵌入式ICE宏单元,支持片上断点和观察点. 2,ARMV4及以上版本的CPSR的哪一位反映了处理器的状态若CPSR=0x000000090,分析系统状态.CPSR=0x000000090表示当前处理器工作于ARM状态,系统处于用户模式下. CPSR的BIT5(T)反映当前处理器工作于ARM状态或Thumb状态. 3,ARM有哪几个异常类型,为什么FIQ的服务程序地址要位于0x1C 在复位后,ARM处理器处于何种模式,何种状态 ARM的7种异常类型:复位RESET异常,未定义的指令UND异常,软件中断SWI异常,指令预取中止PABT异常,数据访问中止DABT异常,外部中断请求IRQ异常,快速中断请求FIQ 异常.在有快速中断发生时,CPU从0x1C处取出指令执行.ARM复位后处于管理模式,工作于ARM状态. 4,为什么要使用Thumb模式,与ARM代码相比较,Thumb代码的两大优势是什么

2018年自考《训诂学》试题及答案

2018年自考《训诂学》试题及答案 填空题 □“训”和“诂”两个字连用,最早见于汉代毛亨所作的《毛诗诂训传》。 □孔颖达认为:“诂者,古也。古今异言,通之使人知也。训者,道也。道物之貌以告人也。”“诂”是解释“异言”的,“训”是“道形貌”的。 □《毛诗诂训传名义考》的作者是马瑞辰。 □黄侃先生认为:诂就是故,本来的意思。解释词的本义。训就是顺,引申的意思,解释词的引申义。训诂是用语言来解释语言,包括词的本义和引申义。□训诂工作是以扫除古代文献中语言文字障碍为实用目的的一种工具性的专 门工作。 □训诂工作主要有三种:注释工作、纂集工作、考证工作。 □训诂材料包括:随文释义的注释材料,跟注释工作相对应;纂集类训诂专书,跟纂集工作相对应;考证材料,与考证工作相对应的材料。 □前人所称的“传”、“说”、“解”、“诠”、“疏”、“证”、“微”、“诂”、“注”、“义证”、“正义”等,都是随文注释的名称。 □纂集类训诂专书有:依物类分篇汇集同训词的《尔雅》;依照据形说义原则用部首统帅文字的《说文解字》;专门纂集声训以明语源的《释名》;沟通方言词与标准语音义的《方言》等。 □考证专书包括:孔颖达《五经正义》;顾炎武《日知录》;王念孙、王引之《读书杂志》与和《经义述闻》;钱大昕《二十二史考异》与《十驾斋养新录》;赵翼《陔余丛考》;沈家本《历代刑法考》;李慈铭《越慢堂日记》; □训诂体例指训诂工作中所运用的训诂体式和条例。它包括对训诂现象的科学解释,对训诂方法科学依据的理论说明和从程序上加以分解,对文献词义的存在形式、运动规律、特点性质的科学论述。 □黄侃说:“训诂者,用语言解释语言之谓。若以此地之语释彼地之语,或以今时之语释昔时之语,虽属训诂之所有事,而非构成之原理。真正之训诂学,即以语言解释语言,初无时地之限域,且论其法式,明其义例,以求语言文字之系统与根源是也。” □训诂是用语言解释语言的材料,训诂学是研究语言意义的理论。 □训诂学三个时期是:早期训诂学、晚期训诂学、现代训诂学。 □文字学、音韵学和训诂学(字的形、音、义)古代合称“小学”。 □训诂学在具体实践中所面临的两大任务是:应用训诂学和理论训诂学。 □应用训诂学侧重于实际应用,主要是解读和注释古代文献。 □理论训诂学侧重于理论探讨,如词和义之间的关系等。□应用训诂学和理论训诂学二者的关系是:理论探讨以实际应用为目的,实际应用以理论探讨为指导。 □训诂的产生期在先秦两汉;训诂的深入与扩展期在魏晋隋唐;训诂的更新与变革期在宋元明;训诂实践的兴盛与训诂理论的探讨期在清代;训诂学科学理论的创建期在近现代。 □训诂的萌芽期在先秦,训诂工作的系统化期在两汉。 □训诂发展的标志主要表现在以下三个方面:再度注释的出现、训诂范围的扩大、集注、集解的出现与字书、韵书、义书的分立。 □再度注释的代表是孔颖达奉敕所作的《五经正义》。 □郭璞注《尔雅》和《方言》。

ARM嵌入式系统课后习题部分答案

A R M嵌入式系统课后 习题部分答案 SANY标准化小组 #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

一填空题 嵌入式系统从大的方面分为(嵌入式系统硬件平台)和(嵌入式软件)两大部分。 驱动层程序一般包括(硬件抽象层HAL)、(板级支持包BSP)和(设备驱动程序)。 嵌入式系统核心是嵌入式处理器,可分为(嵌入式微处理器)、(嵌入式微控制器)、嵌入式DSP处理器和(嵌入式片上系统SoC)4大类。 处理器分为(ARM)和(Thumb)两种操作状态。 状态下,SP寄存器指的是(R13)、LR寄存器指的是(R14)、PC寄存器指的是(R15). 处理器支持的数据类型中,字节为(8)位、半字为(16)位、字为(32)位。 (-S)指令集包括(ARM)指令集和(Thumb)指令集。 指令用于从(存储器)中将一个32位的字数据传送到(目的寄存器)中。指出下面各条指令的寻址方式。 SUB R0,R1,R2 ;寻址方式:(寄存器寻址)。 SUBS R0,R0,#1 ;寻址方式:(立即寻址)。 MOV R0,R2,LSL#3 ;寻址方式:(寄存器移位寻址)。 SWP R1,R1,[R2] ;寻址方式:(寄存器间接寻址)。 LDR R2,[R3,#0x0C] ;寻址方式:(基址寻址)。 汇编语言源程序中语句一般有(指令)、(伪指令)、(伪操作)和宏指令组成。 对Flash存储器的编程可通过(JTAG仿真/调试器)、( ISP )和(IAP)3重方法来实现。 异常向量表可以来自4个不同的存储器区域,分别是(片内Flash )、(片内SRAM )、( Boot Block )和片外存储器。 系列的定时器主要用于3个方面:(对内部事件进行计数的间隔定时器)、(通过捕获输入实现脉宽解调器)、(自由运行的定时器)。二选择题 可以表示微控制器的缩略词是( B ) A. MPU B. MCU C. WDT 类存储器包括( ABD ) A. NOR Flash B. EPROM C. SRAM D. PROM 不属于ARM的系列是( D ) A. MCS-96 B. 80C51 C. LPC2000 处理器系列采用( A )级流水线。 A. 3 B. 5 C. 6 D. 8 下面ARM处理器模式中属于特权模式的有( BCD ) A. 用户模式 B. 中断模式 C. 系统模式 D. 管理模式 (或STM)指令允许一条指令最多传送( C )个寄存器。 A. 4 B. 8 C. 16 D. 24 指令限制在当前指令的( B )地址范围。

ARM嵌入式系统基础教程第二版课后习题答案

第1章嵌入式系统概述 (1)举出3个本书中未提到的嵌入式系统的例子。 答:键盘、鼠标、扫描仪。 (2)什么叫嵌入式系统? 答:嵌入到对象体系中的专用计算机应用系统。 (3)什么叫嵌入式处理器?嵌入式处理器分为哪几类? 答:嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。分为3类:1.注重尺寸、能耗和价格;2.关注性能;3.关注全部4个需求——性能、尺寸、能耗和价格。 (4)什么是嵌入式操作系统?为何要使用嵌入式操作系统? 答:嵌入式操作系统是操作系统的一种类型,是在传统操作系统的基础上加入符合嵌入式系统要求的元素发展而来的。原因:1.提高了系统的可靠性;2.提高了开发效率,缩短了开发周期。3.充分发挥了32位CPU的多任务潜力。 第2章ARM7体系结构 1.基础知识 (1)ARM7TDMI中的T、D、M、I的含义是什么? 答:T:高密度16位Thumb指令集扩展;D:支持片上调试;M:64位乘法指令;I:Embedded ICE硬件仿真功能模块。 (2)ARM7TDMI采用几级流水线?使用何种存储器编址方式? 答:3级;冯·诺依曼结构。 (3)ARM处理器模式和ARM处理器状态有何区别? 答:ARM处理器模式体现在不同寄存器的使用上;ARM处理器状态体现在不同指令的使用上。 (4)分别列举ARM的处理器模式和状态? 答:ARM的处理器模式:用户模式、系统模式、管理模式、中止模式、未定义模式、中断模式、快速模式;ARM的处理器状态:ARM状态、Thumb状态。 (5)PC和LR分别使用哪个寄存器? 答:PC:R15;LR:R14。 (6)R13寄存器的通用功能是什么? 答:堆栈指针SP。 (7)CPSR寄存器中哪些位用来定义处理器状态?

《训诂学基础》期末试题A卷附答案

《训诂学基础》期末试题A卷附答案 试题部分 一、单项选择题(每小题1分,共5分) 1.?训?和?诂?两个字连用,最早见于( ) A. 《毛诗诂训传》 B. 《毛诗诂训传名义考》 C. 《说文解字》 D. 《尔雅》 2.魏晋隋唐时期是() A. 训诂的产生期 B. 训诂的深入与扩展期 C. 训诂的更新与变革期 D. 训诂实践的兴盛与训诂理论的探讨期 3.《说文解字注》的作者是() A. 许慎 B. 梅膺祚 C. 段玉裁 D. 戴震 4.《墨子间诂》属于() A. 传注 B. 章句 C. 义疏 D. 集解 5.《释名》的作者是() A. 许慎 B. 段玉裁 C. 刘熙 D. 黄侃 二、填空题(每小题2分,共10分) 1.三种不同性质的训释是:、、。 2.训诂考证的三种方法:、、。 3.黄侃先生认为:诂就是,本来的意思。解释词的。训就是,引申的意思,解释词的。训诂是用语言来解释语言,包括词的。 4.声训的作用主要有两个:、。 5.从训诂的体式来看,专门解释古书正文的叫,既解释古书的正文,又解释前人的传住的一般叫。 三、名词解释题(每小题3分,共18分) 1.乾嘉学派: 2.《经籍纂诂》: 3.以形说义: 4.义训:

5.同源词: 增字足义: 四、说明下列各例属何种训诂方式(每小题1分,共10分) 1、宫谓之室,室谓之宫。(《尔雅·释宫》) 2、党、晓、哲,知也。楚谓之党,或曰晓;齐宋之间谓之哲。(《方言》) 3、二足以羽谓之禽,四足而毛谓之兽。(《尔雅·释鸟》) 4、邑外曰郊,郊外曰野。(《诗政训传》) 5、天,颠也。(《说文解字》) 6、福者,备也;备者,备百顺之名也,无所不顺之谓备。(《礼记》) 7、采,采取也,从木从爪。(《说文解字》) 8、庸也者,用也;用也者,通也者,得也。(《庄子·齐物论》) 9、乱,治也。(《尔雅·释诂》) 10、黑与青谓之黻,五色备课之绣。(《诗政训传》) 五、简答题(每小题5分,共25分) 1.义界的实质、原则是什么?它的局限性是什么? 2.通释语义与随文释义的区别是什么? 3.解释?望文生训?的含义,并说明产生这一训诂弊病的主要原因。

第四章习题答案

教材习题答案 分析图电路的逻辑功能 解:(1)推导输出表达式 Y2=X2;Y1=X 1X2;Y0=(MY1+X 1M)X0 X2X1X0Y2Y1Y0 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111000 001 011 010 110 111 101 100 000 001 011 010 111 110 100 101 (3)逻辑功能:当M=0时,实现3位自然二进制码转换成3位循环码。 当M=1时,实现3位循环码转换成3位自然二进制码。分析图电路的逻辑功能。 图 解:(1)从输入端开始,逐级推导出函数表达式。 F1 = A⊕B⊕C

F2 = A(B⊕C) + BC= A BC + AB C +ABC + ABC (2)列真值表 表4.3.2 A B C F1F2 000 001 010 011 100 101 110 11100 11 11 01 10 00 00 11 (3)确定逻辑功能。由真值表可知,该电路实现了一位全减器的功能。 A、B、C、F1、F2分别表示被减数、减数、来自低位的借位、本位差、本位向高位的借位。分析图电路的逻辑功能 解:(1)F1=A B C;F2=(A B)C+AB (2)真值表: A B C F2F1 000 001 010 011 100 101 110 11100 01 01 10 01 10 10 11

(3)逻辑功能:实现1位全加器。 设ABCD是一个8421BCD码,试用最少与非门设计一个能判断该8421BCD码是否大于等于5的电路,该数大于等于5,F= 1;否则为0。 解:(1)列真值表 表4.3.4 (2)写最简表达式

单片机原理及应用张毅刚课后习题答案完整版

第1章思考题及习题1参考答案 一、填空 1. 除了单片机这一名称之外,单片机还可称为或。答:微控 制器,嵌入式控制器. 2.单片机与普通微型计算机的不同之处在于其将、、和 三部分,通过内部连接在一起,集成于一块芯片上。答:CPU、存储器、I/O口、总线 3. AT89S52单片机工作频率上限为 MHz。答:33 MHz。 4. 专用单片机已使系统结构最简化、软硬件资源利用最优化,从而大大降低 和提高。答:成本,可靠性。 二、单选 1. 单片机内部数据之所以用二进制形式表示,主要是 A.为了编程方便B.受器件的物理性能限制 C.为了通用性D.为了提高运算速度答:B 2. 在家用电器中使用单片机应属于微计算机的。 A.辅助设计应用B.测量、控制应用

C.数值计算应用D.数据处理应用 答: B 3. 下面的哪一项应用,不属于单片机的应用范围。 A.工业控制 B.家用电器的控制 C.数据库管理 D.汽车电子设备 答:C 三、判断对错 1. STC系列单片机是8051内核的单片机。对 2. AT89S52与AT89S51相比,片内多出了4KB的Flash程序存储器、128B的RAM、 1个中断源、1个定时器(且具有捕捉功能)。对 3. 单片机是一种CPU。错 4. AT89S52单片机是微处理器。错 5. AT89C52片内的Flash程序存储器可在线写入,而AT89S52则不能。错 6. 为AT89C51单片机设计的应用系统板,可将芯片AT89C51直接用芯片AT89S51替换。对 7. 为AT89S51单片机设计的应用系统板,可将芯片AT89S51直接用芯片AT89S52替换。对

《嵌入式》课后习题答案

第一章 1.简述嵌入式的定义 以应用为中心、以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 2.举例说明嵌入式系统的“嵌入性”、“专用性”、“计算机系统”的基本特征。 按照嵌入式系统的定义,嵌入式系统有3个基本特点,即“嵌入性”、“专用性”与“计算机”。 “嵌入性”由早期微型机时代的嵌入式计算机应用而来,专指计算机嵌入到对象体系中,实现对象体系的智能控制。当嵌入式系统变成一个独立应用产品时,可将嵌入性理解为内部嵌有微处理器或计算机。 “计算机”是对象系统智能化控制的根本保证。随着单片机向MCU、SoC发展,片内计算机外围电路、接口电路、控制单元日益增多,“专用计算机系统”演变成为“内含微处理器”的现代电子系统。与传统的电子系统相比较,现代电子系统由于内含微处理器,能实现对象系统的计算机智能化控制能力。 “专用性”是指在满足对象控制要求及环境要求下的软 硬件裁剪性。嵌入式系统的软、硬件配置必须依据嵌入对象

的要求,设计成专用的嵌入式应用系统。 3. 简述嵌入式系统发展各阶段的特点。 (1)无操作系统阶段:使用简便、价格低廉;(2)简单操作系统阶段:初步具有了一定的兼容性和扩展性,内核精巧且效率高,大大缩短了开发周期,提高了开发效率。 (3)实时操作系统阶段:系统能够运行在各种不同类型的微处理器上,具备了文件和目录管理、设备管理、多任务、网络、图形用户界面Graphic User Interface,GUI)等功能,并提供了大量的应用程序接口Application Programming Interface,API),从而使应用软件的开发变得更加简单。(4)面向Internet阶段:进入21世纪,Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式技术与Internet技术的结合正在推动着嵌入式系统的飞速发展 4.简述嵌入式系统的发展趋势。 (1)新的微处理器层出不穷,精简系统内核,优化关键算法,降低功耗和软硬件成本。(2)Linux、Windows CE、Palm OS等嵌入式操作系统迅速发展。(3)嵌入式系统的开发成了一项系统工程,开发厂商不仅要提供嵌入式软硬件系统本身,同时还要提供强大的硬件开发工具和软件支持包。

历史系史学概论考试试题及答案

一切历史都是当代史:这个命题包含三层意思:一是研究历史总是研究者现时 现刻的思想活动;二是历史研究是由现时生活需要激发起来的;三是历史是按 现时人的兴趣和价值取向来思考和理解的。这个命题含有明显的历史相对主义 的消极成分,但也含有一定的合理因素,那就是确认了一个事实:历史认识的 起点,来源于研究者感受到的现实需要。 列举从古自今史考的名著:司马光《通鉴考异》、顾炎武《日知录》、赵翼《廿二史札记》、钱大昕《廿二史考异》、王鸣盛《十七史商榷》、章学诚《文史通义》、崔述《考信录》 列举20世纪历史学概论性著作:曹佐熙《史学通论》、李则纲《史学通论》、周容《史学通论》、杨鸿烈《史学通论》、李大钊《史学要论》、朱希祖《中国史学通论》、蒋祖怡《史学纂要》。 列举史学方法著作:梁启超《中国历史研究法》、姚永朴《历史研究法》、浮田和民《史学原论》、梁启超《新史学》 马克思史学的东西:翦伯赞《中国史纲》、范文澜《中国通史简编》、吕振羽《简明中国通史》 侯外庐《中国思想通史》、郭沫若《中国古代社会研究》 列举出列举出五部查阅资料的工具书:唐代欧阳洵《艺文类聚》、北宋李昉、李穆《太平御览》、三国魏文帝时刘劭、王象等《皇览》、明解缙《永乐大典》、,清纪昀《四库全书总目》、宋代李昉﹑扈蒙﹑李穆《太平广记》、北宋李昉﹑徐铉﹑宋白及苏易《文苑英华》、清朝陈梦雷《古今图书集成》、唐初的虞世南《北堂书钞》 名解历史观:历史观又称“社会历史观”。人们对社会历史的根本观点、总的看法,是世界观的组成部分。世界观与历史观是相互影响、相互制约的。历史观 的基本问题是社会存在与社会意识的关系问题,这是哲学基本问题在社会历史 领域的延伸。阶级史观(革命史观) 又称阶级斗争史观,从阶级的视角去研究历史,研究各个历史阶层中不同主导的阶级和各个阶级的发展状况对所在历史时 期的影响、文明史文明史观认为,人类社会的历史就是人类文明演进的历史、 唯物史观生产力决定生产关系,生产关系综合的经济基础决定上层建筑;生产 关系对生产力,上层建筑对经济基础有巨大的反作用。全球史观(整体史观)、(近)现代化史观、英雄史观、正统史观、个人历史观等。 历史比较研究法:历史比较研究法是对历史上同类事件、人物和现象进行比较 和对照,并分析其异同及缘由,从而寻求历史规律的一种方法。遵循“可比性 原则”——拿来作比较的事物,其材料必须是同类的,同一范畴的,采用同一 标准的,处理方法也是相同的。从历史事实出发进行比较。明确比较研究的主 题,确定比较对象。深入比较,找出异同。广泛验证,揭示规律。这样就有助 于克服史学研究的片面性、狭隘性,可以起到“间接实验法”的作用结论鲜明, 有说服力有助于开拓视野,启发思路,发现新问题。比较方法不是唯一的,也 不是万能的,结论会有不完全性或或然性,结论还带有很大的揣测性,容易产 生牵强附会。

相关文档
最新文档