练习题8及参考答案

练习题8及参考答案
练习题8及参考答案

练习题8及参考答案

1. 单项选择题

(1)有以下定义和赋值语句中,正确的是。

A. static char str[8]="Good morning";

B. char str[20];str="Good morning";

C. char *p="Good morning";

D. char *p;*p="Good morning";

【答】选项在定义字符指针变量的同时初始化为指向字符串常量的第一个字符。本题答案为C。

(2)已知变量a已定义为int型变量,以下定义并初始化指针变量p的语句中正确的是。

A. int *p=a;

B. int *p=*a;

C. int p=&a;

D. int *p=&a;

【答】D

(3)以下叙述正确的是。

A. 数组名实际上是此数组的首地址,所以数组名相当于一个指针变量

B. 若定义数组 a[2][3],则a+1和*(a+1)完全相等

C. 若定义数组 a[2][3],则++a和a[1]完全等价

D. 某函数的形参为一个数组,则调用此函数时只能将数组名作为对应的实参

【答】选项A是错误的,数组名的确是数组的首地址,但它的值是一个常量,不可改变;选项B是正确的,在二维数组中,若a为数组名,则a+i和*(a+i)同样表示此数组第i行的首地址,所以完全相等,参见《C程序设计教程》的表8.1;选项C是错误的,数组名是数组的首地址,是一个常量,不能执行++运算;选项D是错误的,某函数的形参为一个数组,调用此函数时可将数组名作为对应的实参,也可以将相应的指针变量作为对应的实参。本题答案为B。

(4)有这样的定义float *p[4];则下面的叙述中正确的是。

A. 此定义不正确,形如char *p[4];的定义才是正确的

B. 此定义正确,p是指向一维实型数组的指针变量,而不是指向单个实型变量的指针变量

C. 此定义不正确,C语言中不允许类似的定义

D. 此定义正确,定义了一个指针数组

【答】其中正确答案为D。该语句中,“[]”的优先级最高,所以p是一个数组,其次是float *,进一步表示p数组中每个元素为指向float型数的指针。

(5)若有以下定义语句:

static int a[2][3]={1,3,5,7,9,11};

int m,n;

且0≤m≤1,0≤n≤2,则是对数组元素的正确引用。

A. a[m]+n

B. *(a+5)

C. *(*(a+m)+3)

D. *(*(a+m)+n)

【答】*(*(a+m)+n)等价于a[m][n]。本题答案为D。

(6)有如下函数:

fun(int *p1,int *p2)

{

int *p;

*p=*p1;

*p1=*p2;

*p2=*p;

}

其功能为。

A. 正确,但无法改变*p1和*p2的值

B. 能够成功交换*p1和*p2的值

C. 能够成功交换*p1和*p2的地址

D. 能够成功交换p1和p2的值

【答】该函数交换了*p1和*p2的值,若以fun(&a,&b);语句调用该函数,则交换了a和b的值。本题答案为B。

(7)下面各语句行中,能正确进行字符串赋值操作的是。

A. char st[4][5]={"ABCDE"};

B. char s[5]={'A','B','C','D','E'};

C. char *s;s="ABCDE";

D. char *s;scanf("%s",s);

【答】首先可以排除选项A,因其形式不对。也可以排除选项B,因为字符数组的长度不够,没有考虑字符串结束符。选项D也是错误的,其错误的原因是:在这两条语句中,只确定了指针变量p本身在内存中的地址,但p所指的值没有确定。所以,只有选项C是正确的,C语言中规定可以给字符指针单独赋值。本题答案为C。

(8)执行以下程序段后,m的值为。

static int a[2][3]={1,2,3,4,5,6};

int m,*ptr=&a[0][0];

m=(*ptr)*(*ptr+2)*(*ptr+4);

A. 15

B. 48

C. 24

D. 无定值

【答】*ptr=1,*ptr+2=3,*ptr+4=5,m=1*3*5=15。本题答案为A。

(9)设有定义:

static a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int (*prt)[3]=a,*p=a[0];

则以下能够正确表示数组元素a[1][2]的表达式是。

A. *((*prt+1)[2])

B. (2)*(*(p+5))

C. (*prt+1)+2

D. *(*(a+1)+2)

【答】a是一个二维数组。int (*prt)[3]=a定义中,由于有括号,“*”优先级高,即prt是一个指针,后面有“[3]”,表示prt是一个包含三个元素的数组的指针。int *p=a[0]的初始化中,表示p是一个整数指针变量,指向a数组的第一行的第一个元素即a[0][0]。

用prt表示a[1][2]的各种方式如下:

*(prt[1]+2)

*(*(prt+1)+2)

(*(prt+1))[2]

prt[1][2]

再看以上各种表达式:

选项A、C显然是错误的;选项B中,p+5指向a[0][5],执行两次“*”肯定是错误的;选项D是正确的,因为a是常量,是数组的首地址,*(a+1)指向第二行, *(*(a+1)+2)表示第二行的第三个元素,即a[1][2]。本题答案为D。

(10)若有定义char s[3][4];以下对数组元素s[i][j]的各种引用形式中正确的是。

A.*(s+i)[j]

B.*(&s[0][0]+4*i+j)

C.*((s+i)+j)

D.*(*(s+i)[j])

【答】选项A是错误的,*(s+i)[j]表达式中,运算符[]的优先级最高,故此表达式相当于*(*(s+i+j)),显然这是此数组第i+ j行的第 0个元素的值,而不是s[i][j];选项B是正确的,*(&s[0][0]+4*i+j)是直接使用偏移量法来引用数组元素,根据二维数组在内存中的行优先顺序存放规则,*(&s[0][0]+4*i+j)等价于s[i][j];选项C是错误的,*((s+i)+j)等价于*(s+i+j),是数组第i+j行首地址;选项D是错误的,*(*(s+i)[j])等价于

***(s+i+j),是错误的表达方式。本题答案为B。

(11)有如下程序:

#include

main()

{

static int a[3][4]={1,2,3,4,5,6,7,8};

int (*p)[4]=a;

printf("%d\n",*(p+1)[1]);

}

则下列说法中正确的是。

A. 输出结果为:0

B. 输出结果为:6

C. 输出结果为:0,6

D. 将输出数据元素的地址而不是数据元素的值

【答】程序中先给静态数组a的前两行元素赋了初值,第三行元素取默认值0。在语句int (*p)[4]=a;中,定义了一个二维数组指针,并将a的首地址赋给它。在表达式*(p+1)[1]中,[]的优先级最高,*(p+1)[1]等价于*(*(p+1+1))=*(*(p+2)),即为a数组第三行的第一个元素。所以输出为0。因此,只有A是正确的。(12)以下程序的运行结果是。

#include

main()

{

static int a[]={5,3,7,2,1,5,4,10};

int s=0,k;

for (k=0;k<8;k+=2)

s+=*(a+k);

printf("%d\n",s);

}

A. 17

B. 27

C. 13

D. 无定值

【答】A

(13)以下程序的运行结果是。

#include

main()

{

int a[]={1,2,3,4,5,6};

int x,y,*p;

p=&a[0];

x=*(p+2);

y=*(p+4);

printf("%d,%d,%d\n",*p,x,y);

}

A. 1,3,5

B. 2,4,6

C. 1,1,1

D. 3,3,3

【答】A

(14)以下程序的运行结果是。

#include

main()

{

int a[]={1,2,3,4,5,6};

int *p=a;

printf("%d,",*p);

printf("%d,",*(++p));

printf("%d,",*++p);

printf("%d,",*(p--));

p+=3;

printf("%d,%d\n",*p,*(a+3));

}

A. 1,2,3,3,2,1

B. 1,2,3,3,5,4

C. 1,3,5,3,3,3

D. 1,3,5,5,3,1 【答】B

(15)以下程序的运行结果是。

#include

main()

{

char str[2][5]={"7045","9265"},*a[2];

int i,j,s=0;

for (i=0;i<2;i++)

a[i]=str[i];

for (i=0;i<2;i++)

for (j=0;a[i][j]>'0' && a[i][j]<='9';j+=2)

s=10*s+a[i][j]-'0';

printf("%d\n",s);

}

A. 7496

B. 70936

C. 74936

D. 704936 【答】A

(16)以下程序的运行结果是。

#include

main()

{

static char c[]="china";

char *p=c;

while (*p)

printf("%c",*p++-32);

printf("\n");

}

A. china

B. CHINA

C. ch

D. 陷入死循环【答】B

(17)以下程序的运行结果是。

#include

main()

{

char *pp[2][3]={"abc","defgh","ijkl","mnopqr","stuvw","xyz"};

printf("%c",***(pp+1));

printf("%c",**pp[0]);

printf("%c",(*(*(pp+1)+1))[4]);

printf("%c",*(pp[1][2]+2));

printf(",%s\n",**(pp+1));

}

A. mawz,defgh

B. mawz,mnopqr

C. adim,defgh

D. adim,mnopqr

【答】B

(18)以下程序的运行结果是。

#include

int fun(int x,int y)

{

return(y-x);

}

main()

{

int a=5,b=6,c=2;

int (*g)(int,int);

g=fun;

c=(*g)(a,b);

printf("%d\n",c);

}

A. 1

B. 2

C. 3

D. 以上都不对

【答】A

2. 填空题

(1)有以下定义:

char s[3]="AB";

char *p;

在执行了语句p=s;之后,*(p+2)的值是。

【答】字符数组s长度为2,但在内存中占有3个字节,第3个字节是字符串结束符'\0',所以*(p+2)的值是'\0'。

(2)以下程序的运行结果是。

#include

main()

{

int a[4]={0,1,2,3},*p;

p=&a[2];

printf("%d\n",*--p);

}

【答】p指向a[2],对于表达式*--p,先计算--p,返回a[1]的指针,再计算*运行,返回a[1]。本题答案为:1。

(3)以下程序的运行结果是。

#include

main()

{

static char s[]={"abcdef"};

char *p=s;

*(p+2)+=3;

printf("%c,%c\n",*p,*(p+2));

}

【答】执行语句char *p=s;后,指针p将指向数组s的起始地址;再执行*(p+2)+=3;,将数组元素s[2]的值增加 3,s[2]的值由'c'变为'f',指针 p自身的值并未改变,依然指向数组s的始址,此时执行

printf("%c,%c\n",*p,*(p+2));将输出字符s[0]和s[2],即'a'和'f'。本题答案为:a,f

(4)以下程序的运行结果是。

#include

main()

{

static int a[]={1,3,4,5,7,8};

int y,x,*ptr;

y=1;

ptr=&a[1];

for (x=0;x<3;x++)

y*=*(ptr+x);

printf("%d\n",y);

}

【答】整型指针变量ptr指向整型数组a第2个元素存放的地址位置,即*ptr=3,执行循环y的值即为3*4*5=60。本题答案为:60。

(5)以下程序的运行结果是。

#include

main()

{

static char s[]="Program",*ptr;

for (ptr=s;ptr

putchar(*ptr);

putchar('\n');

}

【答】Porm

(6)以下程序的运行结果是。

#include

main()

{

char *p="abcdefghijklmnopq";

while (*p++!='e')

printf("%c",*p);

printf("\n");

}

【答】bcde

(7)以下程序的运行结果是。

#include

main()

{

int m[12],k;

int *p[3],sum=0;

for (k=0;k<12;k++)

{

m[k]=2*k;

if (k<3)

p[k]=m+2*k*k;

}

for (k=0;k<3;k++)

sum+=(*(p+k))[4-k];

printf("sum=%d\n",sum);

}

【答】数组p为一个指针数组,在使用第一个for循环进行赋值以后,p中各指针的指向分别是:p[0]指向m[0],p[1]指向m[2],p[2]指向m[8]。表达式(*(p+k))[4-k]等价于p[k][4-k],当k=0时,即为m[4],k=1时,即为m[5],k=2时,即为 m[10]。本题答案为:sum=38。

(8)以下程序的运行结果是。

#include

main()

{

int **k,*j,i=100;

j=&i;

k=&j;

printf("%d\n",**k);

}

【答】本程序中,执行语句j=&i;k=&j;之后,j的值是i的地址,k的值是j的地址,经过两次取内容操作,**k的值就是变量i的值0。本题答案为:100。

(9)以下程序的运行结果是。

#include

void g(int **p);

main()

{

int line[100],i;

int *p=line;

for (i=0;i<100;i++)

{

*p=i;

g(&p);

}

for (i=0;i<100;i++)

printf("%d ",line[i]);

printf("\n");

}

void g(int **p)

{

(*(*p))++;

(*p)++;

}

【答】在本程序中添加相应的注释,用于说明程序设计思路。

main()

{

int line[100],i;

int *p=line; /*p是line数组的指针,此时p=line的首地址*/

for (i=0;i<100;i++)

{

*p=i; /*p所指向的值设为i,即line[0]=0,…*/

g(&p); /*p为line数组指针的指针,即line[i]指针的地址*/

}

for (i=0;i<100;i++)

printf("%d ",line[i]);

printf("\n");

}

void g(int **p) /*p为二级指针,调用时p为line[i]指针的地址*/

{

(*(*p))++; /*p所指的变量值增1,即将line[i]之值增1*/

(*p)++; /*p为line[i+1]指针的地址,对执行结果无影响*/

}

本程序的运行结果是:1 2 3 … 100。

(10)以下程序的运行结果是。

#include

main()

{

static int a[]={1,3,5,7};

int *p[3]={a+2,a+1,a};

int **q=p;

printf("%d\n",*(p[0]+1)+**(q+2));

}

【答】指针数组p有3个元素,分别指向数组a的第3、2、1个元素。二级指针q指向指针数组p,则p[0]指向a[2],p[0]+1指向a[3],*(p[0]+1)=7;q指向p,q+2指向p[2],*(p[2])指向a[0],**(p[2])=1。本题答案为:8。

(11)以下程序的运行结果是。

#include

main()

{

int a[3][2]={1,2,3,4,5,6},(*p)[2];

p=a;

printf("%d,%d,%d,%d\n",*(p[2]+1),*(*(p+2)+1),(*(p+2))[1],

p[2][1]);

}

【答】*(p[2]+1),*(*(p+2)+1),(*(p+2))[1],p[2][1]都对应a[2][3]即6。本题答案为:6,6,6,6。

(12)以下程序的运行结果是。

#include

main()

{

int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int (*p)[4]=a,i,j,k=0;

for (i=0;i<3;i++)

for (j=0;j<2;j++)

k+=*(*(p+i)+j);

printf("%d\n",k);

}

【答】*(*(p+i)+j)等价于a[i][j],k=1+3+9+11+17+19=60。本题答案为:60。

(13)以下程序的运行结果是。

#include

int a[5]={0,1,2,3,4};

int *p[5]={a,a+1,a+2,a+3,a+4};

int **pp=p;

main()

{

pp++;

printf("%d,%d,%d\n",pp-p,*pp-a,**pp);

*pp++;

printf("%d,%d,%d\n",pp-p,*pp-a,**pp);

*++pp;

printf("%d,%d,%d\n",pp-p,*pp-a,**pp);

++*pp;

printf("%d,%d,%d\n",pp-p,*pp-a,**pp);

pp=p;

printf("%d,%d,%d\n",pp-p,*pp-a,**pp);

**pp++;

printf("%d,%d,%d\n",pp-p,*pp-a,**pp);

*++*pp;

printf("%d,%d,%d\n",pp-p,*pp-a,**pp);

++**pp;

printf("%d,%d,%d\n",pp-p,*pp-a,**pp);

}

【答】pp先指向p[0],pp++之后pp指向p[1],故pp-p=1,*pp-a=(a+1)-a=1,**pp=*p[1]=*(a+1)=1;对于*pp++,先执行pp++,此后pp指向p[2],故pp-p=2,*pp-a=(a+2)-a=2,**pp=*p[2]=*(a+2)=2;对于*++pp,先执行++pp,此后pp指向p[3],故pp-p=3,*pp-a=(a+3)-a=3,**pp=*p[3]=*(a+3)=3;对于

++*pp,先执行*pp返回p[3],再执行++,则使得p[3]由原来指向a[3]增1变为指向a[4],故pp-p=3,

*pp-a=(a+4)-a=4,**pp=*p[4]=*(a+4)=4;pp=p之后,pp重新指向p,故pp-p=0,*pp-a=a-a=0,

**pp=*p[0]=*a=0;对于**pp++,先执行pp++,pp指向p[1],故pp-p=1,*pp-a=(a+1)-a=1,

**pp=*p[1]=*(a+1)=1;对于*++*pp,先执行*pp,返回p[1],再执行++,则使p[1]由原来指向a[1]增1变为指向a[2], 故pp-p=1,*pp-a=(a+2)-a=2,**pp=*p[1]=*(a+2)=2;对于++**pp,先执行*pp返回p[1],再执行*,返回a[1],再执行++,则a[1]=3,故pp-p=1,*pp-a=(a+2)-a=2,**pp=*p[1]=*(a+2)=3;本题答案为:

1 1 1

2 2 2

3 3 3

3 4 4

0 0 0

1 1 1

1 2 2

1 2 3

(14)以下程序的运行结果是。

#include

main()

{

char *c[]={"ENTER","NEW","POINT","FIRST"};

char **cp[]={c+3,c+2,c+1,c};

char ***cpp=cp;

printf("%s\n",**++cpp);

printf("%s\n",*--*++cpp+3);

printf("%s\n",*cpp[-2]+3);

printf("%s\n",cpp[-1][-1]+1);

}

【答】cpp指向cp,cp的各元素指向c的各元素。对于**++cpp,先执行++cpp使cpp指向cp[1],并返回cp[1],再执行**,则返回"POINT";对于*--*++cpp+3,先执行++cpp使cpp指向cp[2],并返回

cp[2],再执行*,返回c+1,即指向c[1],再执行--,指向c[0],再+3,指向字符E,最后执行*,返回"ER";对于*cpp[-2]+3,*cpp[-2]返回cp[0],即指向c[3],再执行+3,返回"ST";对于cpp[-1][ -1]+1,当前cpp指向cp[2],cpp[-1]返回cp[1]即c[2],再执行[-1],则指向c[1],最后加1,返回"EW"。本题答案为:

POINT

ER

ST

EW

v

3. 编程题

(1)编写一个程序,输入一个整数,利用指针变量返回该数的绝对值。

【解】设计一个函数iabs,其参数为整数指针,返回绝对值的指针。程序如下:

/*文件名:exci8_1.cpp*/

VC++6.0

int *iabs(int *p)

{

if (*p<0)

*p=-*p;

return p;

}

main()

{

int a;

printf("输入一整数:");

scanf("%d",&a);

printf("绝对值为:%d\n",*iabs(&a));

/* 调用iabs()函数后,由于是传地址调用,所以a的值变成绝对值 */

}

(2)编写一个函数,计算数组中的最大元素及其下标,数组以指针方式传递。

【解】设计一个findmax()函数,返回数组最大值的指针,通过一个参数t返回最大值的下标。函数如下:

/*文件名:exci8_2.cpp*/

VC++6.0

int *findmax(int *p,int n,int *t)

{

int i,max;

max=*p;*t=0;

for (i=1;i

if (max<*(p+i))

{

max=*(p+i);

*t=i;

}

return (&max);

}

(3)编写一个程序,将用科学计数法输入的一个数(字符串)转换成对应的实数。

【解】科学计数法是用e指数表示的一个实数,比如1.345e-2,程序要将其转换成0.01345。转换过程是:先跳过其前的空格,考虑其符号,正数用sign=1表示,负数用sign=0表示;然后考虑整数和小数部分,产生一个实数val;跳过e或E,对于正指数,val乘以相应个数的10,对于正指数,val除以相应个数的10。最后返回val*sign。程序如下:

/*文件名:exci8_3.cpp*/

VC++6.0

#include

#define MaxLen 100

double atoe(char *s);

main()

{

char *s;

s=(char *)malloc(MaxLen);

printf("输入一个数:");

gets(s);

printf("对应的数:%lf\n\n",atoe(s));

}

double atoe(char *s)

{

double val,power;

int sign,e,i;

char c;

for (;*s==' '|| *s=='\n' || *s=='\t';s++); /*跳过空格*/

sign=1;

if (*s=='+'|| *s=='-') /*数的符号处理*/

sign=(*s++=='+')?1:-1;

for (val=0;*s>='0' && *s<='9';s++) /*数字字符转换*/ val=val*10+(*s-'0');

if (*s=='.')

{ /*考虑小数部分*/

s++;

for (power=1;*s>='0'&& *s<='9';s++)

{

val=val*10+*s-'0';

power*=10;

}

val=val/power;

}

if (*s=='e'|| *s=='E') /*考虑指数部分*/

{

s++;

if (*s=='+'|| *s=='-')

c=*s++;

else

c='+';

for (e=0;*s>='0'&& *s<='9';s++)

e=e*10+(*s-'0');

if (c=='+')

for (i=e;i>0;i--)

val*=10;

else

for (i=e;i>0;i--)

val/=10;

}

return val*sign;

}

程序运行结果:

输入一个数: 123.45e-2↙

对应的数:1.234500

(5)编写一个程序,求出两个字符串:

s[]="This is C programming text"

t[]="This is a text for C programming"

包含的最长的相同单词(同一字母的大小写视为不同的字符)。规定单词全由英文字母组成,单词之间由一个或多个空格符分隔。

【解】自左向右顺序扫描字符串s,逐个找出单词(单词开始位置和单词长度),当该单词的长度比已找到的单词更长时,就从头到尾扫描字符串t。在从t字符串中找出与该字符串长度相等、字符相同的单词后,记录下该单词的和的长度,并回到s,在其中找出下一个更长的单词。上述寻找过程直到字符串s扫描结束,最后输出找到的单词。程序如下:

/*文件名:exci8_5.cpp*/

VC++6.0

#include

#include

void maxword(char *s,char *t)

{

char *res,*temp,chs,cht;

int i,j,found,maxlen=0;

while (*s!='\0')

{

while (*s==' ') s++; /*删除s开头的空格*/

for (i=0;s[i]!=' ' && s[i]!='\0';i++); /*求s的一个单词长度*/

if (i>maxlen) /*maxlen为最大相同单词长度*/

{

chs=s[i]; /*i存储s中单词的长度*/

s[i]='\0';

temp=t;

found=0; /*若找到与当前s中单词匹配者,found为1*/

while (*temp!='\0' && !found)

{

while (*temp==' ') temp++;

for (j=0;temp[j]!=' ' && temp[j]!='\0';j++);

/*j存储t中单词的长度*/

if (j==i) /*找到了相同长度的单词*/

{

cht=temp[j];

temp[j]='\0';

if (strcmp(s,temp)==0) /*判定是否相同*/

{

maxlen=i;

res=s;

found=1;

}

temp[j]=cht; /*恢复原值*/

}

temp=&temp[j]; /*取下一个单词*/

}

s[i]=chs; /*恢复原值*/

}

s=&s[i]; /*取下一个单词*/

}

if (maxlen==0)

printf("没有相同的单词.\n");

else

{

chs=res[maxlen];

res[maxlen]='\0';

printf("%s\n",res);

res[maxlen]=chs;

}

}

main()

{

static char s[]="This is C programming text";

static char t[]="This is a text for C programming";

maxword(s,t);

}

程序运行结果:

programming

(6)编写一个程序,输入若干个字符串,采用冒泡排序法对这些字符串按词典顺序进行排序并输出。【解】用一个指针数组pa存放字符串。然后采用冒泡排序法对这些字符串按词典顺序进行排序,对应的函数为sort。最后输出结果。程序如下:

/*文件名:exci8_6.cpp*/

VC++6.0

#include

#include

#include

#define Max 100

void sort(char *pa[],int n)

{

int i,j,exchange;

char *temp=(char *)malloc(20);

for (i=1;i<=n-1;i++)

{

exchange=0;

for (j=n-1;j>=i;j--)

if (strcmp(pa[j],pa[j-1])<0) /*交换元素*/ {

temp=pa[j];

pa[j]=pa[j-1];

pa[j-1]=temp;

exchange=1;

}

if (!exchange)

return;

}

}

main()

{

char *pa[Max];

int n,i;

printf("串个数:");

scanf("%d",&n);

for (i=0;i

{

pa[i]=(char *)malloc(20);

printf("第%d个串:",i+1);

scanf("%s",pa[i]);

}

printf("排序前:");

for (i=0;i

printf("%s ",pa[i]);

printf("\n");

sort(pa,n);

printf("排序后:");

for (i=0;i

printf("%s ",pa[i]);

printf("\n");

}

(7)编写一个程序,在一个已排序列的字符串数组中,插入输入的一个字符串,使该数组的元素仍然有序。

【解】用指针数组pa存放字符串(与字符串数组相比其优点是可以动态分配内存空间),对于用户输入的一个字符串temp,采用二分查找法在pa中找到合适的位置i,然后将temp插入到pa的位置i即可。程序中的binary函数用于实现二分查找过程;insert函数用于实现字符串的插入过程。程序如下:

/*文件名:exci8_7.cpp*/

VC++6.0

#include

#include

#include

#define Max 20

int binary(char *pa[],char *str,int n)

{

int high=n-1,low=0,mid;

if (strcmp(str,pa[0])<0) /*若插入串比第0个串小,则插入位置为0*/

return 0;

if (strcmp(str,pa[high])>0) /*若插入串比最后串大,则插入位置为n*/

return n;

while (low<=high)

{

mid=(low+high)/2;

if (strcmp(str,pa[mid])<0)

high=mid-1;

else if (strcmp(str,pa[mid])>0)

low=mid+1;

else

return mid; /*插入串与某个串相同*/

}

return low; /*插入的位置在字符串数组中间*/

}

void insert(char *pa[],char *str,int n,int i)

/*将str插入到pa位置i处*/

{

int j;

for (j=n;j>i;j--) /*位置i后的字符串后移*/

pa[j]=pa[j-1];

pa[i]=str;

}

main()

{

char *temp,*pa[Max]={"do","else","for","if","switch","while"};

int i,j,n=6;

printf("原序列:");

for (i=0;i

printf("%s ",pa[i]);

printf("\n");

printf("插入串:");

temp=(char *)malloc(20*sizeof(char));

gets(temp);

pa[n]=(char *)malloc(20*sizeof(char)); /*预留空间*/

j=binary(pa,temp,n);

insert(pa,temp,n,j);

printf("新序列:");

for (i=0;i

printf("%s ",pa[i]);

printf("\n");

}

(8)设计一个程序,使输入的句子按如下方式改造后输出:

① 单词之间只留一个空格作间隔;

② 句子结束后必须紧跟句号;

③ 如果把句子的单词从左到右依次编号为1,2,3,…,则对于第奇数个单词,只要直接复制就行了,而对于第偶数个单词,应按反序打印。

【解】①②小题的功能由函数func1()实现。先将str开头的空格过滤,然后扫描串,将非空格字符直接复制到nstr,若遇到空格,如果是第一个空格,也复制到nstr,否则不复制。扫描完后,nstr最后若为空格,则添加‘.’。③小题的功能由函数func2()实现。先找出一个单词,由p指向该单词开头,q指向其结尾。若是奇数个单词,则按p->q的顺序复制到nstr中;否则按q->p的顺序复制到nstr中。程序如下:/*文件名:exci8_8.cpp*/

VC++6.0

#include

#include

#include

#define Max 100

char *func1(char *str)

{

char *nstr=(char *)malloc(sizeof(str)+1);

char *p=nstr;

int first=1; /*标识是否为一串空格的第一个空格*/

while (*str!='\0' && *str==' ') str++; /*除掉开头的空格*/

while (*str!='\0') /*扫描串*/

if (*str!=' ')

{

*nstr++=*str++;

first=1;

}

{

if (first==1)

{

*nstr++=*str++;

first=0;

}

else str++;

}

nstr--;

if (*nstr==' ') /*最后为空字符,则添加'.'*/

*nstr='.';

else if (*nstr!='.') /*最后不为'.',则添加'.'*/

*(++nstr)='.';

*(++nstr)='\0'; /*添加结束标志*/

return p;

}

char *func2(char *str)

{

int count=0;

char *nstr=(char *)malloc(strlen(str)),*p,*q,*s,*np=nstr;

p=q=str;

while (*q!='.')

{

while (*q!='.' && *q!=' ') q++; /*找出一个单词*/

count++;

if (count%2==1) /*奇数个单词*/

for (;p<=q;p++)

*nstr++=*p;

else /*偶数个单词*/

{

s=q-1;

for (;s>=p;s--) /*将当前单词逆序复制到nstr中*/ *nstr++=*s;

*nstr++=*q;

}

if (*q!='.') q++;

p=q;

}

*nstr='\0'; /*添加结束标志*/

return np;

}

main()

{

str=(char *)malloc(Max);

printf("输入句子:");

gets(str);

str=func1(str);

printf("(1)(2)后:%s\n",str);

str=func2(str);

printf(" (3)步后:%s\n",str);

}

程序运行结果:

输入句子:while switch do-while for↙

(1)(2)后:while switch do-while for.

(3)步后:while hctiws do-while rof.

(10)编写一个程序,实现一个整数、长整数、浮点数和双精度数除2的计算,要求所有类型的数除2只使用一个函数。

【解】编写一个half(void *x,char type)函数,其中x参数是一个地址,type参数指出该地址存储的数的类型,不同类型的数的运算是不同的,例如:

*((int *)x)/=2;

表示将x地址的数转换成整数后除2,再存储在该地址中,相当于以下一段代码:

int a;

a=(int *)x;

a=a/2;

*x=a;

这段代码并不能替换原代码,这是因为half()的参数为void类型,没有包括错误检查,但这段代码中有

*x=a;赋值,会出现类型不匹配。程序如下:

/*文件名:exci8_10.cpp*/

VC++6.0

#include

void half(void *x,char type);

main()

{

int i=10;

long l=500000;

float f=24.8;

double d=123.456789;

printf("%d\t%ld\t%f\t%lf\n",i,l,f,d);

half(&i,'i');

half(&l,'l');

half(&f,'f');

half(&d,'d');

printf("%d\t%ld\t%f\t%lf\n",i,l,f,d);

}

void half(void *x,char type)

{

switch(type)

{

case 'i':*((int *)x)/=2;

break;

case 'l':*((long *)x)/=2;

break;

case 'f':*((float *)x)/=2;

break;

case 'd':*((double *)x)/=2;

break;

}

}

(11)编写一个程序,采用第6章中介绍的三种排序法将如下10种语言名称(用字符指针数组language存放这10种语言名称)按词典顺序排序:

English,Chinese,Russian,Japanese,Spanish,Italian,French,Finnish,Danish,Greek 【解】采用冒泡排序法排序的程序如下:

/*文件名:exci8_11_1.cpp*/

VC++6.0

#include

#include

#define N 10

void bubblesort(char *p[],int n);

main()

{

char *language[]={"English","Chinese","Russian","Japanese",

"Spanish","Italian","French","Finnish","Danish","Greek"};

char **p=language;

int i;

printf("排序前:\n");

for (i=0;i

{

printf("%12s ",*p++);

if (i==4)

printf("\n");

}

printf("\n");

bubblesort(language,N);

printf("排序后:\n");

p=language;

for (i=0;i

微机原理与接口技术李珍香版课后习题8参考答案

习题8 8.1 什么是中断?中断处理的一般过程是什么? 参考答案:中断是指CPU在正常运行时,由于内、外部事件或由程序预先安排引起的,CPU暂停正在运行的程序而转去执行内、外部事件或预先安排的事件服务程序,待处理完毕后又回到原来被中止的程序处继续执行的过程。 中断处理的一般过程:中断请求、中断响应、中断处理和中断返回 8.2 什么是中断向量、中断向量地址及中断向量表? 参考答案: 中断向量:每个中断服务程序的程序入口地址 中断向量表:8086系统把256个中断向量集中起来,按对应的中断类型号从小到大的顺序依次存放到了内存的最低端,这个存放中断向量的存储区称为中断向量表。 中断向量地址:每个中断向量在中断向量表中占用连续4个存储单元,其中前2个单元存放的是中断向量的偏移地址IP值,后2个单元存放的是中断向量的段地址CS值,4个连续存储单元中的最低地址称为中断向量在中断向量表中的中断向量地址。 8.3 什么是中断优先级?有哪几种解决中断优先级的方法? 参考答案: 中断优先级:CPU响应每个中断源的优先顺序; 解决中断优先级的方法:(1)软件查询方式(2)硬件排队方式 8.4 8086 CPU的中断共分为哪几种?各类中断的优先级是如何排列的? 参考答案: 8086 CPU的中断分为内部中断(软中断)与外部中断(硬中断) 优先级排列顺序(由高向低): 除法出错、INTO、INT n、NMI、INTR、单步 8.5 8086系统在中断时需要进行现场保护,哪些现场由系统自动保护?哪些现场需要用户进行保护?8086的中断返回指令IRET和子程序返回指令RET有何不同? 参考答案: 系统自动保护的现场:Flags、断点 需用户保护的现场:CPU内部寄存器(Flags除外) 8.6 简述8259A芯片的主要功能。 参考答案: 8259A芯片用于管理和控制外部中断请求。 主要功能:(1)具有8级中断优先级控制,可级联;(2)对每一个中断请求均有屏蔽功能;在中断响应期间,可提供中断类型码;(3)通过编程根据需要对所具有的多种中断管理方式进行设置或初始化。 8.7 试述8259A的初始化编程过程。 参考答案: 8259A的初始化编程步骤: 初始化命令字(ICW)的设置,应按规定次序ICWl→ICW2→ICW3→ICW4写入。 ①16位以上微处理器,ICWl,ICW2及ICW4必须写。 ②多片8259A进行级联,要写ICW3,且主片、从片要分开写(不一样);不用级联,就不用写ICW3。 8.8 8259A对外只有两个端口地址,但却有7个命令字,它是如何正确区分不同的命令字的? 参考答案: ·1·

第八章练习题及参考答案教材

第八章练习题 8.1为了评价从1979年7月起联邦放宽利率管制政策以来的影响,S.兰格用1975年第三季度至1983年第二季度数据估计得到如下模型: 1?8.58710.13280.71020.23890.6592 2.5831t t t t t t Y P Un M Y D -=---++ Se=(1.9563)(0.0992) (0.1909) (0.0727) (0.1036) (0.7549) 2 0.9156R = 其中,Y 为3个月国库券利率;P 为预期通货膨胀率;Un 为季节调整后的失业率;M 为基础货币的变化;D 为虚拟变量,1979年7月1日前D=0,1979年7月1日后D=1。括号内是估计的标准差。试回答: 1)如何对估计结果进行解释; 2)放宽利率管制有何效果? 【练习题8.1参考解答】 1)各变量对Y 的影响都是显著的,整体模型拟合也较好。 2)由于虚拟变量D 对Y 的影响是显著的,因此放宽利率管制对3个月国库券利率有显著影响。 8.2在一项对某地区大学生月消费支出的调查研究中,反映出不同状况大学生的消费支出有差异,除了受家庭每月收入水平影响外,例如是否获得到奖学金、来自农村还是城市、家庭在经济发达地区还是欠发达地区、性别等因素可能对大学生的消费水平也有影响,而且这些因素间可能还有一定交互作用。选择比较不同状况大学生消费水平的适当基础类型,并设定合适的计量模型检验如下几种状况学生与其他学生的平均消费支出是否有显著差异: (1)来自发达地区、城市地区、得到奖学金的女生的平均消费支出; (2)来自欠发达地区、农村地区、得到奖学金的男生的平均消费支出; (3)来自欠发达地区、城市地区、未得到奖学金的女生的平均消费支出; (4)来自发达地区、农村地区、得到奖学金的女生的平均消费支出。 【练习题8.2参考解答】 建议学生自己独立完成 8.3表8.4是中国城镇居民和农村居民消费统计数据。 表8.4 城镇居民、农村居民现价消费水平统计数据 单位:元

大学物理第8章磁场题库2(含答案)

第八章磁场 填空题(简单) 1、将通有电流为I的无限长直导线折成1/4圆环形状,已知半圆环的半径为R,则圆心O点的磁 感应强度大小为0 I。 8R 2、磁场的咼斯疋理表明磁场是无源场。 3、只要有运动电荷,其周围就有磁场产生; 4、(如图)无限长直导线载有电流∣1,矩形回路载有电流I 2, 12回路的AB边与长直导线平行。电 -IIL -IIL 流I i产生的磁场作用在∣2回路上的合力F的大小为012一0 1 2,F的方向水平向左。(综 2na 2 兀(a+b) 合) X X X X X / X X I ×v ×x√X X X V-X 4题图 5题图 5、有一圆形线圈,通有电流I ,放在均匀磁场B中,线圈平面与B垂直,则线圈上P点将受到安培力的作 用,其方向为指向圆心,线圈所受合力大小为_0 ___________ 。(综合) - - n 6、[ B dl =%v Ij是磁场中的安培环路定理,它所反映的物理意义 i =0 是在真空的稳恒磁场中,磁感强度B沿任一闭合路径的积分等于%乘以该闭合路径所包围的各电流的代数和。 7、磁场的高斯定理表明通过任意闭合曲面的磁通量必等于_0 ________ 。 8、电荷在磁场中不一定(填一定或不一定)受磁场力的作用。 9、磁场最基本的性质是对运动电荷、载流导线有力的作用。 10、如图所示,在磁感强度为B的均匀磁场中,有一半径为R的半球面, B与半球面轴线的夹角为:?。求通过该半球面的磁通量为-或二R2COS>。(综合) 12、一电荷以速度V运动,它既产生_________ 电场,又产生磁场。(填“产生”或 10题图

“不产生”) 13、一电荷为+q ,质量为m ,初速度为'0的粒子垂直进入磁感应强度为B的均匀磁场中,粒子将作匀速圆周___ 运动,其回旋半径R= m°,回旋周期T= 2^m Bq Bq 14、把长直导线与半径为R的半圆形铁环与圆形铁环相 连接(如图a、b所示),若通以电流为I ,贝U a圆心O 的磁感应强度为—O=_____________ ; -I 图b圆心O的磁感应强度为J 。 4R I i 。这一重要结论称为磁场的环路定理,其 15、在磁场中磁感应强度B沿任意闭合路径的线积分总等于 数学表达式为「I Bdf=二o'? I。 16、磁场的高斯定理表明磁场具有的性质磁感应线是闭合的,磁场是无源场。 18、在磁场空间分别取两个闭合回路,若两个回路各自包围载流导线的根数不同,但电流的代数和相同,则磁 感应强度沿两闭合回路的线积分相同,两个回路的磁场分布不相同。(填“相同”或“不相同”) 判断题(简单) 1安培环路定理说明电场是保守力场。(×) 2、安培环路定理说明磁场是无源场。(×) 3、磁场的高斯定理是通过任意闭合曲面的磁通量必等于零。(√ ) 4、电荷在磁场中一定受磁场力的作用。(×) 5、一电子以速率V进入某区域,若该电子运动方向不改变,则该区域一定无磁场;(× ) 6、在B=2特的无限大均匀磁场中,有一个长为L仁2.0米,宽L2=0.50米的矩形线圈,设线圈平 面的法线方向与磁场方向相同,则线圈的磁通量为1Wb (×) 7、磁场力的大小正比于运动电荷的电量。如果电荷是负的,它所受力的方向与正电荷相反。(√) &运动电荷在磁场中所受的磁力随电荷的运动方向与磁场方向之间的夹角的改变而变化。当电荷的运动方向与磁场方向一致时,它不受磁力作用。而当电荷的运动方向与磁场方向垂直时,它所受的磁力为最大。

大学计算机基础真题习题8附答案

第8章Internet及其应用 一、单选题 1.下面不属于局域网络硬件组成的是___。 A. 网络服务器 B. 个人计算机工作站 C. 网络接口卡 D. 调制解调器 2.局域网由统一指挥,提供文件、打印、通信和数据库等服务功能。 A. 网卡 B. 磁盘操作系统DOS C. 网络操作系统 D. Windows 98 3.广域网和局域网是按照_______来分的。 A. 网络使用者 B. 信息交换方式 C. 网络连接距离 D. 传输控制规程 4.局域网的拓扑结构主要有、环型、总线型和树型四种。 A. 星型 B. T型 C. 链型 D. 关系型 5.Windows NT是一种。 A. 网络操作系统 B. 单用户、单任务操作系统 C. 文字处理系统 D. 应用程序 6.网络服务器是指。 A. 具有通信功能的386或486高档微机 B. 为网络提供资源,并对这些资源进行管理的计算机 C. 带有大容量硬盘的计算机 D. 32位总线结构的高档微机 7.局域网的硬件组成有_______、工作站或其他智能设备、网络接口卡及传输媒介、网间连接器等。 A.网络服务器

B.网络操作系统 C.网络协议 D.路由器 8.计算机网络的主要目标是___ ______。 A. 分布处理 B. 将多台计算机连接起来 C. 提高计算机可靠性 D. 共享软件、硬件和数据资源 9.Internet采用的协议类型为。 A.TCP/IP B.IEEE802.2 C.X.25 D.IPX/SPX 10.计算机网络最突出的优点是____。 A.共享硬件、软件和数据资源 B.运算速度快 C.可以互相通信 D.内存容量大 11.如果需要共享本地计算机上的文件,必须设置网络连接,允许其它人共享本地计算机。设置"允许其他用户访问我的文件"应在______中进行。 A."资源管理器"[文件]菜单中的[共享]命令 B."我的电脑"[文件]菜单中的[共享]命令 C."控制面板"中的"网络"操作 D."网上邻居"中的"网络"操作 12.要在因特网上实现电子邮件,所有的用户终端机都必须或通过局域网或用 Modem 通过电话线连接到_________ ,它们之间再通过Internet 相联。 A、本地电信局 B、E-mail 服务器 C、本地主机 D、全国 E-mail 服务中心 13.电子邮件地址的一般格式为____________。 A、用户名@域名 B、域名@用户名 C、IP地址@域名 D、域名@ IP地址 14.下列说法错误的_____________。 A.电子邮件是Internet提供的一项最基本的服务 B.电子邮件具有快速、高效、方便、价廉等特点

第二章概念与思考题及答案

第二章信用、利息与利率 本章重要概念 信用:是以还本付息为条件的,体现着特定的经济关系,是不发生所有权变化的价值单方面的暂时让渡或转移。 信用制度:信用制度即为约束信用主体行为的一系列规范与准则及其产权结构的合约性安排。信用制度安排可以是正式的,也可以是非正式的。正式的信用制度是约束信用主体行为及其关系的法律法规和市场规则,而非正式的信用制度是约束信用主体行为及其关系的价值观念、意识形态和风俗习惯等。 商业信用:商业信用指工商企业之间相互提供的、与商品交易直接相联系的信用形式。它包括企业之间以赊销、分期付款等形式提供的信用以及在商品交易的基础上以预付定金等形式提供的信用。 银行信用:银行信用指各种金融机构,特别是银行,以存、放款等多种业务形式提供的货币形态的信用。银行信用和商业信用一起构成经济社会信用体系的主体。 国家信用:国家信用又称公共信用制度,伴随着政府财政赤字的发生而产生。它指国家及其附属机构作为债务人或债权人,依据信用原则向社会公众和国外政府举债或向债务国放债的一种形式。 消费信用:消费信用指为消费者提供的、用于满足其消费需求的信用形式。其实质是通过赊销或消费贷款等方式,为消费者提供提前消费的条件,促进商品的销售和刺激人们的消费。 国际信用:国际信用是指国与国之间的企业、经济组织、金融机构及国际经济组织相互提供的与国际贸易密切联系的信用形式。国际信用是进行国际结算、扩大进出口贸易的主要手段之一。 出口信贷:出口信贷是国际贸易中的一种中长期贷款形式,是一国政府为了促进本国出口,增强国际竞争能力,而对本国出口企业给予利息补贴和提供信用担保的信用形式。可分为卖方信贷和买方信贷两种。 卖方信贷:卖方信贷是出口方的银行或金融机构对出口商提供的信贷。 买方信贷:买方信贷是由出口方的银行或金融机构直接向进口商或进口方银行或金融机构提供贷款的方式。 银行信贷:国际间的银行信贷是进口企业或进口方银行直接从外国金融机构借入资金的一种信用形式。这种信用形式一般采用货币贷款方式,并事先指定了贷款货币的用途。它不享受出口信贷优惠,所以贷款利率要比出口信贷高。 国际租赁:国际租赁是国际间以实物租赁方式提供信用的新型融资形式。根据租赁的目的和投资加收方式,可将其分为金融租赁(Financial Lease)和经营租赁(Operating Credit)两种形式。

C语言 习题八 参考答案

习题八 一、单项选择题 1、C语言程序由函数组成。它的()。 A)主函数必须在其它函数之前,函数内可以嵌套定义函数 B)主函数可以在其它函数之后,函数内不可以嵌套定义函数 C)主函数必须在其它函数之前,函数内不可以嵌套定义函数 D)主函数必须在其它函数之后,函数内可以嵌套定义函数 2、一个C语言程序的基本组成单位是()。 A)主程序 B)子程序C)函数 D)过程 3、以下说法中正确的是()。 A)C语言程序总是从第一个定义的函数开始执行 B)在C语言程序中,要调用的函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行 D)C语言程序中的main()函数必须放在程序的开始部分 4、已知函数abc的定义为: void abc() {... ...} 则函数定义中void的含义是( )。 A)执行abc后,函数没有返回值 B)执行函数abc后,函数不再返回 C)执行函数abc后,可以返回任意类型 D)以上三个答案全是错误的 5、在以下对C语言的描述中,正确的是()。 A)在C语言中调用函数时,只能将实参数的值传递给形参,形参的值不能传递给实参 B)C语言函数既可以嵌套定义又可以递归调用 C)函数必须由返回值,否则不能使用函数 D)C语言程序中有定义关系的所有函数都必须放在同一源文件中 6、以下叙述中错误的是()。 A)在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值 B)在C语言中,在定义函数时,实参和对应的形参在类型上只需赋值兼容 C)在C语言中,外部变量的隐含类别是自动存储类别 D)在C语言中,函数形参的存储类型是自动(auto)类型的变量 7、说明语句“static int i=10;”中“i=10”的含义是()。 A)只说明了一个静态变量 B)与“auto i=10;”在功能上等价 C)将变量i初始化为10 D)将变量i赋值为10 8、C语言中的函数()。 A)可以嵌套定义 B)不可以嵌套调用 C)可以嵌套调用,但不能递归调用D)嵌套调用和递归调用均可 9、C语言中函数返回值的类型是由()决定的。 A)return语句中的表达式类型 B)调用该函数的主调函数类型 C)调用函数时临时D)定义函数时所指定的函数类型 10、C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是()。 A)地址传递B)值传递 C)由实参传给形参,并由形参传回给实参 D)由用户指定传递方式 11、下列的结论中只有()是正确的。 A)所有的递归程序均可以采用非递归算法实现 B)只有部分递归程序可以用非递归算法实现

8第八章学习的基本理论练习题答案

第八章学习的基本理论练习题 一、填空题、 1、如果条件刺激重复出现多次而没有无条件刺激相伴随,则条件反应会逐渐变弱并最终消失,这种现象称为消退。 2、桑代克关于学习的三条定律是:效果律、练习律、准备律。 3、斯金纳将行为分为两类:应答性行为和操作性行为。 4、班杜拉认为人类大部分行为是靠观察榜样行为而习得的,即观察学习是人的学习的最重要的形式。 5、班杜拉认为观察学习由注意过程、保持过程、动作再现过程和动机过程四个阶段组成。 6、苛勒认为,学习是通过顿悟过程来实现的,而非盲目的试误。 7、布鲁纳认为,学习的本质不是被动地形成刺激—反应的联结,而是主动地形成认知结构。 8、布鲁纳提倡发现学习法。 9、奥苏伯尔从两个维度上对学习做了区分:从学生学习的方式上将学习分为接受学习与发现学习;从学习材料与学习者已有的知识结构的关系上将学习分为机械学习和意义学习。 10、加涅把学习看成是一个信息加工的过程,把学习过程看成是信息的接收、储存和提取的过程。 11、加涅提出了学习过程的八个阶段:动机阶段、领会阶段、习得阶段、保持阶段、回忆 阶段、概括阶段、作业阶段、反馈阶段。 12、建构主义认为,学习是获取知识的过程,但知识不是由教师向学生传递,而是学生在一定的情境下,借助其他人的帮助,利用必要的学习资料,通过意义建构的方式而获得。 二、单项选择题 1、在斯金纳看来,学期考试的强化类型是( B ) A、连续性; B、固定时距式; C、固定比例式; D、变化比例式。 2、在斯金纳的理论中,赌博的强化类型是( D ) A连续式; B固定时距式; C固定比例式; D变化比例式。 3、在斯金纳的强化理论中,下列属于二级强化物的是( D ) A食物; B水; C爱抚; D货币。 4、在斯金纳的学习理论中,撤走某一刺激可以使操作反应概率增加,这一刺激的作用被称为( B ) A正强化; B负强化; C奖励; D惩罚。 5、在经典性条件反射中,有机体对条件刺激作出反应,而对与之相似的刺激则不予反应,这种现象是( C ) A消退; B泛化; C分化; D强化。

第二章复习题及答案

第二章练习及答案 一、填空题 1、带动其他构件运动的构件,叫原动件。 2、在原动件的带动下,作确定运动的构件,叫从动件。 3、低副的优点:制造和维修容易,单位面积压力小,承载能力大。 4、低副的缺点:由于是滑动摩擦,摩擦损失比高副大,效率低。 5.低副是两构件通过面接触而构成的运动副;高副是两构件通过点或线接触而构成的运动副。 6、火车车轮在铁轨上的滚动,属于高副。 二、判断题(正确√;错误×) 1、两构件通过面接触组成的运动副是低副。(√) 2.机构的原动件数应等于自由度数,否则机构没有确定运动。(√) 3.在平面机构中一个低副引入两个约束。(√) 4、由于两构件间的联接形式不同,运动副分为低副和高副。(×) 5、点或线接触的运动副称为低副。(×) 6、面接触的运动副称为低副。(√) 7、若机构的自由度数为2,那么该机构共需2个原动件。(√) 8、机构的自由度数应等于原动件数,否则机构不能成立。(√) 9、平面低副引入的约束数为1。(×) 10、当m个构件用复合铰链相联接时,组成的转动副数目也应为m个。(×) 11、局部自由度与机构的运动是有关的。(×) 12、在机构运动简图中运动副和构件都应用规定的符号和线条表示。(√)

三、选择题 1.当机构中主动件数目(2)等于机构自由度数目时,该机构具有确定的运动。 (1)小于;(2)等于;(3)大于;(4)大于或等于。 2.下图中的平面机构由(1)复合铰链组成。 (1)复合铰链;(2)局部自由度;(3)虚约束;(4)凸轮机构; 3.在计算平面机构自由度时,应选用(3)c)图。 (1)a);(2)b);(3)c); a) b) c) 4.机构具有确定运动的条件是(3)自由度数目= 原动件数目。 (1)自由度数目>原动件数目;(2)自由度数目<原动件数目; (3)自由度数目= 原动件数目;(4)自由度数目≠原动件数目;5.下图中的平面机构由(3)虚约束组成。 (1)复合铰链;(2)局部自由度;(3)虚约束;(4)凸轮机构;

大学物理第8章 磁场题库2(含答案)..

第八章 磁场 填空题 (简单) 1、将通有电流为I 的无限长直导线折成1/4圆环形状,已知半圆环的半径为R ,则圆心O 点的磁 感应强度大小为 08I R μ 。 2、磁场的高斯定理表明磁场是 无源场 。 3、只要有运动电荷,其周围就有 磁场 产生; 4、(如图)无限长直导线载有电流I 1,矩形回路载有电流I 2,I 2回路的AB 边与长直导线平行。电 流I 1产生的磁场作用在I 2回路上的合力F 的大小为01201222() I I L I I L a a b μμππ- +,F 的方向 水平向左 。 (综合) 5、有一圆形线圈,通有电流I ,放在均匀磁场B 中,线圈平面与B 垂直,则线圈上P 点将受到 安培 力的作用,其方向为 指向圆心 ,线圈所受合力大小为 0 。(综合) 6、∑?==?n i i l I l d B 0 0μ 是 磁场中的安培环路定理 ,它所反映的物理意义 是 在真空的稳恒磁场中,磁感强度B 沿任一闭合路径的积分等于0μ乘以该闭合路径所包围的各电流的代数 和。 7、磁场的高斯定理表明通过任意闭合曲面的磁通量必等于 0 。 8、电荷在磁场中 不一定 (填一定或不一定)受磁场力的作用。 9、磁场最基本的性质是对 运动电荷、载流导线 有力的作用。 10、如图所示,在磁感强度为B 的均匀磁场中,有一半径为R 的半球面, B 与半球面轴线的夹角为α。求通过该半球面的磁通量为2 cos B R πα-。(综合) 12、一电荷以速度v 运动,它既 产生 电场,又 产生 磁场。(填“产生”或 4题图 5题图

“不产生”) 13、一电荷为+q ,质量为m ,初速度为0υ的粒子垂直进入磁感应强度为B 的均匀磁场中,粒子将作 匀速圆 周 运动,其回旋半径R= 0m Bq υ,回旋周期T=2m Bq π 。 14、把长直导线与半径为R 的半圆形铁环与圆形铁环相连接(如图a 、b 所示),若通以电流为I ,则 a 圆心O 的磁感应强度为___0__________; 图b 圆心O 的磁感应强度为 04I R μ。 15、在磁场中磁感应强度B 沿任意闭合路径的线积分总等于0i I μ∑ 。这一重要结论称为磁场的环路定理,其 数学表达式为 l B dl I μ=∑?。 16、磁场的高斯定理表明磁场具有的性质 磁感应线是闭合的,磁场是无源场 。 18、在磁场空间分别取两个闭合回路,若两个回路各自包围载流导线的根数不同,但电流的代数和相同,则磁感应强度沿两闭合回路的线积分 相同 ,两个回路的磁场分布 不相同 。(填“相同”或“不相同” ) 判断题 (简单) 1、安培环路定理说明电场是保守力场。 ( × ) 2、安培环路定理说明磁场是无源场。 ( × ) 3、磁场的高斯定理是通过任意闭合曲面的磁通量必等于零。 ( √ ) 4、电荷在磁场中一定受磁场力的作用。 ( × ) 5、一电子以速率V 进入某区域,若该电子运动方向不改变,则该区域一定无磁场;( × ) 6、在B=2特的无限大均匀磁场中,有一个长为L1=2.0米,宽L2=0.50米的矩形线圈,设线圈平 面的法线方向与磁场方向相同,则线圈的磁通量为1Wb 。 ( × ) 7、磁场力的大小正比于运动电荷的电量。如果电荷是负的,它所受力的方向与正电荷相反。(√) 8、运动电荷在磁场中所受的磁力随电荷的运动方向与磁场方向之间的夹角的改变而变化。当电荷的运动方向与磁场方向一致时,它不受磁力作用。而当电荷的运动方向与磁场方向垂直时,它所受的磁力为最大。

《高等数学》第八章练习题及答案

《高等数学(下册)》第八章练习题 一、填空题 1、________________ )sin(==dz xy z 则, 设 2、设),cos(2y x z =,则=??)2,1(πx z 3、函数22)(6y x y x z ---=的极值点为 4、设xy e z =,则=dz 5、设y z ln z x =,则=?zx z 二、选择题 )2 0( D. )0 2( C. )0 0( B. )2 2( A.) (33) ( 12233,,,,的极小值点为,函数、y x y x y x f --+= 2、),(y x f 在点),(00y x 处偏导数),(),(0000y x f y x f y x ''、存在就是),(y x f 在该点连续的( )、 (a)充分条件, (b)必要条件, (c)充要条件, (d)既非充分条件又非必要条件。 3、设)2ln(),(x y x y x f +=,则=())1,1(-'x f 、 (A),31 (B),31- (C),65 (D).6 5- 三、计算题 方程。处的切线方程与法平面,,在点求曲线、)1 2 1( 2 132 ???==x z x y 2、设),(y x z z =就是由方程0),(=--z y z x F 确定的隐函数,F 具有一阶连续偏导数,且,0≠'+'v u F F 其中,,z y v z x u -=-=求.,y z x z ???? 3、求曲面3222-=+-z xz y x 在点)1,2,1(处的切平面及法线方程。 4、设,222z y x e u ++=而y x z sin 2=,求x u ??、 5、求曲线t z e y e x t t ===-,,,对应于0=t 点处的切线与法平面方程。 6、求函数)4(2y x y x z --=在闭域4,0,0≤+≥≥y x y x 上的最大值及最小值。

Oracle第二章习题及答案

一、基于自己创建表的操作 1:创建一张学生表student,拥有stuid,stuname,sex,三个字段,其中stuid为主键。 create table student( stuid int primary key, stuname VARCHAR(20), sex VARCHAR(20) ) 2:为该表增加一个新列score。 alter table student add(score varchar(10)); 3:修改该表score列名为stuscore。 alter table student rename column score to stuscoree; 4:为student表插入5条记录。 insert into student values(1,'张三丰','男',80); insert into student values(2,'阿悄','女',70); insert into student values(3,'陈龙','男',90); insert into student values(4,'章子怡','女',50); insert into student values(5,'张卫健','男',60); 5:查询student表中的全部数据,其中列名为中文。 select STUID as 学号,STUNAME as 姓名,SEX as 性别,STUSCOREE as 分数from student; 6:查询学生姓名和分数,并是查询结果按照学生成绩降序排列。 select STUNAME,STUSCOREE from student order by STUSCOREE desc; 7:修改所有性别为“男”的学生信息为性别为“male”。 update student set SEX='male' where SEX='男'; 8:删除所有记录。 delete from student; 9:删除student表。 drop table student; 二、基于emp表的操作 1:创建一张新表emp1,和emp表结构和记录完全一样。 create table emp1 as select*from Scott.Emp; 基于emp1表的操作: 1:选择部门30中的雇员。 select*from emp1 where DEPTNO=30 and JOB='CLERK';

大学物理习题及参考答案8

习题8 8-1 质量为10×10- 3 kg 的小球与轻弹簧组成的系统,按20.1cos(8)3 x t π π=+ (SI)的规律做谐振动,求: (1)振动的周期、振幅、初位相及速度与加速度的最大值; (2)最大的回复力、振动能量、平均动能和平均势能,在哪些位置上动能与势能相等? (3)t 2=5 s 与t 1=1 s 两个时刻的位相差. 解:(1)设谐振动的标准方程为)cos(0φω+=t A x ,则知: 3/2,s 4 1 2,8,m 1.00πφωπ πω=== ∴==T A 又 πω8.0==A v m 1 s m -? 51.2=1 s m -? 2.632==A a m ω2s m -? (2) N 63.0==m m a F J 1016.32 122 -?== m mv E J 1058.121 2-?===E E E k p 当p k E E =时,有p E E 2=, 即 )2 1(212122kA kx ?= ∴ m 20 2 22±=± =A x (3) ππωφ32)15(8)(12=-=-=?t t 8-2 一个沿x 轴做简谐振动的弹簧振子,振幅为A ,周期为T ,其振动方程用余弦函数表出.如果t =0时质点的状态分别是: (1)x 0=-A ; (2)过平衡位置向正向运动; (3)过2A x = 处向负向运动; (4)过 x =处向正向运动. 试求出相应的初位相,并写出振动方程. 解:因为 ???-==00 0sin cos φωφA v A x 将以上初值条件代入上式,使两式同时成立之值即为该条件下的初位相.故有

)2cos(1ππ π φ+==t T A x )23 2cos(2 32πππφ+==t T A x )32cos(3 3π ππ φ+==t T A x )4 5 2cos(4 54πππφ+== t T A x 8-3 一质量为10×10- 3 kg 的物体做谐振动,振幅为2 4 cm ,周期为4.0 s ,当t =0时位移为+24 cm.求: (1)t =0.5 s 时,物体所在的位置及此时所受力的大小和方向; (2)由起始位置运动到x =12 cm 处所需的最短时间; (3)在x =12 cm 处物体的总能量. 解:由题已知 s 0.4,m 10242 =?=-T A ∴ 1s rad 5.02-?==ππ ωT 又,0=t 时,0,00=∴+=φA x 故振动方程为 m )5.0cos(10242t x π-?= (1)将s 5.0=t 代入得 0.17m m )5.0cos(102425.0=?=-t x π N 102.417.0)2 (10103 23 2--?-=???-=-=-=π ωx m ma F 方向指向坐标原点,即沿x 轴负向. (2)由题知,0=t 时,00=φ, t t =时 3 ,0,20πφ=<+ =t v A x 故且 ∴ s 3 2 2/3==?=ππωφt (3)由于谐振动中能量守恒,故在任一位置处或任一时刻的系统的总能量均为 J 101.7)24.0()2(10102121 214223222--?=???=== π ωA m kA E

初二物理第八章 运动和力知识点及练习题含答案

初二物理第八章运动和力知识点及练习题含答案 一、选择题 1.如图所示,物块从左侧光滑曲面上的P点自由滑下,通过粗糙的静止水平传送带后冲上右侧的光滑曲面,最远能到达A点。现在启动传送带,使皮带沿逆时针方向运动,让该物块仍从P点自由滑下,则物块最远能到达图中的() A.A点B.B点C.C点D.D点 2.如图摆球从A点静止释放,经过最低点B点,摆向另一侧的最高点C,在此过程中,下列说法中正确的是() A.小球到达B点的瞬间,若剪断悬线,小球将沿水平方向做匀速直线运动 B.小球到达B点的瞬间,若受到的力全部消失,小球将保持静止状态 C.小球到达C点的瞬间,若受到的力全部消失,小球将保持静止状态 D.小球到达C点的瞬间,若受到的力全部消失,小球将做匀速圆周运动 3.下列关于运动与力的说法正确的是() A.物体受到力的作用,运动状态一定发生改变 B.运动的物体一定受到非平衡力的作用 C.若没有力的作用,运动的物体将逐渐停下来 D.物体受到不为零的合力,但其运动方向可能保持不变 4.小强重力为G,乘坐竖直电梯上楼的过程中,电梯对小强的支持力F随时间的关系如图所示。则下列说法正确的是() A.小强在电梯中受重力、支持力、绳子拉力3个力的作用 B.在1t到2t时间段,电梯在做匀速直线运动 C.在2t到3t时间段,小强所受合力为零 D.在整个过程中,小强相对电梯一直静止,所以小强所受合力一直为零

5.如图所示,甲、乙两物体在水平桌面上处于静止状态,下列说法正确的是() A.甲对乙的压力与桌面对乙的支持力是一对平衡力 B.乙物体受到的重力与桌面对它的支持力是一对相互作用力 C.甲对乙的压力与桌面对乙的支持力是一对相互作用力 D.乙对甲的支持力和甲受到的重力是一对平衡力 6.一个盛有盐水的容器中悬浮着一个鸡蛋,容器放在斜面上,如图所示,鸡蛋会受到来自水的各个方向的压力,如果画出这些力的合力,则这个合力的方向是图中的 A.F1 B.F2 C.F3 D.F4 7.下列情况中,属于一对平衡力的是() A.静止在桌面上的书,书对桌面的压力和桌面对书的支持力 B.苹果下落时所受的重力和苹果对地球的吸引力 C.沿竖直方向匀速下降的跳伞运动员,运动员与伞的总重力和空气阻力 D.在平直公路上匀速行驶的汽车的牵引力和重力。 8.如图所示,叠放在一起的物体A和B,在F=10N的水平拉力作用下沿水平方向作匀速直线运动,则下列结论中正确的是() A.A物体受到的摩擦力为10N,B物体受到的摩擦力为0N B.B物体受到的重力与A对B的支持力是一对相互作用力 C.A受到的重力与地面对A的支持力是一对平衡力 D.若拉力F增大,B与A之间的摩擦力增大,A与地面的摩擦力也随着增大 9.如图所示,水平地面上静置着A、B两个物体,下列说法正确的是() A.B物体对A物体的支持力与A物体对B物体的压力是一对平衡力

第二章练习题及答案

思考与练习 一、单项选择题 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.成本项目 C.费用要素 D.费用项目 二、多项选择题 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.房产税 C.土地使用税 D.车船使用税 三、判断题 1.产品成本项目是指生产费用按其经济内容所进行的分类。 () 2.企业为了形成和扩大生产能力,购建固定资产和无形资产等,使企业在较长的时期(多个会计年度)内受益的支出,均属收益性支出。() 3.直接生产费用大多是直接计入费用。( ) 4.“制造费用”账户属于损益类账户。 ( ) 5.机物料消耗和辅助生产车间工人工资等, 均属间接生产费用。 ( ) 四、综合题 1.某企业2010年3月份的支出情况如下: ⑴本月生产甲、乙两种产品。其中,甲产品发生直接费用77 000元,乙产品发生直接费用33 000元,共计110 000元。 ⑵本月车间一般消耗用材料5 200元,车间管理人员薪酬3 400元,车间管理人员办公费等1 400元,共计10 000元。 ⑶购买某项固定资产,支付3 700元。 ⑷预付车间经营性租入固定资产的改良支出6 000元。(摊销期为20

2017ITE第八章题目及答案

?Assessment Results ?Item Feedback Report IT Essentials (Version 6.00) - ITE 第8 章 Below is the feedback on items for which you did not receive full credit. Some interactive items may not display your response. Subscore: 1 用户注意到用户计算机中千兆位网卡的数据传输速率比预期要慢 的可能原因是什么? 正确响应您的响应 网卡双工设置不知何故已经设为半双工。 休眠模式导致网卡意外关闭。 网卡LAN 唤醒设置配置错误。 网卡配置为同时使用IPv4 和IPv6。 为了获得最佳的性能,千兆位网卡应该在全双工模式下运行。两台设备之间的双工模式不匹配可 全双工传输允许在每个方向上实现1000 Mb/s 的传输速率。 此试题参考以下领域的内容: IT Essentials ?8.1.1 网络卡 2 通常网卡上有两个LED。这些LED 的两个主要用途是什么?(选择两项 正确响应您的 响应 表示网卡已连接到家庭组或工作组

表示存在连接 表示存在数据传输活动 表示有来自另一邻近无线设备或电子设备的干扰 表示网卡已连接到DHCP 服务器 以太网网卡通常有两个LED,有时两个都呈绿色,有时一个呈绿色,一个呈琥珀色。一个指示灯表示存在与活 如路由器或网络交换机。另一个LED 闪烁表示有数据活动。 此试题参考以下领域的内容: IT Essentials ?8.1.1 网络卡 3 用于在Windows PC 上建立新网络连接的网络配置文件 的作用是什么? 正确响应您的 响应 提供可能用于Internet 访问的ISP 列表 消除连接网络时对IP 地址的需求 提供一种轻松的方法,根据要加入的网络类型来配置或应用网络功能 配置网卡设置,实现最快的网络 配置新网络连接时需要选择一个Windows 网络位置。网络位置配置文件是一个网络设 置集合,默认已为每类位置创建了该文件,这种文件可帮助用户轻松地加入一个网络。 此试题参考以下领域的内容: IT Essentials ?8.1.2 无线和有线路由器配置

思考题及习题8参考答案

第8章思考题及习题8参考答案 一、填空 1、AT89S51的串行异步通信口为(单工/半双工/全双工)。 答:全双工。 2. 串行通信波特率的单位是。 答:bit/s 3. AT89S51的串行通信口若传送速率为每秒120帧,每帧10位,则波特率为 答:1200 4.串行口的方式0的波特率为。 答:fosc/12 5.AT89S51单片机的通讯接口有和两种型式。在串行通讯中,发送时要把数据转换成数据。接收时又需把数据转换成数据。 答:并行,串行,并行,串行,串行,并行 6.当用串行口进行串行通信时,为减小波特率误差,使用的时钟频率为 MHz。答:11.0592 7.AT89S51单片机串行口的4种工作方式中,和的波特率是可调的,与定时器/计数器T1的溢出率有关,另外两种方式的波特率是固定的。 答:方式1,方式3 8.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式。答:方式1。 9.在串行通信中,收发双方对波特率的设定应该是的。 答:相同的。 10.串行口工作方式1的波特率是。 答:方式1波特率=(2SMOD/32)×定时器T1的溢出率 二、单选 1.AT89S51的串行口扩展并行I/O口时,串行接口工作方式选择。 A. 方式0 B.方式1 C. 方式2 D.方式3 答:A 2. 控制串行口工作方式的寄存器是。

A.TCON B.PCON C. TMOD D.SCON 答:D 三、判断对错 1.串行口通信的第9数据位的功能可由用户定义。对 2.发送数据的第9数据位的内容是在SCON寄存器的TB8位中预先准备好的。对 3.串行通信方式2或方式3发送时,指令把TB8位的状态送入发送SBUF中。错 4.串行通信接收到的第9位数据送SCON寄存器的RB8中保存。对 5.串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定。对 6. 串行口工作方式1的波特率是固定的,为fosc/32。错 7. AT89S51单片机进行串行通信时,一定要占用一个定时器作为波特率发生器。错 8. AT89S51单片机进行串行通讯时,定时器方式2能产生比方式1更低的波特率。错 9. 串行口的发送缓冲器和接收缓冲器只有1个单元地址,但实际上它们是两个不同的寄存 器。对 四、简答 1.在异步串行通信中,接收方是如何知道发送方开始发送数据的? 答:实质就是如何检测起始位的开始。当接收方检测到RXD端从1到0的负跳变时就启动检测器,接收的值是3次连续采样,取其中2次相同的值,以确认是否是真正的起始位的开始,这样能较好地消除干扰引起的影响,以保证可靠无误的开始接受数据。 2.AT89S51单片机的串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定? 答:有4种工作方式:方式0、方式1、方式2、方式3; 有3种帧格式,方式2和3具有相同的帧格式;方式0的发送和接收都以fosc/12为固定波特率, 方式1的波特率=2SMOD/32×定时器T1的溢出率 方式2的波特率=2SMOD/64×fosc 方式3的波特率=2SMOD/32×定时器T1的溢出率 3.假定串行口串行发送的字符格式为1个起始位、8个数据位、1个奇校验位、1个停止位,请画出传送字符“B”的帧格式。 答:字符“B”的ASCII码为“42H”,帧格式如下:

相关文档
最新文档