《C语言程序设计》课后习题参考答案

《C语言程序设计》课后习题参考答案
《C语言程序设计》课后习题参考答案

高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案

――武汉大学出版社

习题1参考答案

一、选择题

1. A

2. D

二、填空题

1. BASIC、FORTRAN、AL_GOL60和COBOL

2. 8

3. 关键字

4. 编辑、编译、链接和运行

三、简答题

1.答:

(1)C语言具有结构化的控制语句。C语言提供了结构化程序所必需的基本控制语句,实现了对逻辑流的有效控制。

(2)C语言具有丰富的数据结构类型。C语言除提供整型、实型、字符型等基本数据类型外,还提供了用基本数据类型构造出的各种复杂的数据结构,如数组、结构、联合等。C语言还提供了与地址密切相关的指针类型。此外,用户还可以根据需要自定义数据类型。(3)C语言具有丰富的运算符。C语言提供了多达34种运算符,丰富的数据类型与丰富的运算符相结合,使C语言的表达力更具灵活性,同时也提高了执行效率。

(4)C语言简洁、紧凑,使用方便、灵活,程序书写自由,有9种控制语句。

(5)C语言既具有高级语言的功能,又具有低级语言的许多功能,通常被称为中级计算机语言。它既是成功的系统描述语言,又是通用的程序设计语言。

(6)C语言与汇编语言相比,可移植性好。

(7)功能强大。C语言具有低级语言的一些功能,所以,生成目标代码质量高,程序执行效率高。现在许多系统软件都用C语言来描述,可以大大提高了编程效率。

2.答:运行一个C语言程序,一般需要经过如下几个步骤:①上机输入并编辑源程序;②编译源程序;③与库函数连接;④生成可执行目标程序;⑤运行目标程序。

3.答:

(1)操作系统的设计与实现。C语言是一种应用非常广泛的结构化高级程序设计语言,既适合编写应用软件,又适合编写系统软件。

(2)工业控制。由于C语言具有简洁、灵活、代码效率高、能进行位操作等优点,C语言大量应用在单板机、单片机上,以及嵌入式领域等。

(3)图形图像处理。C语言在内存管理和进程控制方面有丰富的指令,而且它能提供快速运行的代码,因而C语言适合进行图形程序设计。

(4)教学领域。C语言是理想的结构化程序设计语言,其描述能力强,应用十分广泛,因此广泛应用于教学领域。许多计算机相关课程,如数据结构及算法大多是用C语言进行描述的。

习题2参考答案

一、选择题

1. A

2.A

3.C

二、填空题

1. 基本数据类型、构造数据类型、指针类型、空类型

2. 反斜线“\”

3. 枚举数据类型(Enumerated Data Type)

三、简答题

1.答:

在C语言中,数据类型可分为:基本数据类型、构造数据类型、指针类型、空类型四大类。

基本类型是数据类型的基础,由它可以构造出其他复杂的数据类型。基本类型的值不可以再分解为其他类型。C语言的基本类型包括整型、实型(浮点型)、字符型和枚举型。

C语言的构造类型包括数组类型、结构类型和联合类型。构造类型是根据已定义的一种或多种数据类型用构造的方法定义的。也就是说,一个构造类型的值可以分解成若干个"成员"或"元素"。每个"成员"或"元素"都是一个基本数据类型,或又是一个构造类型。

指针是一种特殊而又具重要作用的数据类型,其值表示某个量在内存中的地址。虽然指针变量的取值类似于整型量,但这是两种完全不同类型的量,一个是变量的数值,一个是变量在内存中存放的地址。

在调用函数时,被调用函数通常应向调用函数返回一个函数值。返回的函数值具有一定的数据类型,应在函数定义的函数说明中给以说明。例如,在例1-1中给出的max函数定义中,函数头为"int max(int a,int b,int c)",其中写在函数名max之前的类型说明符"int"表示该函数的返回值为整型量。但是,也有一类函数,被调用后并不向调用函数返回函数值,这种函数可以定义为"空类型"(也称"无值型"),其类型说明符为void。

习题3参考答案

一、选择题

1.C

2.B

3.B

4.D

二、填空题

1. 4字节,1字节,4字节,8字节

2. 20

3. 6 60

4. 26 25

5. 256 22

三、简答题

1. C语言的基本类型包括整型、实型(浮点型)、字符型和枚举型。

2. 定义符号常量和定义变量都要指定数据类型,系统将为其分配一定的存储空间。其不同之处在于:定义符号常量必须给出常量值,且以后不能修改本常量的值;而变量可以在定义变量的同时赋初值,以后可以修改该变量。

3. 常量就是在程序的运行过程中该量是不可修改的量;变量在程序的运行过程中允许对该变量的值进行修改。

四、程序题

1.程序运行结果为:

11

10

10

11

-10

-11

2.程序运行结果为:

3,12,4,4

习题4参考答案

一、选择题

1.C 2.D 3.C 4.C 5.B 6.D 7.B 8.C 9.B

二、填空题

1.! && ||

2.0 1

3.1

4.4

5.-1

三、编程题

1.给出等级成绩′A′、′B′、′C′、′D′、′E′,假设,90分以上为′A′,80~89分为′B′,70~79分为′C′,60~69分为′D′,60分以下为′E′,输入一个等级成绩,问属于哪一个分数段。

参考代码如下:

main()

int score,m,n;

char grade;

n=1;

while(n)

{ printf("Please enter the score:");

scanf("%d",&score);

if((score>100)||(score<0))

printf("\n Wrong! \n");

else n=0;

}

if(score==100) m=9;

else m=(score-score%10)/10;

switch(m)

{ case 0:case 1:case 2:case 3:case 4:case 5:grade='E';break;

case 6:grade='D';break;

case 7:grade='C';break;

case 8:grade='B';break;

case 9:grade='A';

}

printf("score=%d,grade=%c\n",score,grade);

}

2.编程序打印出以下图形:

1

121

12321

12345678987654321

参考代码如下:

#include

main()

{

int i,j;

for(i=1;i<=9;i++)

{

for(j=1;j<=i;j++)

printf("%d",j);

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

printf("%d",j);

printf("\n");

}

3.用1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,问共有几种兑换方案?每种方案各换多少枚?

[提示:设5分、2分和1分的硬币各换x,y,z枚,依题意有x+y+z=100,5x+2y+z=150,由于每一种硬币都要有,故5分硬币最多可换28枚,2分硬币最多可换73枚,1分硬币可换100-x-y枚,x,y,z只需满足第2个方程即可打印,对每一组满足条件的x,y,z值,用计数器计数即可得到兑换方案的数目。]

参考代码如下:

main()

{

int x,y,z,s=0;

for(x=1;x<=28;x++)

for(y=1;y<=73;y++)

for(z=1;z<=148;z++)

{

if(150==5*x+2*y+z)

if(100==x+y+z)

{

printf("x=%d y=%d z=%d\n",x,y,z);

s++;

}

}

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

}

4.编程:从键盘输入正整数n,输出1+(1+2)+(1+2+3)+……+(1+2+3+…+n)。

参考代码如下:

#include

main()

{

int n,i,s=0,t=0;

printf("Please enter n=");

scanf("%d",&n);

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

{

t=t+i;

s=s+t;

}

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

}

习题5参考答案

一、选择题

1.B 2.A 3.A 4.D 5.C 6.B 7.A 8.A

二、填空题

1.按行的顺序依次存放的

2.0

3.4

4.6

三、编程题

1.有一个多项式:Pn(x)=a0x n+a1x n-1+…+a n

它们的系数a0,a1,…,a n存放在一个一维数组中。编制程序,输入系数和x的值,计算并输出Pn(x)。

参考代码如下:

#define N 4

main()

{ int a[N+1],p,x,i;

printf("Please enter a[%d],...,a[0]:\n",N);

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

scanf("%d",&a[i]);

printf("Please enter x=\n");

scanf("%d",&x);

p=a[N];

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

{

p=p*x+a[i-1];

}

printf("Pn(x)=%d\n",p);

}

2.打印以下的杨辉三角形(要求打印6行)。

1

11

121

1331

14641

15101051

参考代码如下:

#include

#include

#define N 6

main()

{

int i,j,max[N][N];

for(i=0;i

{

for(j=0;j

{ max[i][0]=1;

max[i][i]=1;

}

}

for(i=2;i

{

for(j=1;j

{ max[i][j]=max[i-1][j-1]+max[i-1][j]; }

}

for(i=0;i

{

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

{ printf("%d",max[i][j]); }

printf("\n");

}

}

3.编写程序,将一个数插入到有序的数列中去,插入后的数列仍然有序。

参考代码如下:/*假设原有5个数*/

#include

main()

{ int a[6]={1,2,6,10,15};

int n,i,j;

printf("Please enter the insert number:");

scanf("%d",&n);

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

if(n>a[i])

continue;

else

break;

for(j=4;j>=i;j--)

a[j+1]=a[j];

a[i]=n;

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

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

printf("\n");

}

4.编写程序,在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found。

参考代码如下:

#include

main()

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

int n,i,j,k=0;

printf("Please enter the number:");

scanf("%d",&n);

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

{ while(n==a[i])

{k=1;j=i;break;}

}

if(k==1)

printf("a[%d]\n",j);

else

printf("no found.\n");

}

5.编程将下列矩阵中的元素向右移动一列,最右一列移至第一列。

1 4 6

8 10 12

[提示:用二维数组v存放矩阵中元素,数组v可在定义时初始化;有两种方法实现这种移动:一种方法是将移动后的元素放在另一个二维数组中;另一种方法是利用一个中间变量仍将移动后的元素放在数组v中。]

#include

void main()

{ int i,j;

int a[2][3]={1,4,6,8,10,12};

int b[2][3];

b[0][0]=a[0][2];

b[0][1]=a[0][0];

b[0][2]=a[0][1];

b[1][0]=a[1][2];

b[1][1]=a[1][0];

b[1][2]=a[1][1];

printf("a[2][3]:");

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

{ printf("\n");

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

printf("%5d",a[i][j]);

}

printf("\nresult:\n");

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

{ printf("\n");

printf("%5d",b[i][j]);

}

printf("\n");

getch();

}

6.利用公式)

a

i

i

c+

=计算m×n的矩阵A和m×n的矩阵B之和,已知)

j

j

,(

)

b

)

,(

i

,(j

i

a为

,(j

矩阵A的元素,)

i

c为矩阵C的元素,n

,(j

b为矩阵B的元素,)

,(j

i

,...,

=。

,

2,1=

j

m

i,...,

2,1 [提示:用二维数组元素做函数参数编程实现矩阵相加。]

#include

#include

#define M 2

#define N 2

int a[M][N];

int b[M][N];

int c[M][N];

void matrix(int a[][M],int b[][N]);

main()

{

int i,j,t;

clrscr();

printf("Please input a[%d][%d]\n",M,N);

for(i=0;i

for(j=0;j

{ scanf("%d",&t);

a[i][j]=t;

}

printf("Please input b[%d][%d]\n",M,N);

for(i=0;i

for(j=0;j

{ scanf("%d",&t);

b[i][j]=t;

}

matrix(b,c);

printf("a[%d][%d]",M,N);

for(i=0;i

{ printf("\n");

for(j=0;j

printf("%5d",a[i][j]);

}

printf("\n");

printf("b[%d][%d]",M,N);

for(i=0;i

{ printf("\n");

printf("%5d",b[i][j]);

}

printf("\n");

printf("c[%d][%d]=A+B:",M,N);

for(i=0;i

{ printf("\n");

for(j=0;j

printf("%5d",c[i][j]);

}

}

void matrix(int a[][M],int b[][N])

{ int i,j,k,t;

for(i=0;i

for(j=0;j

c[i][j]=a[i][j]+b[i][j];

}

习题6参考答案

一、选择题

1.A 2.D 3.D

二、填空题

1.指针取地址

2.3

3.9876

876

4.24

三、编程题

1.输入3个整数,按从大到小的次序输出。

参考代码如下:

main()

{

int a[3],i,j,t;

printf("Please enter three number:\n")

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

scanf("%d",&a[i]);

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

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

if(a[j]

{ t=a[j];a[j]=a[j+1];a[j+1]=t;}

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

printf("%d\n",a[i]);

}

2.编写将n阶正方矩阵进行转置的函数。在主函数中对一个4行4列的矩阵调用此函数。参考代码如下:

int array[4][4];

convert(int array[4][4])

{

int i,j,t;

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

for (j=i+1;j<4;j++)

{

t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;

}

}

main( )

{

int i,j;

printf("Input array:\n");

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

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

scanf("%d",&array[i][j]);

printf("\noriginal array :\n");

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

{ for (j=0;j<4;j++)

printf("%5d",array[i][j]);

printf("\n");}

convert(array);

printf("convert array:\n");

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

{ for(j=0;j<4;j++)

printf("%5d",array[i][j]);

printf("\n");

}

}

3.有三个整型变量i,j, k,请编写程序,设置三个指针变量p1,p2,p3,分别指向i, j,k。然后通过指针变量使i,j,k三个变量的值顺序交换,即把i的原值赋给j,把j的原值赋给k,把k的原值赋给i。要求输出i,j, k的原值和新值。

参考代码如下:

main()

{

int i, j , k, temper;

int *p1, *p2, *p3;

printf("Please input 3 integers:\n");

scanf("%d%d%d",&i, &j, &k);

p1=&i; p2=&j; p3=&k;

printf("before changed ,the 3 numbers are:\n");

printf("i=%d, j=%d,k=%d\n",i, j, k);

temper=*p1;*p1=*p3;*p3=*p2; *p2=temper;

printf("after changed ,the 3 numbers are:\n");

printf("i=%d, j=%d,k=%d\n",i, j, k);

}

4.用指针编写程序,把输入的字符串按逆顺序输出。

参考代码如下:

#include

#include

char *s="1a2b3c4d";

void main()

{

int i,j;

char t;

for(i=0,j=strlen(s)-1;i

{

t=s[i];

s[i]=s[j];

s[j]=t;

}

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

}

习题7参考答案

一、选择题

1.C 2.B 3.C

二、填空题

1.float

2.自动(auto)

3.12

4.9.000000

二、编程题

1.编写函数,已知三角形的三个边长,求三角形的面积。

参考代码如下:

#include

#include

main()

{

float a,b,c,s,area;

printf("Please enter three sides:\n");

scanf("%f,%f,%f",&a,&b,&c);

if(a+b>c&&b+c>a&&a+c>b)

{

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("area=%.2f\n",area);

}

else printf("It is not a triangle !\n");

}

2.编程计算p=k! (m-k)!的值。

参考代码如下:

#include

void main()

{

int k,m;

long p;

printf("Please enter k,m:");

scanf("%d,%d",&k,&m);

p=f(k)*f(m-k);

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

}

int f(int n)

{

if(n>1)

return n*f(n-1);

else

return 1;

}

3.写一函数,使给定的一个二维数组(3×3)转置,即行列互换。并在主函数中调用该函数时,使用数组作为实际参数。

参考代码如下:

#define N 3

int array[N][N];

convert(int array[N][N])

{

int i,j,t;

for (i=0;i

for (j=i+1;j

{

t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;

}

}

main()

{

int i,j;

printf("Input array(3*3):\n");

for (i=0;i

for(j=0;j

scanf("%d",&array[i][j]);

printf("\noriginal array:\n");

for (i=0;i

{ for (j=0;j

printf("%5d",array[i][j]);

printf("\n");}

convert(array);

printf("convert array:\n");

for (i=0;i

{ for(j=0;j

printf("%5d",array[i][j]);

printf("\n");

}

}

4.设计一个函数,用以计算下面数列前n项之和(以n为形参变量)。2/1、3/2、5/3、8/5、13/8、21/13、…。

参考代码如下:

#define N 6

main()

{

int n=N,i=1;

float s=0;

while (i<=n)

{

s=s+(i+1.0)/i;

}

printf("s(%d)=%.5f\n",n,s);

}

5.如果一个数恰好等于它的因子之和,则该数称为“完数”。例如:6的因子是1、2、3,而6=1+2+3。编程序输出1000之内的所有完数。输出形式是:“6它的因子是1,2,3”。

参考代码如下:

main()

{

static int k[100];

int i,j,n,s;

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

{

n=-1;

s=j;

for(i=1;i

{

if((j%i)==0)

{

n++;

s=s-i;

k[n]=i;

}

}

if(s==0)

{

printf("%d is a wanshu",j);

for(i=0;i

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

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

}

}

}

习题8参考答案

一、选择题

1.C 2.A 3.A 4.B

二、填空题

pt->student.no=1001;

2.0,1,2,100,101,102

3.结构体变量

4.Four, Three,Four

三、编程题

1.有10个学生,每个学生的数据包括学号(num)、姓名(name[9])、性别(sex)、年龄(age)、三门课成绩(score[3]),要求在main()函数中输入这10个学生的数据,并对每个学生调用函数count()计算总分。

参考代码如下:

#include

#include

#define N 2

struct student

{ int num;

char name[9];

char sex;

int age;

int score[3];

}stu[N];

main()

{ int count(int s[]);

int i,j;

for(i=1;i<=N;i++)

{

printf("num:");

scanf("%d",&stu[i].num);

printf("name:");

scanf("%s",&stu[i].name);

printf("sex:");

scanf("%s",&stu[i].sex);

printf("age:");

scanf("%d",&stu[i].age);

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

{

printf("score[%d]:",j+1);

scanf("%d",&stu[i].score[j]);

}

}

for(i=1;i<=N;i++)

printf("stu[%d] sum=%d\n",i,count(stu[i].score));

}

int count(int s[])

{

int i,sum=0;

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

sum=sum+s[i];

return sum;

}

2.口袋中有若干红、黄、蓝、白、黑5种颜色的球,每次从口袋中取出3个球,编程打印出得到3种不同颜色的球的所有可能取法。

参考代码如下:

main()

{ enum color{red,yellow,blue,white,black};

enum color i,j,k,pri;

int n=0,loop;

for(i=red;i<=black;i++)

for(j=red;j<=black;j++)

if(i!=j)

{ for(k=red;k<=black;k++)

if((k!=i) && (k!=j))

{ n=n+1;

printf("%-4d",n);

for (loop=1;loop<=3;loop++)

{ switch (loop)

{ case 1:pri=i;break;

case 2:pri=j;break;

case 3:pri=k;break;

default:break;

}

switch (pri)

{ case red: printf("%-10s","red");break;

case yellow: printf("%-10s","yellow");break;

case blue: printf("%-10s","blue");break;

case white: printf("%-10s","white");break;

case black: printf("%-10s","black");break;

default:break;

}

}

printf("\n");

}

}

printf("\ntotal:%5d\n",n);

}

3.25个人围成一个圈,从第1个人开始顺序报号,凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号。

参考代码如下:

#include

main()

{ int *a;

int i,j,position=1,total=0,chage;

a=(int *)malloc(25*sizeof(int));

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

a[i]=i+1;

while(1)

{ position+=2;

while (position>25-total)

position=position-25+total;

chage=a[position-1];

for (j=position;j<25-total;j++)

a[j-1]=a[j];

a[25-total-1]=chage;

total++;

if (total==25)

{

for (i=0;i<25-1;i++)

printf("%d->",a[25-i-1]);

printf("%d\n",a[0]);

printf("the last one is %d\n",a[0]);

return 0;

}

}

}

4.建立一个链表,每个结点包括:学号、姓名、成绩。

(1)输入一个学号,检索该学生的有关信息;

(2)从链表中删去成绩低于40分的学生。

参考代码如下:

#include

#include

struct stu

{

int no;

char name[9];

int score;

struct stu *next;

};

struct stu *create()

{ struct stu *head,*p,*q;

int n,s;

head->next=NULL;

p=head;

while(1)

{ printf("no,name,score:");

scanf("%d,%s,%d",&n,&s);

if(n==0&&s==0)

break;

else

{ q=(struct stu *)malloc(sizeof(struct stu));

q->no=n;q->score=s;q->next=NULL;

p->next=q;p=q;

}

}

return head;

}

struct stu *search(struct stu *h,int n)

{ struct stu *p=h->next;

while(p!=NULL&&P->NO!=n)

p=p->next;

return p;

}

struct stu *delete(struct stu *head,char *s)

{

struct stu *p1,*p2;

if(head==NULL)

{

printf("\nempty list!\n");

goto end;

}

p1=head;

while (pi->score>40 && p1->next!=NULL) { p2=p1;p1=p1->next;

free(p1);

}

return head;

}

main()

{ int n;

struct stu *q;

printf("enter number:");

scanf("%d",&n);

q=create(n);

printf("list:\n");

while(q!=NULL)

{

printf("%s\n",q->name);

q=q->next;

}

}

习题9参考答案

一、选择题

1.D 2.C 3.A

二、填空题

1.L=18.849558

S=28.274337

三、解答题

预处理命令的功能是什么?包括哪几部分?#include预处理命令的两种格式分别为什么?答:预处理命令的功能是告诉编译系统在对源程序进行编译之前应该做些什么。预处理命令主要包括文件包含、宏定义和条件编译三个部分。

#include预处理命令

格式一:#include<包含文件名>

格式二:#include”包含文件名”

习题10参考答案

一、选择题

1.C 2.B 3.A

二、填空题

1.二进制文件

2.顺序随机

3.hello,

4.picursound

三、编程题

1.从键盘输入学生姓名,寻找学生记录是否存在,并输出相应信息。

参考代码如下:

#include

#include

#define N 10

struct student

{

近代史纲要习题及答案

第三章作业及答案 一、单项选择题 1. 标志着以慈禧太后为首的清政府彻底放弃抵抗外国侵略者的事件是() A .《南京条约》的签订 B .《天津条约》的签订 C .《北京条约》的签订 D .《辛丑条约》的签订 2 .清末“预备立宪”的根本目的在于() A .仿效欧美政体 B .发展资本主义 C .延续反动统治 D .缓和阶级矛盾 3.1903年6月,()在上海《苏报》发表《驳康有为论革命书》,批驳康有为所谓“中国之可立宪,不可革命”的谬论 A.陈天华 B.邹容 C.章炳麟 D.梁启超 4.1903年邹容写的()是中国近代史上第一部宣传革命和资产阶级共和国思想的着作 A.《猛回头》 B.《警世钟》 C.《革命军》 D.《驳康有为论革命书》 5.中国近代第一个资产阶级革命的全国性政党是( ) A.强学会 B.兴中会 C.同盟会 D.国民党 6. 孙中山民权主义思想的主张是( ) A.驱除鞑虏 B.恢复中华 C.创立民国 D.平均地权 7.1905年11月,孙中山在《民报》发刊词中将中国同盟会的政治纲领概括为() A.创立民国、平均地权 B.驱除鞑虏、恢复中华、创立合众政府 C.民族主义、民权主义、民生主义 D.联俄、联共、扶助农工 8.武昌起义前同盟会领导的影响最大的武装起义是( )

A.浙皖起义 B.萍浏醴起义 C.镇南关起义 D.黄花岗起义 9.中国历史上第一部具有资产阶级共和国宪法性质的法典是() A.《钦定宪法大纲》 B.《中华民国临时约法》 C.《中华民国约法》 D.《试训政纲领》 10.南京临时政府中占领导和主体地位的派别是() A .资产阶级维新派 B .资产阶级保皇派 C .资产阶级立宪派 D .资产阶级革命派 11. 辛亥革命取得的最大成就是() A.推翻了封建帝制 B.促进了资本主义的发展 C.使人民获得了一些民主自由权利 D.打击了帝国主义的殖民势力 12.清帝被迫退位,在中国延续两千多年的封建帝制终于覆灭的时间是()。 A、1911年10月10日 B、1912年1月1日 C、1912年2月12日 D、1912年4月1日 13.中国第一次比较完全意义上的资产阶级民主革命是指()。 A、辛亥革命 B、国民革命 C、北伐战争 D、抗日战争 14.1915年,()在云南率先举起反袁护国的旗帜,发动护国战争 A.黄兴 B.段祺瑞 C.蔡锷 D.孙中山 15.资产阶级革命派开展护国运动的主要原因是 ( ) A.袁世凯指使刺杀宋教仁 B.袁世凯强迫国会选举他为正式大总统 C.袁世凯解散国会 D.袁世凯复辟帝制 16.袁世凯为复辟帝制不惜出卖主权,与日本签订了卖国的() A.中日共同防敌军事协定 B.承认外蒙自治

计算机系统结构课后答案

1、数据结构和机器的数据表示之间是什么关系?确定和引入数据表示的基本原则是什么? 答:数据表示是能由硬件直接识别和引用的数据类型。数据结构反映各种数据元素或信息单元之间的结构关系。数据结构要通过软件映象变换成机器所具有的各种数据表示实现,所以数据表示是数据结构的组成元素。不同的数据表示可为数据结构的实现提供不同的支持,表现在实现效率和方便性不同。数据表示和数据结构是软件、硬件的交界面。 除基本数据表示不可少外,高级数据表示的引入遵循以下原则:(1)看系统的效率有否提高,是否养活了实现时间和存储空间。(2)看引入这种数据表示后,其通用性和利用率是否高。 2、标志符数据表示与描述符数据表示有何区别?描述符数据表示与向量数据表示对向量数据结构所提供的支持有什么不同? 答:标志符数据表示指将数据类型与数据本身直接联系在一起,让机器中每个数所都带类型樗位。其优点是:(1)简化了指令系统和程序设计;(2)简化了编译程序;(3)便于实现一致性校验;(4)能由硬件自动变换数据类型;(5)支持数据库系统的实现与数据类型无关;(6)为软件调试和应用软件开发提供支持。缺点是:(1)会增加程序所点的主存空间;(2)在微观上对机器的性能(运算速度)不利。 数据描述符指数据的描述与数据分开存放,描述所访问的数据是整块还是单个的,及访问该数据块或数据元素的地址住处它具备标志符数据表示的优点,并减少了标志符数据表示所占的空间,为向量和数组结构的实现提供支持。 数据描述符方法优于标志符数据表示,数据的描述与数据分开,描述所访问的数据是整块还是单个的,及访问该数据块或数据元素的地址信息,减少了樗符数据表示所占的窨。用描述符方法实现阵列数据的索引比用变址方法实现要方便,且便于检查出程序中的阵列越界错误。但它不能解决向量和数组的高速运算问题。而在有向量、数组数据表示的向量处理机上,硬件上设置有丰富的赂量或阵列运算指令,配有流水或阵列方式处理的高速运算器,不仅能快速形成向量、数组的元素地址,更重要的是便于实现把向量各元素成块预取到中央处理机,用一条向量、数组指令流水或同时对整个向量、数组高速处理.如让硬件越界判断与元素运算并行。这些比起用与向量、阵列无关的机器语言和数据表示串行实现要高效的多。 3、堆栈型机器与通用寄存器型机器的主要区别是什么?堆栈型机器系统结构为程序调用的哪些操作提供了支持? 答:有堆栈数据表示的机器称为堆栈机器。它与一般通用寄存器型机器不同。通用寄存器型

操作系统习题答案

内存1通常情况下,在下列存储管理方式中,()支持多道程序设计、管理最简单,但存储碎片多;()使内存碎片尽可能少,而且使内存利用率最高。 Ⅰ.段式;Ⅱ.页式;Ⅲ.段页式;Ⅳ.固定分区;Ⅴ.可变分区 正确答案:Ⅳ;Ⅰ 2为使虚存系统有效地发挥其预期的作用,所运行的程序应具有的特性是()。正确答案:该程序应具有较好的局部性(Locality) 3提高内存利用率主要是通过内存分配功能实现的,内存分配的基本任务是为每道程序()。使每道程序能在不受干扰的环境下运行,主要是通过()功能实现的。Ⅰ.分配内存;Ⅱ.内存保护;Ⅲ.地址映射;Ⅳ.对换;Ⅴ.内存扩充;Ⅵ.逻辑地址到物理地址的变换;Ⅶ.内存到外存间交换;Ⅷ.允许用户程序的地址空间大于内存空间。 正确答案:Ⅰ;Ⅱ 4适合多道程序运行的存储管理中,存储保护是 正确答案:为了防止各道作业相互干扰 5下面哪种内存管理方法有利于程序的动态链接()? 正确答案:分段存储管理 6在请求分页系统的页表增加了若干项,其中状态位供()参考。 正确答案:程序访问 7从下面关于请求分段存储管理的叙述中,选出一条正确的叙述()。 正确答案:分段的尺寸受内存空间的限制,但作业总的尺寸不受内存空间的限制

8虚拟存储器的特征是基于()。 正确答案:局部性原理 9实现虚拟存储器最关键的技术是()。 正确答案:请求调页(段) 10“抖动”现象的发生是由()引起的。 正确答案:置换算法选择不当 11 在请求分页系统的页表增加了若干项,其中修改位供()参考。 正确答案:换出页面 12 虚拟存储器是正确答案:程序访问比内存更大的地址空间 13测得某个请求调页的计算机系统部分状态数据为:CPU利用率20%,用于对换空间的硬盘的利用率97.7%,其他设备的利用率5%。由此断定系统出现异常。此种情况下()能提高CPU的利用率。 正确答案:减少运行的进程数 14在请求调页系统中,若逻辑地址中的页号超过页表控制寄存器中的页表长度,则会引起()。 正确答案:越界中断 15 测得某个请求调页的计算机系统部分状态数据为:CPU利用率20%,用于对换空间的硬盘的利用率97.7%,其他设备的利用率5%。由此断定系统出现异常。此种情况下()能提高CPU的利用率。 正确答案:加内存条,增加物理空间容量 16 对外存对换区的管理应以()为主要目标,对外存文件区的管理应以()

计算机系统结构习题解答

《计算机系统结构》习题解答 第一章(P33) 1.7 (1)从指定角度来看,不必要了解的知识称为透明性概念。 1.8见下表,“√”为透明性概念,“P ”表示相关课文页数。 1.12 已知Se=20 , 求作Fe-Sn 关系曲线。 将Se 代入Amdahl 定律得 e n F S 20 19 11 -= 1.13 上式中令Sn=2,解出Fe=10/19≈0.526 1.14 上式中令Sn=10,解出Fe=18/19≈0.947 1.15 已知两种方法可使性能得到相同的提高,问哪一种方法更好。 (1)用硬件组方法,已知Se=40,Fe=0.7,解出Sn=40/12.7≈3.1496(两种方法得到的相同性能) (2)用软件组方法,已知Se=20,Sn=40/12.7,解出Fe=27.3/38≈0.7184(第二种方法的百分比) (3)结论:软件组方法更好。因为硬件组需要将Se 再提高100%(20→40),而软件组只需将Fe 再提高1.84%(0.7→0.7184)。 Sn 20 1

1.17 57.34 .15 5 9.01.01≈= + = n S 1.18 记f ── 时钟频率,T=1/f ── 时钟周期,B ── 带宽(Byte/s )。 方案一:)/(44 11s Byte f T B =?= 方案二:)/(5.3421 %252%752s Byte f T B =??+?= 1.19 由各种指令条数可以得到总条数,以及各百分比,然后代公式计算。 ∑===4 1 510i i IC IC (1)∑==?+?+?+?=? = 4 1 55.108.0215.0232.0245.01)(i i i IC IC CPI CPI (2)806.2555.140 10 55.11040106 66≈=??=?=CPI f MIPS (3)(秒)003876.040055 .110 6 ≈=?= MIPS IC T 1.21 (1)24.21.0812.0418.026.01=?+?+?+?=CPI (2)86.171024.21040106 6 6≈??=?= CPI f MIPS 1.24 记Tc ── 新方案时钟周期,已知CPI = CPI i = 1 原时间 = CPI × IC × 0.95Tc = 0.95IC ×Tc 新时间 = (0.3×2/3+0.7)× IC × Tc = 0.9IC ×Tc 二者比较,新时间较短。 第二章(P124) 2.3(忽略P124倒1行 ~ P125第8行文字,以简化题意)已知2种浮点数,求性能指标。 此题关键是分析阶码、尾数各自的最大值、最小值。 原图为数据在内存中的格式,阶码的小数点在其右端,尾数的小数点在其左端,遵守规格化要求。

近代史课后习题答案

1、怎样理解鸦片战争是中国近代史的起点? 鸦片战争是中国近代史的开端,原因有四: 第一,战争后中国的社会性质发生了根本性变化,由一个落后封闭但独立自主的封建国家沦为一个半殖民地半封建社会。 第二,中国的发展方向发生变化,战前中国是一个没落的封建大国,封建制度已经腐朽,在缓慢地向资本主义社会发展;而鸦片战争后中国的民族资本主义不可能获得正常发展,中国也就不可能发展为成熟的资本主义社会,而最终选择了社会主义道路。 第三,社会主要矛盾发生变化,战前中国的主要矛盾是农民阶级与封建地主阶级的矛盾,而战后主要矛盾则包括农民阶级和地主阶级的矛盾及中华民族与外国殖民侵略者的矛盾,也就是社会主要矛盾复杂化。 第四,是革命任务发生变化,原先的革命任务是反对本国封建势力,战后则增加了反对外国殖民侵略的任务,革命的性质也由传统的农民战争转为旧民族主义革命。 2、怎样认识近代中国的主要矛盾、社会性质及其基本特征? (1)近代中国的主要矛盾 帝国主义和中华民族的矛盾;封建主义和人民大众的矛盾是近代中国的主要矛盾。 (2)社会性质:半殖民地半封建的性质。 中国社会的半殖民地半封建社会,是近代以来中国在外国资本主义势力的入侵及其与中国封建主义势力相结合的条件下,逐步形成的一种从属于资本主义世界体系的畸形的社会形态。(3)基本特征 第一,资本——帝国主义侵略势力日益成为支配中国的决定性力量。 第二,中国的封建势力日益衰败并同外国侵略势力相勾结,成为资本——帝国主义压迫、奴役中国人民的社会基础和统治支柱。 第三,中国的自然经济基础虽然遭到破坏,但是封建剥削制度的根基——封建地主的土地所有制成为中国走向近代化和民主化的严重障碍。 第四,中国新兴的民族资本主义经济虽然已经产生,但是发展很缓慢,力量很软弱,且大部分与外国资本——帝国主义和本国封建主义都有或多或少的联系。 第五,由于近代中国处于资本——帝国主义列强的争夺和间接统治之下,近代中国各地区经济、政治和文化的发展是极不平衡的,中国长期处于不统一状态。 第六,在资本——帝国主义和封建主义的双重压迫下,中国的广大人民特别是农民日益贫困化以致大批破产,过着饥寒交迫和毫无政治权力的生活。 3、如何理解近代中国的两大历史任务及其相互关系? (1)近代中国的两大历史任务: 第一,争取民族独立,人民解放;第二,实现国家富强,人民富裕。 (2)近代中国的两大历史任务的相互关系: 争取民族独立,人民解放和实现国家富强,人民富裕这两个历史任务,是互相区别又互相紧密联系的。 第一,由于腐朽的社会制度束缚着生产力的发展,阻碍着经济技术的进步,必须首先改变这种制度,争取民族独立和人民解放,才能为实现国家富强和人民富裕创造前提,开辟道路。第二,实现国家富强和人民富裕是民族独立,人民解放的最终目的和必然要求。 第一章 1、资本-帝国主义侵略给中国带来了什么?

计算机系统结构课后答案unit3

第3章总线、中断与输入输出系统 3.1.简要举出集中式串行链接,定时查询和独立请求3种总线控制方式的优缺点。同时分析硬件产生故障时通讯的可靠性。 答:集中式串行链连接方式。其过程为: ①所有部件都经公共的“总线请求”线向总线控制器发使用总线申请。 ②当“总线忙”信号未建立时,“总线请求”才被总线控制器响应,送出“总线可用”信号,它串行地通过每个部件。 ③如果某部件未发过“总线请求”,则它将“总线可用”信号往下一部件转,如果某部件发过“总线请求”,则停止“总线可用”信号的传送。 ④该部件建立“总线忙”,并除去“总线请求”,此时该部件获得总线使用权,准备传送数据。 ⑤数据传送期间,“总线忙”维持“总线可用”的建立。 ⑥传送完成后,该部件去除“总线忙”信号和“总线可用”信号。 ⑦当“总线请求”再次建立时,就开始新的总线分配过程。 优点:①选择算法简单;②控制总线数少;③可扩充性好;④可靠性高。 缺点:①对“总线可用”线及其有关电路失效敏感,②不灵活;③总线中信号传送速度慢。 集中式定时查询方式,过程: ①总线上每个部件通过“总线请求”发请求。 ②若“总线忙”信号未建立,则计数器开始计数,定时查询个部件,以确定是谁发的请求。 ③当查询线上的计数值与发出请求的部件号一致时,该部件建立“总线忙”,计数停止,查询也停止。除去“总线请求”,该部件获得总线使用权。 ④“总线忙”维持到数据传送完毕。 ⑤数据传送完,去除“总线忙”。 ⑥当“总线请求”线上有新的请求,就开始下一个总线分配过程。 优点:①优先次序灵活性强;②可靠性高。 缺点:①控制线数较多;②扩展性较差;③控制较为复杂;④总线分配受限于计数信号,不能很高。 集中式独立请求方式,过程:

操作系统第四版-课后习题答案

操作系统第四版-课后习题答案

第一章 作者:佚名来源:网络 1、有一台计算机,具有IMB 内存,操作系统占用200KB ,每个用户进程各占200KB 。如果用户进程等待I/O 的时间为80 % ,若增加1MB 内存,则CPU 的利用率提高多少? 答:设每个进程等待I/O 的百分比为P ,则n 个进程同时等待刀O 的概率是Pn ,当n 个进程同时等待I/O 期间CPU 是空闲的,故CPU 的利用率为1-Pn。由题意可知,除去操作系统,内存还能容纳4 个用户进程,由于每个用户进程等待I/O的时间为80 % , 故: CPU利用率=l-(80%)4 = 0.59 若再增加1MB 内存,系统中可同时运行9 个用户进程,此时:cPu 利用率=l-(1-80%)9 = 0.87 故增加IMB 内存使CPU 的利用率提高了47 % : 87 %/59 %=147 % 147 %-100 % = 47 % 2 一个计算机系统,有一台输入机和一台打印机,现有两道程序投入运行,且程序A 先开始做,程序B 后开始运行。程序A 的运行轨迹为:计算50ms 、打印100ms 、再计算50ms 、打印100ms ,结束。程序B 的运行轨迹为:计算50ms 、输入80ms 、再计算100ms ,结束。试说明(1 )两道程序运行时,CPU有无空闲等待?若有,在哪段时间内等待?为什么会等待?( 2 )程序A 、B 有无等待CPU 的情况?若有,指出发生等待的时刻。 答:画出两道程序并发执行图如下: (1)两道程序运行期间,CPU存在空闲等待,时间为100 至150ms 之间(见图中有色部分) (2)程序A 无等待现象,但程序B 有等待。程序B 有等待时间段为180rns 至200ms 间(见图中有色部分) 3 设有三道程序,按A 、B 、C优先次序运行,其内部计算和UO操作时间由图给出。

计算机系统结构_课后答案

习题一 1、解释下列术语 计算机系统的外特性:通常所讲的计算机系统结构的外特性是指机器语言程序员或编译程序编写者所看到的外特性,即由他们所看到的计算机的基本属性(概念性结构和功能特性)。 计算机系统的内特性:计算机系统的设计人员所看到的基本属性,本质上是为了将有关软件人员的基本属性加以逻辑实现的基本属性。 模拟:模拟方法是指用软件方法在一台现有的计算机上实现另一台计算机的指令系统。 可移植性:在新型号机出台后,原来开发的软件仍能继续在升级换代的新型号机器上使用,这就要求软件具有可兼容性,即可移植性。可兼容性是指一个软件可不经修改或只需少量修改,便可由一台机器移植到另一台机器上运行,即同一软件可应用于不同环境。 Amdahl 定律:系统中对于某一部件采用某种更快的执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频度或占总执行时间的比例。 虚拟机(Virtual Machine ):指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。 6、 7、假定求浮点数平方根的操作在某台机器上的一个基准测试程序中占总执行时间的20%,为了增强该操作的性能,可采用两种不同的方法:一种是增加专门的硬件,可使求浮点数平方根操作的速度提高为原来的20倍;另一种方法是提高所有浮点运算指令的速度,使其为原来的2倍,而浮点运算指令的执行时间在总执行时间中占30%。试比较这两种方法哪一种更好些。 答:增加硬件的方法的加速比23.120 /2.0)2.01(1 1=+-= p S , 另一种方法的加速比176.12 /3.0)3.01(1 2=+-=p S ,经计算可知Sp1>Sp2第一种方 法更好些。 9、假设高速缓存Cache 的工作速度为主存的5倍,且Cache 被访问命中的概率

中国近代史纲要课后习题答案

1.怎样认识近代中国的主要矛盾、社会性质及其基本特征? (1)近代中国的主要矛盾 帝国主义和中华民族的矛盾;封建主义和人民大众的矛盾是近代中国的主要矛盾。中国近代社会的两对主要矛盾是互相交织在一起的,而帝国主义和中华民族的矛盾,是最主要的矛盾。 (2)社会性质:半殖民地半封建的性质。 中国社会的半殖民地半封建社会,是近代以来中国在外国资本主义势力的入侵及其与中国封建主义势力相结合的条件下,逐步形成的一种从属于资本主义世界体系的畸形的社会形态。 鸦片战争前的中国社会是封建社会。鸦片战争以后,随着外国资本-帝国主义的入侵,中国社会性质发生了根本性变化:独立的中国逐步变成半殖民地的中国;封建的中国逐步变成半封建的中国。 (3)基本特征 第一,资本--帝国主义侵略势力不但逐步操纵了中国的财政和经济命脉,而且逐步控制了中国的政治,日益成为支配中国的决定性力量。 第二,中国的封建势力日益衰败并同外国侵略势力相勾结,成为资本--帝国主义压迫、奴役中国人民的社会基础和统治支柱。 第三,中国的自然经济基础虽然遭到破坏,但是封建剥削制度的根基--封建地主的土地所有制依然在广大地区内保持着,成为中国走向近代化和民主化的严重障碍。 第四,中国新兴的民族资本主义经济虽然已经产生,并在政治、文化生活中起了一定作用,但是在帝国主义封建主义的压迫下,他的发展很缓慢,力量很软弱,而且大部分与外国资本--帝国主义和本国封建主义都有或多或少的联系。 第五,由于近代中国处于资本--帝国主义列强的争夺和间接统治之下,近代中国各地区经济、政治和文化的发展是极不平衡的,中国长期处于不统一状态。 第六,在资本--帝国主义和封建主义的双重压迫下,中国的广大人民特别是农民日益贫困化以致大批破产,过着饥寒交迫和毫无政治权力的生活。 中国半殖民地半封建社会及其特征,是随着帝国主义侵略的扩大,帝国主义与中国封建势力结合的加深而逐渐形成的。 2.如何理解近代中国的两大历史任务及其相互关系? (1)近代中国的两大历史任务: 第一,争取民族独立,人民解放;第二,实现国家富强,人民富裕。 (2)近代中国的两大历史任务的相互关系: 争取民族独立,人民解放和实现国家富强,人民富裕这两个历史任务,是互相区别又互相紧

完整版计算机体系结构课后习题原版答案_张晨曦著

第1章计算机系统结构的基本概念 (1) 第2章指令集结构的分类 (10) 第3章流水线技术 (15) 第4章指令级并行 (37) 第5章存储层次 (55) 第6章输入输出系统 (70) 第7章互连网络 (41) 第8章多处理机 (45) 第9章机群 (45) 第1章计算机系统结构的基本概念 1.1 解释下列术语 层次机构:按照计算机语言从低级到高级的次序,把计算机系统按功能划分成多级层次结构,每一层以一种不同的语言为特征。这些层次依次为:微程序机器级,传统机器语言机器级,汇编语言机器级,高级语言机器级,应用语言机器级等。 虚拟机:用软件实现的机器。 翻译:先用转换程序把高一级机器上的程序转换为低一级机器上等效的程序,然后再在这低一级机器上运行,实现程序的功能。

解释:对于高一级机器上的程序中的每一条语句或指令,都是转去执行低一级机器上的一段等效程序。执行完后,再去高一级机器取下一条语句或指令,再进行解释执行,如此反复,直到解释执行完整个程序。 计算机系统结构:传统机器程序员所看到的计算机属性,即概念性结构与功能特性。 在计算机技术中,把这种本来存在的事物或属性,但从某种角度看又好像不存在的概念称为透明性。 计算机组成:计算机系统结构的逻辑实现,包含物理机器级中的数据流和控制流的组成以及逻辑设计等。 计算机实现:计算机组成的物理实现,包括处理机、主存等部件的物理结构,器件的集成度和速度,模块、插件、底板的划分与连接,信号传输,电源、冷却及整机装配技术等。 系统加速比:对系统中某部分进行改进时,改进后系统性能提高的倍数。 Amdahl定律:当对一个系统中的某个部件进行改进后,所能获得的整个系统性能的提高,受限于该部件的执行时间占总执行时间的百分比。 程序的局部性原理:程序执行时所访问的存储器地址不是随机分布的,而是相对地簇聚。包括时间局部性和空间局部性。

(完整版)操作系统课后题答案

2.OS的作用可表现在哪几个方面? 答:(1)OS作为用户与计算机硬件系统之间的接口;(2)OS作为计算机系统资源的管理者; (3)OS实现了对计算机资源的抽象。 5.何谓脱机I/O和联机I/O? 答:脱机I/O 是指事先将装有用户程序和数据的纸带或卡片装入纸带输入机或卡片机,在外围机的控制下,把纸带或卡片上的数据或程序输入到磁带上。该方式下的输入输出由外围机控制完成,是在脱离主机的情况下进行的。而联机I/O方式是指程序和数据的输入输出都是在主机的直接控制下进行的。 11.OS有哪几大特征?其最基本的特征是什么? 答:并发性、共享性、虚拟性和异步性四个基本特征;最基本的特征是并发性。 20.试描述什么是微内核OS。 答:(1)足够小的内核;(2)基于客户/服务器模式;(3)应用机制与策略分离原理;(4)采用面向对象技术。 25.何谓微内核技术?在微内核中通常提供了哪些功能? 答:把操作系统中更多的成分和功能放到更高的层次(即用户模式)中去运行,而留下一个尽量小的内核,用它来完成操作系统最基本的核心功能,称这种技术为微内核技术。在微内核中通常提供了进程(线程)管理、低级存储器管理、中断和陷入处理等功能。 第二章进程管理 2. 画出下面四条语句的前趋图: S1=a:=x+y; S2=b:=z+1; S3=c:=a – b;S4=w:=c+1; 答:其前趋图为: 7.试说明PCB 的作用,为什么说PCB 是进程存在的惟一标志? 答:PCB 是进程实体的一部分,是操作系统中最重要的记录型数据结构。作用是使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,成为能与其它进程并发执行的进程。OS是根据PCB对并发执行的进程进行控制和管理的。 11.试说明进程在三个基本状态之间转换的典型原因。 答:(1)就绪状态→执行状态:进程分配到CPU资源;(2)执行状态→就绪状态:时间片用完;(3)执行状态→阻塞状态:I/O请求;(4)阻塞状态→就绪状态:I/O完成. 19.为什么要在OS 中引入线程?

操作系统课后习题答案

第一章 1.设计现代OS的主要目标是什么? 答:(1)有效性(2)方便性(3)可扩充性(4)开放性 4.试说明推劢多道批处理系统形成和収展的主要劢力是什么? 答:主要动力来源于四个方面的社会需求与技术发展: (1)不断提高计算机资源的利用率; (2)方便用户; (3)器件的不断更新换代; (4)计算机体系结构的不断发展。 12.试从交互性、及时性以及可靠性方面,将分时系统不实时系统迚行比较。答:(1)及时性:实时信息处理系统对实时性的要求与分时系统类似,都是以人所能接受的等待时间来确定;而实时控制系统的及时性,是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级到毫秒级,甚至有的要低于100微妙。 (2)交互性:实时信息处理系统具有交互性,但人与系统的交互仅限于访问系统中某些特定的专用服务程序。不像分时系统那样能向终端用户提供数据和资源共享等服务。 (3)可靠性:分时系统也要求系统可靠,但相比之下,实时系统则要求系统具有高度的可靠性。因为任何差错都可能带来巨大的经济损失,甚至是灾难性后果,所以在实时系统中,往往都采取了多级容错措施保障系统的安全性及数据的安全性。 13.OS有哪几大特征?其最基本的特征是什么? 答:并发性、共享性、虚拟性和异步性四个基本特征;最基本的特征是并发性。 第二章 2. 画出下面四条诧句的前趋图: S1=a:=x+y; S2=b:=z+1; S3=c:=a –b;S4=w:=c+1; 8.试说明迚程在三个基本状态之间转换的典型原因。 答:(1)就绪状态→执行状态:进程分配到CPU资源 (2)执行状态→就绪状态:时间片用完 (3)执行状态→阻塞状态:I/O请求 (4)阻塞状态→就绪状态:I/O完成

计算机系统结构课后习题四、五答案

习题四 1.教材P88 存储层次的访问效率e计算公式。 e=T A1/(H T A1+(1-H) T A2) e H T A1+ e(1-H) T A2= T A1 H T A1+ (1-H) T A2= T A1/ e H T A1 -H T A2= T A1/ e- T A2 H (T A1 - T A2) = T A1/ e- T A2 H = T A1/ e- T A2/ (T A1 - T A2) H = T A1(1/ e- T A2/ T A1)/ T A1 (1- T A2/ T A1) H = (1/ e- T A2/ T A1)/ (1- T A2/ T A1) 把题意的条件带入,命中率H=(1/ e- T A2/ T A1)/ (1- T A2/ T A1) =(1/ 0.8- 10-2/ 10-7)/ (1- 10-2/ 10-7) =0.999999975 实际上,这样高的命中率是极难达到的。 在主辅存之间增设一级存储器,让其速度介于主存辅存之间,让主存与中间级的访问时间比为1:100,中间级与辅存之间的访问时间比为1:1000,将它们配上相应辅助软硬件,组成一个三级存储层次,这样,可以使第1级主存的命中率降低到 H=(1/ 0.8- 10-5/ 10-7)/ (1- 10-5/ 10-7) =0.997 1.教材P84 每个存储周期能访问到的平均字数 B=(1-(1-λ)m)/λ=(1-0.7532)/0.25 ≈4 既每个存储周期能访问到的平均字数为4。 若将λ=25%,m=16代入得

B=(1-(1-λ)m)/λ=(1-0.7516)/0.25 =3.96 既每个存储周期能访问到的平均字数为3.96。 可见,模数m不宜太大,否则性能改进不大。 3.教材P81。m个存储体并行的最大频宽B m=W*m/T M,根据题意,实际频宽要低于最大频宽。即实际频宽≤0.6最大频宽。 4*106B/s≤0.6*4 B*m/(2*10-6 s) 4≤0.6* m*4/2 2≤0.6* m 3.333≤ m m取2的幂,即m为4。 4.教材P91。根据题意,画出页表。 虚存页号实页号装入位 0 3 1 1 1 1 2 2 0 3 3 0 4 2 1 5 1 0 6 0 1 7 0 0 ⑴发生页面失效的全部虚页号就是页映像表中所有装入位为0的行所对应的虚页号的集合。本题为2,3,5,7。 ⑵按以下虚地址计算主存实地址的情况列表 虚地址虚存 页号页内位移装入 位 实页号页内位移实地址 0 0 0 1 3 0 (3*1024+0)3072 3728(3*1024+656) 3 656 0 页面失效页面失效无 1023(0*1024+1023)0 1023 1 3 1023 (3*1024+1023)4095 1024(1*1024+0) 1 0 1 1 0 (1*1024+0)1024 2055(2*1024+7) 2 7 0 页面失效页面失效无 7800(7*1024+632)7 632 0 页面失效页面失效无

近代史纲要 上篇综述 习题及答案

上篇综述作业及答案 一、单项选择题 1.中国封建社会的基本生产结构是:() A.手工业 B.农业经济 C.工业 D.小农经济 2.19世纪初,大肆向中国走私鸦片的国家是( ) 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.1840年第一次鸦片战争 D.第二次鸦片战争 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.十九世纪七十年代 单项答案1. D 2.B 3. B 4. A 5. C 6. A 7.D 8. C 9. B 10. B 11.B 12. B 13. A 14. B 15. C

计算机体系结构课后答案

计算机体系结构课后答案

计算机体系结构课后答案 【篇一:计算机体系结构习题(含答案)】 1、尾数用补码、小数表示,阶码用移码、整数表示,尾数字长p=6(不包括符号位),阶码字长q=6(不包括符号位),为数基值rm=16,阶码基值re=2。对于规格化浮点数,用十进制表达式写出如下数据(对于前11项,还要写出16进值编码)。 (1)最大尾数(8)最小正数 (2)最小正尾数(9)最大负数 (3)最小尾数(10)最小负数 (4)最大负尾数(11)浮点零 (5)最大阶码(12)表数精度 (6)最小阶码(13)表数效率 (7)最大正数(14)能表示的规格化浮点数个数 2.一台计算机系统要求浮点数的精度不低于10-7.2,表数范围正数不小于1038,且正、负数对称。尾数用原码、纯小数表示,阶码用移码、整数表示。 (1) 设计这种浮点数的格式 (2) 计算(1)所设计浮点数格式实际上能够表示的最大正数、最大负数、表数精度和表数效率。 3.某处理机要求浮点数在正数区的积累误差不大于2-p-1 ,其中,p是浮点数的尾数长度。 (1) 选择合适的舍入方法。

(2) 确定警戒位位数。 (3) 计算在正数区的误差范围。 4.假设有a和b两种不同类型的处理机,a处理机中的数据不带标志符,其指令字长和数据字长均为32位。b处理机的数据带有标志符,每个数据的字长增加至36位,其中有4位是标志符,它的指令数由最多256条减少到不到64条。如果每执行一条指令平均要访问两个操作数,每个存放在存储器中的操作数平均要被访问8次。对于一个由1000条指令组成的程序,分别计算这个程序在a处理机和b处理机中所占用的存储空间大小(包括指令和数据),从中得到什么启发? 5.一台模型机共有7条指令,各指令的使用频率分别为35%,25%,20%,10%,5%,3%和2%,有8个通用数据寄存器,2个变址寄存器。 (1) 要求操作码的平均长度最短,请设计操作码的编码,并计算所设计操作码的平均长度。 6.某处理机的指令字长为16位,有双地址指令、单地址指令和零地址指令3类,并假设每个地址字 段的长度均为6位。 (1) 如果双地址指令有15条,单地址指令和零地址指令的条数基本相同,问单地址指令和零地址指令各有多少条?并且为这3类指令分配操作码。 (2) 如果要求3类指令的比例大致为1:9:9,问双地址指令、单地址指令和零地址指令各有多少条?并且为这3类指令分配操作码。 7.别用变址寻址方式和间接寻址方式编写一个程序,求c=a+b,其中,a与b都是由n个元素组成的一维数组。比较两个程序,并回答下列问题: (1) 从程序的复杂程度看,哪一种寻址方式更好?

体系结构课后习题答案

3.某模型机有10条指令I1~I10,它们的使用频度分别为0.3,0.24,0.16,0.12,0.07,0.04,0.03,0.02, 0.01,0.01。 (1)计算采用等长操作码表示时的信息冗余量。 (2)要求操作码的平均长度最短,试设计操作码的编码,并计算所设计操作码的平均长度。 (3)只有二种码长,试设计平均码长最短的扩展操作码编码并计算平均码长。 (4)只有二种码长,试设计平均码长最短的等长扩展码编码并计算平均码长。 3.(1)采用等长操作码表示时的信息冗余量为33.5%。 (2)操作码的Huffman编码法如表2.2所示,此种编码的平均码长为2.7位。 表2.2 操作码的Huffman编码法、2-5扩展码和2-4等长扩展码编码法 (4)操作码的2-4等长扩展码编码法如表2.2所示,此种编码的平均码长为2.92位。 5.若某机设计有如下格式的指令: 三地址指令12种,一地址指令254种,设指令字的长度为16位,每个地址码字段的位数均为4位。若操作码的编码采用扩展操作码,问二地址指令最多可以设计多少种? 5.二地址指令最多可以设计48种。 6.一台模型机共有9条指令I1~I9,各指令的使用频度分别为30%,20%,20%,10%,8%,6%,3%,2%,1%。该模型机有8位和16位两种指令字长。8位字长指令为寄存器-寄存器(R-R)二地址类型,16位字长指令为寄存器-存储器(R-M)二地址变址寻址类型。 (1)试设计有二种码长的扩展操作码,使其平均码长最短,并计算此种编码的平均码长。 (2)在(1)的基础上,该机允许使用多少个可编址的通用寄存器? (3)若采用通用寄存器作为变址寄存器,试设计该机的两种指令格式,并标出各字段的位数。 (4)计算变址寻址的偏移地址范围。 6.(1)操作码的2-5扩展码编码法如表2.3所示,此种编码的平均码长为2.9位。 表2.3 操作码的Huffman编码法和2-4等长扩展码编码法

近代史课后题答案整理

中国近代史纲要课后习题答案 1怎样认识近代中国的主要矛盾、社会性质? (1)近代中国的主要矛盾 帝国主义和中华民族的矛盾;封建主义和人民大众的矛盾是近代中国的主要矛盾。中国近代社会的两对主要矛盾是互相交织在一起的,而帝国主义和中华民族的矛盾,是最主要的矛盾。(2)社会性质:半殖民地半封建的性质。 中国社会的半殖民地半封建社会,是近代以来中国在外国资本主义势力的入侵及其与中国封建主义势力相结合的条件下,逐步形成的一种从属于资本主义世界体系的畸形的社会形态。鸦片战争前的中国社会是封建社会。鸦片战争以后,随着外国资本-帝国主义的入侵,中国社会性质发生了根本性变化:独立的中国逐步变成半殖民地的中国;封建的中国逐步变成半封建的中国。 2.如何理解近代中国的两大历史任务及其相互关系? (1)近代中国的两大历史任务: 第一,争取民族独立,人民解放;第二,实现国家富强,人民富裕。 (2)近代中国的两大历史任务的相互关系: 争取民族独立,人民解放和实现国家富强,人民富裕这两个历史任务,是互相区别又互相紧密联系的。 第一,由于腐朽的社会制度束缚着生产力的发展,阻碍着经济技术的进步,必须首先改变这种制度,争取民族独立和人民解放,才能为实现国家富强和人民富裕创造前提,开辟道路。近代以来的历史表明,争得争取民族独立和人民解放,必须进行反帝反封建的民主革命。第二,实现国家富强和人民富裕是民族独立,人民解放的最终目的和必然要求。 第一章反对外国侵略的斗争 3.中国近代历次反侵略战争失败的根本原因是什么? 第一,近代中国社会制度的腐败是反侵略战争失败的根本原因。 在1840年以后中国逐渐沦为半殖民地半封建社会的过程中,清王朝统治者从皇帝到权贵,大都昏庸愚昧,不了解世界大势,不懂得御敌之策。由于政治腐败、经济落后和文化保守,一方面使清朝统治阶级封闭自守,妄自尊大,骄奢淫逸,盲目进攻;另一方面又使统治者和清军指挥人员在战争面前完全没有应变的能力和心态,不适应于近代战争,不少将帅贪生怕死,临阵脱逃,有的甚至出卖国家和民族的利益。清政府尤其害怕人民群众,担心人民群众动员起来会危及自身统治,所以不敢发动和依靠人民群众的力量。 清朝统治集团在对外战争中妥协退让求和投降的一系列做法,已经使他失去在中国存在的理由,不推翻他是不能取得反侵略战争胜利的。 第二,近代中国经济技术的落后是反侵略战争失败的另一个重要原因。 当时的英国已经历过工业革命,资本主义生产力获得突飞猛进的发展,而中国仍停留在封建的自然经济水平上。经济技术的落后直接造成军事装备的落后,军队指挥员不了解近代军事战术,从而造成军队素质和战斗力的低下。 经济技术落后是反侵略战争失败的重要原因,但并不表明经济技术落后就一定在反侵略战争中失败。正是因为当时的中国政府不能很好地组织反侵略战争,不能发动和利用人民群众的力量,甚至压制人民群众,其失败是不可避免的。 第二章对国家出路的早期探索 4、如何认识太平天国农民战争的意义和失败的原因、教训? (1)太平天国农民战争的意义 太平天国起义虽然失败了,但它具有不可磨灭的历史功绩和重大的历史意义。 第一,太平天国起义沉重打击了封建统治阶级,强烈震撼了清政府的统治根基,加速了清王

计算机体系结构课后习题

第1章 计算机系统结构的基本概念 试用实例说明计算机系统结构、计算机组成与计算机实现之间的相互关系。 答:如在设计主存系统时,确定主存容量、编址方式、寻址范围等属于计算机系统结构。确定主存周期、逻辑上是否采用并行主存、逻辑设计等属于计算机组成。选择存储芯片类型、微组装技术、线路设计等属于计算机实现。 计算机组成是计算机系统结构的逻辑实现。计算机实现是计算机组成的物理实现。一种体系结构可以有多种组成。一种组成可以有多种实现。 计算机系统设计中经常使用的4个定量原理是什么?并说出它们的含义。 答:(1)以经常性事件为重点。在计算机系统的设计中,对经常发生的情况,赋予它优先的处理权和资源使用权,以得到更多的总体上的改进。(2)Amdahl 定律。加快某部件执行速度所获得的系统性能加速比,受限于该部件在系统中所占的重要性。(3)CPU 性能公式。执行一个程序所需的CPU 时间 = IC ×CPI ×时钟周期时间。(4)程序的局部性原理。程序在执行时所访问地址的分布不是随机的,而是相对地簇聚。 计算机系统中有三个部件可以改进,这三个部件的部件加速比为: 部件加速比1=30; 部件加速比2=20; 部件加速比3=10 (1) 如果部件1和部件2的可改进比例均为30%,那么当部件3的可改进比例为多少时,系统加速比才可以达到10? (2) 如果三个部件的可改进比例分别为30%、30%和20%,三个部件同时改进,那么系统中不可加速部分的执行时间在总执行时间中占的比例是多少? 解:(1)在多个部件可改进情况下,Amdahl 定理的扩展: ∑∑+-= i i i n S F F S )1(1 已知S 1=30,S 2=20,S 3=10,S n =10,F 1=,F 2=,得: ) ()(10/20/0.330/0.30.30.3-11 1033F F +++++= 得F 3=,即部件3的可改进比例为36%。 (2)设系统改进前的执行时间为T ,则3个部件改进前的执行时间为:(++)T = ,不可改进部分的执行时间为。 已知3个部件改进后的加速比分别为S 1=30,S 2=20,S 3=10,因此3个部件改进后的执行时间为: T T T T T n 045.010 2.020 3.0303.0'=++= 改进后整个系统的执行时间为:Tn = + = 那么系统中不可改进部分的执行时间在总执行时间中占的比例是: 82.0245.02.0=T T 假设某应用程序中有4类操作,通过改进,各操作获得不同的性能提高。具体数据如下表所示: 操作类型 程序中的数量 (百万条指令) 改进前的执行时间 (周期) 改进后的执行时间 (周期)

相关文档
最新文档