文档视界 最新最全的文档下载
当前位置:文档视界 › 《C语言程序设计》课后习题答案(第四版)

《C语言程序设计》课后习题答案(第四版)

《C语言程序设计》课后习题答案(第四版)
《C语言程序设计》课后习题答案(第四版)

第1章程序设计和C语言1

1.1什么是计算机程序1

1.2什么是计算机语言1

1.3C语言的发展及其特点3

1.4最简单的C语言程序5

1.4.1最简单的C语言程序举例6

1.4.2C语言程序的结构10

1.5运行C程序的步骤与方法12

1.6程序设计的任务14

1-5 #include

int main ( )

{ printf ("**************************\n\n");

printf(" Very Good!\n\n");

printf ("**************************\n");

return 0;

}

1-6#include

int main()

{int a,b,c,max;

printf("please input a,b,c:\n");

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

max=a;

if (max

max=b;

if (max

max=c;

printf("The largest number is %d\n",max); return 0;

}

第2章算法——程序的灵魂16

2.1什么是算法16

2.2简单的算法举例17

2.3算法的特性21

2.4怎样表示一个算法22

2.4.1用自然语言表示算法22

2.4.2用流程图表示算法22

2.4.3三种基本结构和改进的流程图26

2.4.4用N S流程图表示算法28

2.4.5用伪代码表示算法31

2.4.6用计算机语言表示算法32

2.5结构化程序设计方法34

习题36

第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37

3.2数据的表现形式及其运算39

3.2.1常量和变量39

3.2.2数据类型42

3.2.3整型数据44

3.2.4字符型数据47

3.2.5浮点型数据49

3.2.6怎样确定常量的类型51

3.2.7运算符和表达式52

3.3C语句57

3.3.1C语句的作用和分类57

3.3.2最基本的语句——赋值语句59

3.4数据的输入输出65

3.4.1输入输出举例65

3.4.2有关数据输入输出的概念67

3.4.3用printf函数输出数据68

3.4.4用scanf函数输入数据75

3.4.5字符数据的输入输出78

习题82

3-1 #include

#include

int main()

{float p,r,n;

r=0.1;

n=10;

p=pow(1+r,n);

printf("p=%f\n",p);

return 0;

}

3-2-1

#include

#include

int main()

{float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;

p=1000;

r5=0.0585;

r3=0.054;

r2=0.0468;

r1=0.0414;

r0=0.0072;

p1=p*((1+r5)*5); // 一次存5年期

p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期

p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期

p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次

printf("p1=%f\n",p1); // 输出按第1方案得到的本息和

printf("p2=%f\n",p2); // 输出按第2方案得到的本息和

printf("p3=%f\n",p3); // 输出按第3方案得到的本息和

printf("p4=%f\n",p4); // 输出按第4方案得到的本息和

printf("p5=%f\n",p5); // 输出按第5方案得到的本息和

return 0;

}

3-2-2

#include

#include

int main()

{double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;

p=1000;

r5=0.0585;

r3=0.054;

r2=0.0468;

r1=0.0414;

r0=0.0072;

p1=p*((1+r5)*5); // 一次存5年期

p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期

p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期

p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次

printf("p1=%f\n",p1); // 输出按第1方案得到的本息和

printf("p2=%f\n",p2); // 输出按第2方案得到的本息和

printf("p3=%f\n",p3); // 输出按第3方案得到的本息和

printf("p4=%f\n",p4); // 输出按第4方案得到的本息和

printf("p5=%f\n",p5); // 输出按第5方案得到的本息和

return 0;

}

3-2-3

#include

#include

int main()

{float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;

p=1000;

r5=0.0585;

r3=0.054;

r2=0.0468;

r1=0.0414;

r0=0.0072;

p1=p*((1+r5)*5); // 一次存5年期

p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期

p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期

p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次

printf("p1=%10.2f\n",p1); // 输出按第1方案得到的本息和

printf("p2=%10.2f\n",p2); // 输出按第2方案得到的本息和

printf("p3=%10.2f\n",p3); // 输出按第3方案得到的本息和

printf("p4=%10.2f\n",p4); // 输出按第4方案得到的本息和

printf("p5=%10.2f\n",p5); // 输出按第5方案得到的本息和

return 0;

}

3-3.

#include

#include

int main()

{float d=300000,p=6000,r=0.01,m;

m=log10(p/(p-d*r))/log10(1+r);

printf("m=%6.2f\n",m);

return 0;

}

3-4

#include

int main()

{int c1,c2;

c1=197;

c2=198;

printf("c1=%c,c2=%c\n",c1,c2);

printf("c1=%d,c2=%d\n",c1,c2);

return 0;

}

3-5

#include

int main()

{int a,b;

float x,y;

char c1,c2;

scanf("a=%d b=%d",&a,&b);

scanf("%f %e",&x,&y);

scanf("%c%c",&c1,&c2);

printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);

return 0;

}

3-6

#include

int main()

{char c1='C',c2='h',c3='i',c4='n',c5='a';

c1=c1+4;

c2=c2+4;

c3=c3+4;

c4=c4+4;

c5=c5+4;

printf("passwor is %c%c%c%c%c\n",c1,c2,c3,c4,c5);

return 0;

}

3-7

#include

int main ()

{float h,r,l,s,sq,vq,vz;

float pi=3.141526;

printf("请输入圆半径r,圆柱高h∶");

scanf("%f,%f",&r,&h); //要求输入圆半径r和圆柱高h l=2*pi*r; //计算圆周长l

s=r*r*pi; //计算圆面积s

sq=4*pi*r*r; //计算圆球表面积sq vq=3.0/4.0*pi*r*r*r; //计算圆球体积vq

vz=pi*r*r*h; //计算圆柱体积vz printf("圆周长为: l=%6.2f\n",l);

printf("圆面积为: s=%6.2f\n",s);

printf("圆球表面积为: sq=%6.2f\n",sq);

printf("圆球体积为: v=%6.2f\n",vq);

printf("圆柱体积为: vz=%6.2f\n",vz);

return 0;

}

3-8-1

#include

int main()

{

int c1,c2; //整型定义

printf("请输入两个整数c1,c2:");

scanf("%d,%d",&c1,&c2);

printf("按字符输出结果:\n");

printf("%c,%c\n",c1,c2);

printf("按ASCII码输出结果为:\n");

printf("%d,%d\n",c1,c2);

return 0;

}

3-8-2

#include

int main()

{

char c1,c2; //定义字符型变量int i1,i2; //定义整型变量printf("请输入两个字符c1,c2:");

scanf("%c,%c",&c1,&c2);

i1=c1; //赋值给整型变量i2=c2;

printf("按字符输出结果:\n");

printf("%c,%c\n",i1,i2);

printf("按整数输出结果:\n");

printf("%d,%d\n",c1,c2);

return 0;

}

3-8-3

#include

int main()

{

char c1,c2; //定义为字符型

int i1,i2; //定义为整型

printf("请输入两个整数i1,i2:");

scanf("%d,%d",&i1,&i2);

c1=i1; //将整数赋值给字符变量c2=i2;

printf("按字符输出结果:\n");

printf("%c,%c\n",c1,c2);

printf("按整数输出结果:\n");

printf("%d,%d\n",c1,c2);

return 0;

}

3-8

#include

int main()

{

char c1,c2;

printf("请输入两个字符c1,c2:");

c1=getchar();

c2=getchar();

printf("用putchar语句输出结果为:");

putchar(c1);

putchar(c2);

printf("\n");

printf("用printf语句输出结果为:");

printf("%c %c\n",c1,c2);

return 0;

}

第4章选择结构程序设计85

4.1选择结构和条件判断85

4.2用if语句实现选择结构87

4.2.1用if语句处理选择结构举例87

4.2.2if语句的一般形式89

4.3关系运算符和关系表达式91

4.3.1关系运算符及其优先次序91

4.3.2关系表达式92

4.4逻辑运算符和逻辑表达式92

4.4.1逻辑运算符及其优先次序93

4.4.2逻辑表达式94

4.4.3逻辑型变量96

4.5条件运算符和条件表达式97

4.6选择结构的嵌套99

4.7用switch语句实现多分支选择结构102

4.8选择结构程序综合举例105

习题111

4-4-1

#include

int main()

{

int a,b,c;

printf("请输入三个整数:");

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

if (a

if (b

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

else

printf("max=%d\n",b);

else if (a

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

else

printf("max=%d\n",a);

return 0;

}

4-4-2

#include

int main()

{ int a,b,c,temp,max;

printf("请输入三个整数:");

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

temp=(a>b)?a:b; /*将a和b中的大者存入temp中*/

max=(temp>c)?temp:c; /*将a和b中的大者与c比较,取最大者*/ printf("三个整数的最大数是%d\n",max);

return 0;

}

4-5-2

#include

#include

#define M 1000

int main()

{

int i,k;

printf("请输入一个小于%d的整数i:",M);

scanf("%d",&i);

while (i>M)

{printf("输入的数不符合要求,请重新输入一个小于%d的整数i:",M);

scanf("%d",&i);

}

k=sqrt(i);

printf("%d的平方根的整数部分是:%d\n",i,k);

return 0;

}

4-5

#include

#include

#define M 1000

int main()

{

int i,k;

printf("请输入一个小于%d的整数i:",M);

scanf("%d",&i);

if (i>M)

{printf("输入的数不符合要求,请重新输入一个小于%d的整数i:",M);

scanf("%d",&i);

}

k=sqrt(i);

printf("%d的平方根的整数部分是:%d\n",i,k);

return 0;

}

4-6.

#include

int main()

{ int x,y;

printf("输入x:");

scanf("%d",&x);

if(x<1) /* x<1 */

{ y=x;

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

}

else if(x<10) /* 1=

{ y=2*x-1;

printf("x=%d, y=2*x-1=%d\n",x,y);

}

else /* x>=10 */

{ y=3*x-11;

printf("x=%d, y=3*x-11=%d\n",x,y);

}

return 0;

}

4-7-1

#include

int main()

{

int x,y;

printf("enter x:");

scanf("%d",&x);

y=-1;

if(x!=0)

if(x>0)

y=1;

else

y=0;

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

return 0;

}

4-7-2

#include

int main()

{

int x,y;

printf("please enter x:");

scanf("%d",&x);

y=0;

if(x>=0)

if(x>0) y=1;

else y=-1;

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

return 0;

}

4-8

#include

int main()

{ float score;

char grade;

printf("请输入学生成绩:");

scanf("%f",&score);

while (score>100||score<0)

{printf("\n 输入有误,请重输");

scanf("%f",&score);

}

switch((int)(score/10))

{case 10:

case 9: grade='A';break;

case 8: grade='B';break;

case 7: grade='C';break;

case 6: grade='D';break;

case 5:

case 4:

case 3:

case 2:

case 1:

case 0: grade='E';

}

printf("成绩是%5.1f,相应的等级是%c\n ",score,grade);

return 0;

}

4-9

#include

#include

int main()

{

int num,indiv,ten,hundred,thousand,ten_thousand,place; //分别代表个位,十位,百位,千位,万位和位数

printf("请输入一个整数(0-99999):");

scanf("%d",&num);

if (num>9999)

place=5;

else if (num>999)

place=4;

else if (num>99)

place=3;

else if (num>9)

place=2;

else place=1;

printf("位数:%d\n",place);

printf("每位数字为:");

ten_thousand=num/10000;

thousand=(int)(num-ten_thousand*10000)/1000;

hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;

ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;

indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10); switch(place)

{case 5:printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);

printf("\n反序数字为:");

printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);

break;

case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);

printf("\n反序数字为:");

printf("%d%d%d%d\n",indiv,ten,hundred,thousand);

break;

case 3:printf("%d,%d,%d",hundred,ten,indiv);

printf("\n反序数字为:");

printf("%d%d%d\n",indiv,ten,hundred);

break;

case 2:printf("%d,%d",ten,indiv);

printf("\n反序数字为:");

printf("%d%d\n",indiv,ten);

break;

case 1:printf("%d",indiv);

printf("\n反序数字为:");

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

break;

}

return 0;

}

4-10-1

#include

int main()

{

int i;

double bonus,bon1,bon2,bon4,bon6,bon10;

bon1=100000*0.1;

bon2=bon1+100000*0.075;

bon4=bon2+100000*0.05;

bon6=bon4+100000*0.03;

bon10=bon6+400000*0.015;

printf("请输入利润i:");

scanf("%d",&i);

if (i<=100000)

bonus=i*0.1;

else if (i<=200000)

bonus=bon1+(i-100000)*0.075;

else if (i<=400000)

bonus=bon2+(i-200000)*0.05;

else if (i<=600000)

bonus=bon4+(i-400000)*0.03;

else if (i<=1000000)

bonus=bon6+(i-600000)*0.015;

else

bonus=bon10+(i-1000000)*0.01;

printf("奖金是: %10.2f\n",bonus);

return 0;

}

4-10-2

#include

int main()

{

int i;

double bonus,bon1,bon2,bon4,bon6,bon10;

int branch;

bon1=100000*0.1;

bon2=bon1+100000*0.075;

bon4=bon2+200000*0.05;

bon6=bon4+200000*0.03;

bon10=bon6+400000*0.015;

printf("请输入利润i:");

scanf("%d",&i);

branch=i/100000;

if (branch>10) branch=10;

switch(branch)

{ case 0:bonus=i*0.1;break;

case 1:bonus=bon1+(i-100000)*0.075;break;

case 2:

case 3: bonus=bon2+(i-200000)*0.05;break;

case 4:

case 5: bonus=bon4+(i-400000)*0.03;break;

case 6:

case 7:

case 8:

case 9: bonus=bon6+(i-600000)*0.015;break;

case 10: bonus=bon10+(i-1000000)*0.01;

}

printf("奖金是%10.2f\n",bonus);

return 0;

}

4-11

#include

int main()

{int t,a,b,c,d;

printf("请输入四个数:");

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

printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);

if (a>b)

{ t=a;a=b;b=t;}

if (a>c)

{ t=a;a=c;c=t;}

if (a>d)

{ t=a;a=d;d=t;}

if (b>c)

{ t=b;b=c;c=t;}

if (b>d)

{ t=b;b=d;d=t;}

if (c>d)

{ t=c;c=d;d=t;}

printf("排序结果如下: \n");

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

return 0;

}

4-12

#include

int main()

{

int h=10;

float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;

printf("请输入一个点(x,y):");

scanf("%f,%f",&x,&y);

d1=(x-x4)*(x-x4)+(y-y4)*(y-y4); /*求该点到各中心点距离*/

d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);

d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);

d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);

if (d1>1 && d2>1 && d3>1 && d4>1) h=0; /*判断该点是否在塔外*/

printf("该点高度为%d\n",h);

return 0;

}

第5章循环结构程序设计114

5.1为什么需要循环控制114

5.2用while语句实现循环115

5.3用do…while语句实现循环117

5.4用for 语句实现循环120

5.5循环的嵌套124

5.6几种循环的比较125

5.7改变循环执行的状态125

5.7.1用break语句提前终止循环126

5.7.2用continue语句提前结束本次循环127

5.7.3break语句和continue语句的区别128

5.8循环程序举例131

习题140

5-2

#include

#include // 程序中用到数学函数fabs,应包含头文件math.n int main()

{

int sign=1,count=0; // sign用来表示数值的符号,count用来统计循环次数double pi=0.0,n=1.0,term=1.0; // pi开始代表多项式的值,最后代表π的值, n代表分母,term代表当前项的值

while(fabs(term)>=1e-8) // 检查当前项term的绝对值是否大于或等于10的(-6)次方

{

pi=pi+term; // 把当前项term累加到pi中

n=n+2; // n+2是下一项的分母

sign=-sign; // sign代表符号,下一项的符号与上一项符号相反term=sign/n; // 求出下一项的值term

count++; // count累加1

}

pi=pi*4; // 多项式的和pi乘以4,才是π的近似值

printf("pi=%10.8f\n",pi); // 输出π的近似值

printf("count=%d\n",count); // 输出循环次数

return 0;

}

5-3

#include

int main()

{

int p,r,n,m,temp;

printf("请输入两个正整数n,m:");

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

if (n

{

temp=n;

n=m;

m=temp;

}

p=n*m;

while(m!=0)

{

r=n%m;

n=m;

m=r;

}

printf("它们的最大公约数为:%d\n",n); printf("它们的最小公约数为:%d\n",p/n); return 0;

}

5-4

#include

int main()

{

char c;

int letters=0,space=0,digit=0,other=0;

printf("请输入一行字符:\n");

while((c=getchar())!='\n')

{

if (c>='a' && c<='z' || c>='A' && c<='Z')

letters++;

else if (c==' ')

space++;

else if (c>='0' && c<='9')

digit++;

else

other++;

}

printf("字母数:%d\n空格数:%d\n数字数:%d\n其它字符数:%d\n",letters,space,digit,other);

return 0;

}

5-5

#include

int main()

{

int a,n,i=1,sn=0,tn=0;

printf("a,n=:");

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

while (i<=n)

{

tn=tn+a; /*赋值后的tn为i个a组成数的值*/

sn=sn+tn; /*赋值后的sn为多项式前i项之和*/

a=a*10;

++i;

}

printf("a+aa+aaa+...=%d\n",sn);

return 0;

}

5-6

#include

int main()

{double s=0,t=1;

int n;

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

{

t=t*n;

s=s+t;

}

printf("1!+2!+...+20!=%22.15e\n",s);

return 0;

}

5-7

#include

int main()

{

int n1=100,n2=50,n3=10;

double k,s1=0,s2=0,s3=0;

for (k=1;k<=n1;k++) /*计算1到100的和*/

{s1=s1+k;}

for (k=1;k<=n2;k++) /*计算1到50各数的平方和*/

{s2=s2+k*k;}

for (k=1;k<=n3;k++) /*计算1到10的各倒数和*/

{s3=s3+1/k;}

printf("sum=%15.6f\n",s1+s2+s3);

return 0;

}

5-8

#include

int main()

{

int i,j,k,n;

printf("parcissus numbers are ");

for (n=100;n<1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

if (n==i*i*i + j*j*j + k*k*k)

printf("%d ",n);

}

printf("\n");

return 0;

}

5-9-1

#define M 1000 /*定义寻找范围*/

#include

int main()

{

int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;

int i,a,n,s;

for (a=2;a<=M;a++) /* a是2-1000之间的整数,检查它是否完数*/

{n=0; /* n用来累计a的因子的个数*/

s=a; /* s用来存放尚未求出的因子之和,开始时等于a */ for (i=1;i

if (a%i==0) /* 如果i是a的因子*/

{n++; /* n加1,表示新找到一个因子*/

s=s-i; /* s减去已找到的因子,s的新值是尚未求出的因子之和*/

switch(n) /* 将找到的因子赋给k1...k9,或k10 */

{case 1:

k1=i; break; /* 找出的笫1个因子赋给k1 */

case 2:

k2=i; break; /* 找出的笫2个因子赋给k2 */

case 3:

k3=i; break; /* 找出的笫3个因子赋给k3 */

case 4:

k4=i; break; /* 找出的笫4个因子赋给k4 */

case 5:

k5=i; break; /* 找出的笫5个因子赋给k5 */

case 6:

k6=i; break; /* 找出的笫6个因子赋给k6 */

case 7:

k7=i; break; /* 找出的笫7个因子赋给k7 */

case 8:

k8=i; break; /* 找出的笫8个因子赋给k8 */

case 9:

k9=i; break; /*找出的笫9个因子赋给k9 */

case 10:

k10=i; break; /* 找出的笫10个因子赋给k10 */

}

}

if (s==0)

{

printf("%d ,Its factors are ",a);

if (n>1) printf("%d,%d",k1,k2); /* n>1表示a至少有2个因子*/

if (n>2) printf(",%d",k3); /* n>2表示至少有3个因子,故应再输出一个因子*/

if (n>3) printf(",%d",k4); /* n>3表示至少有4个因子,故应再输出一个因子*/

if (n>4) printf(",%d",k5); /* 以下类似*/

if (n>5) printf(",%d",k6);

if (n>6) printf(",%d",k7);

if (n>7) printf(",%d",k8);

if (n>8) printf(",%d",k9);

if (n>9) printf(",%d",k10);

printf("\n");

}

}

return 0;

}

5-9-2

#include

int main()

{int m,s,i;

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

{s=0;

for (i=1;i

if ((m%i)==0) s=s+i;

if(s==m)

{printf("%d,its factors are ",m);

for (i=1;i

if (m%i==0) printf("%d ",i);

printf("\n");

}

}

return 0;

}

5-10

#include

int main()

{

int i,n=20;

double a=2,b=1,s=0,t;

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

{

s=s+a/b;

t=a,

a=a+b,

b=t;

}

printf("sum=%16.10f\n",s);

return 0;

}

5-11

#include

int main()

{

double sn=100,hn=sn/2;

int n;

计算机系统结构课后答案

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

计算机系统结构习题解答

《计算机系统结构》习题解答 第一章(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) 第四章节:数据的概括性度量 (15) 第六章节:统计量及其抽样分布 (26) 第七章节:参数估计....................................................... (28) 第八章节:假设检验........................................................ (38) 第九章节:列联分析........................................................ (41) 第十章节:方差分析........................................................ (43) 3.1 为评价家电行业售后服务的质量,随机抽取了由100个家庭构成的一个样本。服务质量的等级分别表示为:A.好;B.较好;C一般;D.较差;E.差。调查结果如下: B E C C A D C B A E D A C B C D E C E E A D B C C A E D C B B A C D E A B D D C C B C E D B C C B C D A C B C D E C E B B E C C A D C B A E B A C E E A B D D C A D B C C A E D C B C B C E D B C C B C 要求: (1)指出上面的数据属于什么类型。 顺序数据 (2)用Excel制作一张频数分布表。 用数据分析——直方图制作: 接收频率 E16 D17 C32 B21 A14 (3)绘制一张条形图,反映评价等级的分布。 用数据分析——直方图制作: (4)绘制评价等级的帕累托图。 逆序排序后,制作累计频数分布表:

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

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

工程热力学例题答案解

例1:如图,已知大气压p b=101325Pa ,U 型管内 汞柱高度差H =300mm ,气体表B 读数为0.2543MPa ,求:A 室压力p A 及气压表A 的读数p e,A 。 解: 强调: P b 是测压仪表所在环境压力 例2:有一橡皮气球,当其内部压力为0.1MPa (和大气压相同)时是自由状态,其容积为0.3m 3。当气球受太阳照射而气体受热时,其容积膨胀一倍而压力上升到0.15MPa 。设气球压力的增加和容积的增加成正比。试求: (1)该膨胀过程的p~f (v )关系; (2)该过程中气体作的功; (3)用于克服橡皮球弹力所作的功。 解:气球受太阳照射而升温比较缓慢,可假定其 ,所以关键在于求出p~f (v ) (2) (3) 例3:如图,气缸内充以空气,活塞及负载195kg ,缸壁充分导热,取走100kg 负载,待平 衡后,不计摩擦时,求:(1)活塞上升的高度 ;(2)气体在过程中作的功和换热量,已 知 解:取缸内气体为热力系—闭口系 分析:非准静态,过程不可逆,用第一定律解析式。 计算状态1及2的参数: 过程中质量m 不变 据 因m 2=m 1,且 T 2=T 1 体系对外力作功 注意:活塞及其上重物位能增加 例4:如图,已知活塞与气缸无摩擦,初始时p 1=p b ,t 1=27℃,缓缓加热, 使 p 2=0.15MPa ,t 2=207℃ ,若m =0.1kg ,缸径=0.4m ,空气 求:过程加热量Q 。 解: 据题意 ()()121272.0T T m u u m U -=-=? 例6 已知:0.1MPa 、20℃的空气在压气机中绝热压缩后,导入换热器排走部分热量,再进入喷管膨胀到0.1MPa 、20℃。喷管出口截面积A =0.0324m2,气体流速c f2=300m/s 。已知压气机耗功率710kW ,问换热器的换热量。 解: 稳定流动能量方程 ——黑箱技术 例7:一台稳定工况运行的水冷式压缩机,运行参数如图。设空气比热 cp =1.003kJ/(kg·K),水的比热c w=4.187kJ/(kg·K)。若不计压气机向环境的散热损失、动能差及位能差,试确定驱动该压气机所需功率。[已知空气的焓差h 2-h 1=cp (T 2-T 1)] 解:取控制体为压气机(不包括水冷部分 流入: 流出: 6101325Pa 0.254310Pa 355600Pa B b eB p p p =+=+?=()()63 02160.110Pa 0.60.3m 0.0310J 30kJ W p V V =-=??-=?=斥L ?{}{}kJ/kg K 0.72u T =1 2T T =W U Q +?=()()212211U U U m u m u ?=-=-252 1.96010Pa (0.01m 0.05m)98J e W F L p A L =??=???=???={}{}kJ/kg K 0.72u T =W U Q +?=g V m pq q R T =()f 22g p c A R T =620.110Pa 300m/s 0.0324m 11.56kg/s 287J/(kg K)293K ???==??()111 11111m V m P e q p q P q u p v ++?++() 1 2 1 22222m V m e q p q q u p v ++Φ?Φ++水水

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

习题一 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 被访问命中的概率

统计学课后题答案第四版中国人民大学出版社

●3.2.某行业管理局所属40个企业2002年的产品销售收入数据如下(单位:万元): 1521241291161001039295127104 10511911411587103118142135125 117108105110107137120136117108 9788123115119138112146113126 (1)根据上面的数据进行适当的分组,编制频数分布表,并计算出累积频数和累积频率; (2)如果按规定:销售收入在125万元以上为先进企业,115万~125万元为良好企业,105万~115万元为一般企业,105万元以下为落后企业,按先进企业、良好企业、一般企业、落后企业进行分组。 解:(1)要求对销售收入的数据进行分组, 全部数据中,最大的为152,最小的为87,知数据全距为152-87=65; 为便于计算和分析,确定将数据分为6组,各组组距为10,组限以整10划分; 为使数据的分布满足穷尽和互斥的要求,注意到,按上面的分组方式,最小值87可能落在最小组之下,最大值152可能落在最大组之上,将最小组和最大组设计成开口形式; 按照“上限不在组内”的原则,用划记法统计各组内数据的个数——企业数,也可以用Excel 进行排序统计(见Excel练习题2.2),将结果填入表内,得到频数分布表如下表中的左两列;将各组企业数除以企业总数40,得到各组频率,填入表中第三列; 在向上的数轴中标出频数的分布,由下至上逐组计算企业数的向上累积及频率的向上累积,由上至下逐组计算企业数的向下累积及频率的向下累积。 整理得到频数分布表如下: 40个企业按产品销售收入分组表 (2)按题目要求分组并进行统计,得到分组表如下: 某管理局下属40个企分组表 按销售收入分组(万元)企业数(个)频率(%) 先进企业良好企业一般企业落后企业11 11 9 9 27.5 27.5 22.5 22.5 合计40100.0

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

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

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

哈工大工程热力学习题答案——杨玉顺版

第二章 热力学第一定律 思 考 题 1. 热量和热力学能有什么区别?有什么联系? 答:热量和热力学能是有明显区别的两个概念:热量指的是热力系通过界面与外界进行的热能交换量,是与热力过程有关的过程量。热力系经历不同的过程与外界交换的热量是不同的;而热力学能指的是热力系内部大量微观粒子本身所具有的能量的总合,是与热力过程无关而与热力系所处的热力状态有关的状态量。简言之,热量是热能的传输量,热力学能是能量?的储存量。二者的联系可由热力学第一定律表达式 d d q u p v δ=+ 看出;热量的传输除了可能引起做功或者消耗功外还会引起热力学能的变化。 2. 如果将能量方程写为 d d q u p v δ=+ 或 d d q h v p δ=- 那么它们的适用范围如何? 答:二式均适用于任意工质组成的闭口系所进行的无摩擦的内部平衡过程。因为 u h pv =-,()du d h pv dh pdv vdp =-=-- 对闭口系将 du 代入第一式得 q dh pdv vdp pdv δ=--+ 即 q dh vdp δ=-。 3. 能量方程 δq u p v =+d d (变大) 与焓的微分式 ()d d d h u pv =+(变大) 很相像,为什么热量 q 不是状态参数,而焓 h 是状态参数? 答:尽管能量方程 q du pdv δ=+ 与焓的微分式 ()d d d h u pv =+(变大)似乎相象,但两者 的数学本质不同,前者不是全微分的形式,而后者是全微分的形式。是否状态参数的数学检验就是,看该参数的循环积分是否为零。对焓的微分式来说,其循环积分:()dh du d pv =+??? 因为 0du =?,()0d pv =? 所以 0dh =?, 因此焓是状态参数。 而 对 于 能 量 方 程 来 说 ,其循环积分:

统计学第四版答案(贾俊平)

第1章统计和统计数据 指出下面的变量类型。(1)年龄。(2)性别。(3)汽车产量。 (4)员工对企业某项改革措施的态度(赞成、中立、反对)。(5)购买商品时的支付方式(现金、信用卡、支票)。详细答案:(1)数值变量。(2)分类变量。(3)数值变量。(4)顺序变量。(5)分类变量。 一家研究机构从IT从业者中随机抽取1000人作为样本进行调查,其中60%回答他们的月收入在5000元以上,50%的人回答他们的消费支付方式是用信用卡。 (1)这一研究的总体是什么样本是什么样本量是多少(2)“月收入”是分类变量、顺序变量还是数值变量(3)“消费支付方式”是分类变量、顺序变量还是数值变量详细答案:(1)总体是“所有IT从业者”,样本是“所抽取的1000名IT从业者”,样本量是1000。(2)数值变量。 (3)分类变量。 一项调查表明,消费者每月在网上购物的平均花费是200元,他们选择在网上购物的主要原因是“价格便宜”。 (1)这一研究的总体是什么 (2)“消费者在网上购物的原因”是分类变量、顺序变量还是数值变量详细答案: (1)总体是“所有的网上购物者”。(2)分类变量。 某大学的商学院为了解毕业生的就业倾向,分别在会计专业抽取50人、市场营销专业抽取30、企业管理20人进行调查。 (1)这种抽样方式是分层抽样、系统抽样还是整群抽样(2)样本量是多少详细答案:(1)分层抽样。(2)100。 第3章用统计量描述数据

排队方式各随机抽取9名顾客,得到第一种排队方式的平均等待时间为分钟,标准差为分钟,第二种排队方式的等待时间(单位:分钟)如下: (1)计算第二种排队时间的平均数和标准差。 (2)比两种排队方式等待时间的离散程度。 (3)如果让你选择一种排队方式,你会选择哪一种试说明理由。 详细答案: (1)(岁);(岁)。 (2);。第一中排队方式的离散程度大。 (3)选方法二,因为平均等待时间短,且离散程度小。 在某地区随机抽取120家企业,按利润额进行分组后结果如下:按利润额分组(万元)企业数(个) 300以下19 300~40030 400~50042 500~60018 600以上11 合计120 计算120家企业利润额的平均数和标准差(注:第一组和最后一组的组距按相邻组计算)。 详细答案: =(万元);(万元)。

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

习题四 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 页面失效页面失效无

商务统计学(第四版)课后习题答案第八章

288 Chapter 8: Confidence Interval Estimation CHAPTER 8 8.1 X ±Z ?σ n = 85±1.96? 864 83.04 ≤μ≤ 86.96 8.2 X ±Z ? σ n = 125±2.58?24 36 114.68 ≤μ≤ 135.32 8.3 If all possible samples of the same size n are taken, 95% of them include the true population average monthly sales of the product within the interval developed. Thus you are 95 percent confident that this sample is one that does correctly estimate the true average amount. 8.4 Since the results of only one sample are used to indicate whether something has gone wrong in the production process, the manufacturer can never know with 100% certainty that the specific interval obtained from the sample includes the true population mean. In order to have 100% confidence, the entire population (sample size N ) would have to be selected. 8.5 To the extent that the sampling distribution of sample means is approximately normal, it is true that approximately 95% of all possible sample means taken from samples of that same size will fall within 1.96 times the standard error away from the true population mean. But the population mean is not known with certainty. Since the manufacturer estimated the mean would fall between 10.99408 and 11.00192 inches based on a single sample, it is not necessarily true that 95% of all sample means will fall within those same bounds. 8.6 Approximately 5% of the intervals will not include the true population. Since the true population mean is not known, we do not know for certain whether it is contained in the interval (between 10.99408 and 11.00192 inches) that we have developed. 8.7 (a) X ±Z ?σ n =0.995±2.58? 0.02 50 0.9877≤μ≤1.0023 (b) Since the value of 1.0 is included in the interval, there is no reason to believe that the mean is different from 1.0 gallon. (c) No. Since σ is known and n = 50, from the Central Limit Theorem, we may assume that the sampling distribution of X is approximately normal. (d) The reduced confidence level narrows the width of the confidence interval. X ±Z ? σ n =0.995±1.96? 0.02 50 0.9895≤μ≤1.0005 (b) Since the value of 1.0 is still included in the interval, there is no reason to believe that the mean is different from 1.0 gallon.

计算机体系结构课后答案

计算机体系结构课后答案

计算机体系结构课后答案 【篇一:计算机体系结构习题(含答案)】 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) 从程序的复杂程度看,哪一种寻址方式更好?

(完整版)工程热力学习题集附答案

工程热力学习题集 一、填空题 1.能源按使用程度和技术可分为 能源和 能源。 2.孤立系是与外界无任何 和 交换的热力系。 3.单位质量的广延量参数具有 参数的性质,称为比参数。 4.测得容器的真空度48V p KPa =,大气压力MPa p b 102.0=,则容器内的绝对压力为 。 5.只有 过程且过程中无任何 效应的过程是可逆过程。 6.饱和水线和饱和蒸汽线将压容图和温熵图分成三个区域,位于三区和二线上的水和水蒸气呈现五种状态:未饱和水 饱和水 湿蒸气、 和 。 7.在湿空气温度一定条件下,露点温度越高说明湿空气中水蒸气分压力越 、水蒸气含量越 ,湿空气越潮湿。(填高、低和多、少) 8.克劳修斯积分 /Q T δ?? 为可逆循环。 9.熵流是由 引起的。 10.多原子理想气体的定值比热容V c = 。 11.能源按其有无加工、转换可分为 能源和 能源。 12.绝热系是与外界无 交换的热力系。 13.状态公理指出,对于简单可压缩系,只要给定 个相互独立的状态参数就可以确定它的平衡状态。 14.测得容器的表压力75g p KPa =,大气压力MPa p b 098.0=,则容器内的绝对压力为 。 15.如果系统完成某一热力过程后,再沿原来路径逆向进行时,能使 都返回原来状态而不留下任何变化,则这一过程称为可逆过程。 16.卡诺循环是由两个 和两个 过程所构成。 17.相对湿度越 ,湿空气越干燥,吸收水分的能力越 。(填大、小) 18.克劳修斯积分 /Q T δ?? 为不可逆循环。 19.熵产是由 引起的。 20.双原子理想气体的定值比热容p c = 。 21、基本热力学状态参数有:( )、( )、( )。 22、理想气体的热力学能是温度的( )函数。 23、热力平衡的充要条件是:( )。 24、不可逆绝热过程中,由于不可逆因素导致的熵增量,叫做( )。 25、卡诺循环由( )热力学过程组成。 26、熵增原理指出了热力过程进行的( )、( )、( )。 31.当热力系与外界既没有能量交换也没有物质交换时,该热力系为_______。 32.在国际单位制中温度的单位是_______。

体系结构课后习题答案

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等长扩展码编码法

统计学贾俊平_第四版课后习题答案 2

3.3 某百货公司连续40天的商品销售额如下: 单位:万元 41 25 29 47 38 34 30 38 43 40 46 36 45 37 37 36 45 43 33 44 35 28 46 34 30 37 44 26 38 44 42 36 37 37 49 39 42 32 36 35 要求:根据上面的数据进行适当的分组,编制频数分布表,并绘制直方图。 1、确定组数: ()l g 40l g () 1.60206 111 6.32l g (2)l g 20.30103 n K =+ =+=+=,取k=6 2、确定组距: 组距=( 最大值 - 最小值)÷ 组数=(49-25)÷6=4,取5 3、分组频数表 销售收入(万元) 频数 频率% 累计频数 累计频率% <= 25 1 2.5 1 2.5 26 - 30 5 12.5 6 15.0 31 - 35 6 15.0 12 30.0 36 - 40 14 35.0 26 65.0 41 - 45 10 25.0 36 90.0 46+ 4 10.0 40 100.0 总和 40 100.0 频数 246810121416<= 25 26 - 30 31 - 35 36 - 40 41 - 45 46+ 销售收入 频数 频数 3.9.下面是某考试管理中心对2002年参加成人自学考试的12000名学生的年龄分组数据: 年龄 18~19 21~21 22~24 25~29 30~34 35~39 40~44 45~59 % 1.9 34.7 34.1 17.2 6.4 2.7 1.8 1.2 (1) 对这个年龄分布作直方图; (2) 从直方图分析成人自学考试人员年龄分布的特点。 解:(1)制作直方图:将上表复制到Excel 表中,点击:图表向导→柱形图→选择子图表类型→完成。即得到如下的直方图:(见Excel 练习题2.6)

计算机体系结构课后习题

第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类操作,通过改进,各操作获得不同的性能提高。具体数据如下表所示: 操作类型 程序中的数量 (百万条指令) 改进前的执行时间 (周期) 改进后的执行时间 (周期)

工程热力学习题解答

1. 热量和热力学能有什么区别?有什么联系? 答:热量和热力学能是有明显区别的两个概念:热量指的是热力系通过界面与外界进行的热能交换量,是与热力过程有关的过程量。热力系经历不同的过程与外界交换的热量是不同的;而热力学能指的是热力系内部大量微观粒子本身所具有的能量的总合,是与热力过程无关而与热力系所处的热力状态有关的状态量。简言之,热量是热能的传输量,热力学能是能量?的储存量。二者的联系可由热力学第一定律表达式 d d q u p v δ=+ 看出;热量的传输除了可能引起做功或者消耗功外还会引起热力学能的变化。 2. 如果将能量方程写为 d d q u p v δ=+ 或 d d q h v p δ=- 那么它们的适用范围如何? 答:二式均适用于任意工质组成的闭口系所进行的无摩擦的内部平衡过程。因为 u h p v =-,()du d h pv dh pdv vdp =-=-- 对闭口系将 du 代入第一式得 q dh pdv vdp pdv δ=--+ 即 q dh vdp δ=-。 3. 能量方程 δq u p v =+d d (变大) 与焓的微分式 ()d d d h u pv =+(变大) 很相像,为什么热量 q 不是状态参数,而焓 h 是状态参数? 答:尽管能量方程 q du pdv δ=+ 与焓的微分式 ()d d d h u pv =+(变大)似乎相象,但两者的数学本 质不同,前者不是全微分的形式,而后者是全微分的形式。是否状态参数的数学检验就是,看该参数的循环积分是否为零。对焓的微分式来说,其循环积分:()dh du d pv =+??? 因为 0du =?,()0d pv =? 所以 0dh =?, 因此焓是状态参数。 而对于能量方程来说,其循环积分: q du pdv δ=+??? 虽然: 0du =? 但是: 0pdv ≠? 所以: 0q δ≠? 因此热量q 不是状态参数。 4. 用隔板将绝热刚性容器分成A 、B 两部分(图2-13),A 部分装有1 kg 气体,B 部分为高度真空。将隔板抽去后,气体热力学能是否会发生变化?能不能用 d d q u p v δ=+ 来分析这一过程?

相关文档
相关文档 最新文档