当前位置:文档之家› 2011级C语言程序设计基础教程课后习题答案

2011级C语言程序设计基础教程课后习题答案

2011级C语言程序设计基础教程课后习题答案
2011级C语言程序设计基础教程课后习题答案

C语言课后习题习题答案详解(11级教材)

第1章

1.1 填空题

1.1.1 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main 。

1.1.2 一个函数由__函数头__和__函数体__两部分组成。

1.1.3 在C语言中,输入操作是由库函数__scanf 完成的,输出操作是由库函数_printf_完

成的。

1.1.4 通过文字编辑建立的源程序文件的扩展名是_.c__;编译后生成目标程序文件,扩展

名是__.obj__;连接后生成可执行程序文件,扩展名是_.exe_;运行得到结果。

1.1.5 C语言程序的基本单位或者模块是__函数__。

1.1.6 C语言程序的语句结束符是_;___。

1.1.7 编写一个C程序,上机运行要经过的步骤:______________________________。

1.1.8 在一个C语言源程序中,注释部分两侧的分界符分别为_/*__和__*/__。

1.1.9 C语言中的标识符只能由三种字符组成,它们是字母、数字和下划线。

且第一个字符必须为字母或下划线。

1.1.10 C语言中的标识符可分为关键字、预定义标识符和用户标识符3类。

1.2 选择题

1.2.1 一个C程序的执行是从( A )。

A)本程序的main函数开始,到main函数结束

B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C)本程序的main函数开始,到本程序文件的最后一个函数结束

D)本程序文件的第一个函数开始,到本程序main函数结束

1.2.2 以下叙述不正确的是(C)。

A)一个C源程序可由一个或多个函数组成

B)一个C源程序必须包含一个main函数

C) 在C程序中,注释说明只能位于一条语句的后面

D) C程序的基本组成单位是函数

1.2.3 C语言规定:在一个源程序中,main函数的位置( C )。

A)必须在程序的开头B)必须在系统调用的库函数的后面

C)可以在程序的任意位置D)必须在程序的最后

1.2.4 C编译程序是(A)。

A)将C源程序编译成目标程序的程序

B)一组机器语言指令

C) 将C源程序编译成应用软件

D) C程序的机器语言版本

1.2.5 要把高级语言编写的源程序转换为目标程序,需要使用(D)。

A) 编辑程序B) 驱动程序C) 诊断程序D) 编译程序

1.2.6 以下叙述中正确的是(C)。

A) C语言比其他语言高级

B) C语言可以不用编译就能被计算机识别执行

C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D) C语言出现的最晚,具有其他语言的一切优点

1.2.7 以下叙述中正确的是(A)。

A) C程序中注释部分可以出现在程序中任意合适的地方

B) 花括号“{”和“}”只能作为函数体的定界符

C) 构成C程序的基本单位是函数,所有函数名都可以由用户命名

D) 分号是C语句之间的分隔符,不是语句的一部分

1.2.8 以下叙述中正确的是(B)。

A) C语言的源程序不必通过编译就可以直接运行

B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C) C源程序经编译形成的二进制代码可以直接运行

D) C语言中的函数不可以单独进行编译

1.2.9 用C语言编写的代码程序(B)。

A) 可立即执行B) 是一个源程序

C) 经过编译即可执行D) 经过编译解释才能执行

1.2.10 以下叙述中正确的是(C )。

A) 在C语言中,main函数必须位于程序的最前面

B) C语言的每行中只能写一条语句

C) C语言本身没有输入输出语句

D) 在对一个C程序进行编译的过程中,可以发现注释中的拼写错误

1.2.11 下列4组选项中,均不是C语言关键字的选项是(A )。

A)define B)getc C)include D)while

IF char scanf go

type printf case pow

1.2.12 下列4组选项中,均是C语言关键字的选项是(B)。

A)auto B)switch C)signed D)if

enum typedef union struct

include continue scanf type

1.2.13 C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符(C)。

A) 必须为字母B)必须为下划线

C)必须为字母或下划线D)可以是字母、数字和下划线中任一种字符

1.3 编程题

1.3.1 参照本章例题,编写一个C程序,要求输出如下字符。

***************************************************************************

Welcome to Expo 2010!

Shanghai 2010

#include

void main()

{

printf(“********************************************************************* ******\n”);

printf(“Welcome to Expo 2010!\n”);

printf(“Shanghai 2010\n”);

printf(“********************************************************************* ******\n”);

}

1.3.2 设计一程序,输入3个整数,计算并显示输出这3个整数之和。

#include

void main()

{

int a,b,c;

printf(“input a,b,c:\n”);

scanf(“%d%d%d”,%a,%b,%c);

printf(“the sum of a,b,c is %5d\n”,a+b+c);

}

第2章

2.1填空题

2.1.1 C程序中数据有常量和变量之分,其中,用一个标识符代表一个常量的,称

为符号常量。C语言规定在程序中对用到的所有数据都必须指定其数据类型,

对变量必须做到先定义,后使用。

2.1.2 C语言中,用关键字float 定义单精度实型变量,用关键字double 定义双精度实

型变量,用关键字char 定义字符型变量。

2.1.3 在C语言中,以16位PC机为例,一个char型数据在内存中所占的字节数为

1 ;一个int型数据在内存中所占的字节数为

2 ,则int型数据的取值范围为

-32768~32767。一个float型数据在内存中所占的字节数为 4 ;一个double

型数据在内存中所占的字节数为8 。单精度型实数的有效位是6-7

位,双精度型实数的有效位是15-16 位。

2.1.4 设C语言中的一个基本整型数据在内存中占2个字节,若欲将整数135791正确

无误地存放在变量a中,应采用的类型说明语句是long int a=15791; 。

2.1.5 C的字符常量是用单引号括起来的 1 个字符,而字符串常量是用双引号括起

来的字符序列。

2.1.6 C语言中,用“\”开头的字符序列称为转义符。转义符“\n”的功能是回车换行;

转义符“\r”的功能是回车。

2.1.7 若有定义:char c=‘\010’;则变量c中包含的字符个数为 1 。

2.1.8 负数在计算机中是以补码形式表示。

2.1.9 C语言中,&作为双目运算符是表示的是按位与,而作为单目运算符时表示

的是取地址。

2.1.10 在C语言的赋值表达式中,赋值号左边必须是变量。

2.1.11 自增运算符++、自减运算符--,只能用于变量,不能用于常量或表达式。++

和- -的结合方向是“自右左至左”。

2.1.12 若a是int型变量,则执行下面表达式后a的值为 2 。

a=25/3%3

2.1.13 写出下列数所对应的其它进制数(D对应十进制,B对应二进制,o对应八进制,

H对应十六进制)

32D= 100000 B= 40 O= 20 H

75D= 1001011 B= 113 O= 4B H

2.1.14 假设已指定i为整型变量,f为float变量,d为double型变量,e为long型变量,

有式子10+'a'+i*f-d/e,则结果为double 型。

2.1.15 若有定义:int x=3,y=2; float a=2.5,b=

3.5;则下面表达式的值为 1 。

(x+y)%2+(int)a/(int)b

2.1.16 5/3的值为 1 ,5.0/3的值为 1.666667 。

2.1.17 若有以下定义,int m=5,y=2;则执行表达式y+=y-=m*=y后的y值是-16 。

2.1.18 若a是int型变量,则表达式(a=4*5,a+2),a+6的值为26 。

2.1.19 若x和n均为int型变量,且x的初值为12,n的初值为5,则执行表达式x%=(n%=2)

后x的值为:0 。

2.1.20 若有定义语句:int e=1,f=4,g=2;float m=10.5,n=4.0,k;,则执行表达式

k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是13.7 。

2.2 选择题

2.2.1 逗号表达式"(a=3*5,a*4),a+15"的值是( C )。

A) 15 B) 60 C) 30 D) 不确定 2.2.2 若有以下定义和语句:

char c1='a', c2='f';

printf("%d,%c\n",c2-c1,c2-'a'+'B'); 则输出结果是:( D )

A) 2 ,M B) 5,! C) 2,E D) 5,G

2.2.3 sizeof(float)是( B )。

A )一个双精度型表达式

B )一个整型表达式

C )一种函数调用

D )一个不合法的表达式

2.2.4 若有以下定义,则能使值为3的表达式是( D )。

int k=7,x=12;

A )x%=(k%=5)

B )x%=(k-k%5)

C )x%=k-k%5

D )(x%=k)-(k%=5) 2.2.5 在C 语言中,要求运算数必须是整型的运算符是( A )。

A) % B) / C) < D) ! 2.2.6 下面4个选项中,均是合法整型常量的选项是( A )。

A) 160 B) -0xcdf C) -01 D)-0x48a -0xffff 01a 986,012 2e5 011 0xe 0668 0x 2.2.7 下面4个选项中,均是不合法浮点数的选项是( B )。

A) 160. B)123 C) -.18 D)-e3 0.12 2e4.2 123e4 .234 E3 .e5 0.0 1e3 2.2.8 下面正确的字符常量是( C )。

A)”C ” B)”\\” C)?W ? D)??

2.2.9 在C 语言中,int 、char 和short 三种类型数据在内存中所占用的字节数( D )。

A)由用户自己定义 B)均为2个字节

C)是任意的 D)由所用机器的机器字长决定 2.2.10 假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b )后x 的值为( B )。

A)7 B)8 C)6 D)2

2.2.11 假设所有变量均为整型,则表达式x=(i=4,j=16,k=32)后x 的值为( C )。

A)4 B)16 C)32 D)52

2.2.12 若有代数式x

x 103log ,则正确的C 语言表达式是( D )。

A)fabs(x*3+log(x)) B)fabs(pow(x,3)+log(x))

C)abs(pow(x,3.0)+log(x)) D)fabs(pow(x,3.0)+log(x))

2.2.13 设变量n 为float 类型,m 为int 类型,则以下能实现将n 中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( B )。

A)n=(n*100+0.5)/100.0 B)m=n*100+0.5,n=m/100.0 C)n=n*100+0.5/100.0 D) n=(n/100+0.5)*100.0 2.2.14 以下不正确的叙述是( D )。

A)在C 语言中,逗号运算符的优先级最低

B)在C 语言中,APH 和aph 是两个不同的变量

C)若a 和b 类型相同,在执行了赋值表达式a=b 后b 中的值将放入a 中,而b 中的值不变

D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

2.2.15 以下正确的叙述是( D )。

A)在C 语言中,每行中只能写一条语句

B)若a 是实型变量,C 程序中允许赋值a=10,因此实型变量中允许存放整型数 C)在C 程序中,无论是整数还是实数,都能被准确无误地表示

D)在C程序中,%是只能用于整数运算的运算符

2.3编程题

2.2.1 编写一程序,求出给定半径r的圆的面积和周长,并输出计算结果。其中,r的值由用户输入,用实型数据处理。

#include

#define PI 3.14159

void main()

{

float r,c,s;

printf("input the 半径");

scanf("%f",&r);

c=2*PI*r;

s=PI*r*r;

printf("周长为%5.2f,面积为%5.2f\n",c,s);

}

2.2.2 已知华氏温度和摄氏温度之间的转换关系是:C=5/9*(F-32)。编写一程序,将用户输入的华氏温度转换为摄氏温度,并输出结果。

#include

void main()

{

float c,f;

printf("input the 华氏温度");

scanf("%f",&f);

c=5.0/9*(f-32);

printf("华氏温度为%5.2f,摄氏温度为%5.2f\n",f,c);

}

习题三

3.1 填空题

3.1.1 程序的三种基本结构是顺序、选择、循环。

3.1.2 执行( a=3.0+5,a*4 ),a+=-6; 变量a 及表达式的值分别为 2.0,2.0

3.1.3 下列语句被执行后的执行结果是1\abc\def 。

int a=1;

printf (“%d\\%s\\%s”,a,”abc”,”def”);

3.1.4 getchar( ) 函数的作用是从键盘上接收一个字符。

3.1.5 运行以下程序后,用户输入123456abc,输出结果为123,45,6 。

void main()

{ int a,b;

char c;

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

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

}

3.1.6 下面程序的输出结果是1112 。

# include

void main( )

{ int i=10;

{ /* int i=20; */

i++;

printf (“%d”,i ++);

}

printf (“%d\n”,i );

}

3.1.7 下面程序运行后,从键盘输入30,则程序的输出结果是a=31,Ha=1f,Oa=37 。

void main ()

{ int a ;

scanf(”%d”, &a );

a++;

printf (“a=%d,Ha=%x,Oa=%o”,a,a,a);

}

3.1.8 下面程序的输出结果是a=-3

b=?D?

“END”。

void main ( )

{ int a,b=68;

a=-3;

printf(“\ta=%d\n\tb=\?%c\?\n\”end\”\n”,a,b);}

3.1.9 下面程序的输出结果是13.7000000 。

# include

# include

main()

{ int a=1,b=4,c=2;

float x=10.5,y=4.0,z;

z=(a+b)/c+sqrt((double)y)*1.2/c+x;

printf(“%f\n”,z);

}

3.1.10 下面程序运行后,若输入a=2,b=3结果是x1= 6.00

x2= 0.67 。

void main( )

{ float a ,b ,x1, x2 ;

scanf (“a=%f,b=%f“ ,&a ,&b ) ;

x1=a*b ;

x2=a/b ;

printf (“x1=%5.2f \nx2=%5.2f \n” ,x1,x2 );

}

3.2 选择题

3.2.1 指出下面正确的输入语句是( B )。

A) scanf (“a=b=%d”,&a,&b);B) scanf (“a=%d,b=%f”,&m,&f );

C) scanf (“%3c”,c); D) scanf (“%5.2f”, &f);

3.2.2 执行scanf (“%d%c%f”,&a,&b,&c) 语句,若输入1234a12f56 则变量a,b,c的值为

( C )。

A) a=1234 b=?a? c=12.56 B) a=1 b=?2? c=341256

C) a=1234 b=?a? c=12.0 D) a=1234 b=?a12? c=56.0

3.2.3 执行scanf (“a=%d,b=%d”,&a,&b) 语句, 若要使变量a和b的值分别为3和4, 则

正确的输入方法为( C )。

A) 3 ,4 B) a:3 b: 4 C) a=3,b=4 D) 3 4

3.2.4 设b=1234 , 执行printf(“%%d@%d”,b)语句,输出结果为: ( D )。

A) 1234 B) %1234 C) %%d@1234 D) %d@1234

3.2.5 若x是int型变量,y是float型变量,所用scanf语句为scanf(“x=%d,y=%f”,&x,&y);

正确的输入操作是( A )。

A) x=10,y=66.6<回车> B) 10 66.6<回车>

C) 10<回车>66.6<回车> D) x=10<回车>y=66.6<回车>

3.2.6 设a,b均是int型变量,则以下不正确的函数调用为( D )。

A) getchar(); B) putchar(…\108?);

C) scanf(“%d,%2d”,&a,&b); D) putchar(…\?);

3.2.7 下列程序的执行结果是( C )。

# include

void main( )

{ int a=5;

float x=3.14;

a*=x*(…E?-…A?);

printf (“%f\n”,(float)a);}

A) 62.800000 B) 62 C) 62.000000 D) 63.000000

3.2.8 若输入2.50 ,下列程序的执行结果是( A )。

void main( )

{ float r , area ;

scanf (“ %f ” , & r ) ;

printf (“ area=%f \n” , area=1/2*r*r ) ; }

A) 0 B) 3.125 C) 3.13 D) 程序有错

3.3 编程题

3.3.1 编写程序,从键盘上输入2个整数给变量a和b,交换a、b值然后输出。

//参考程序

#include

void main( )

{ int a,b,temp;

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

printf("\n交换前: a=%d,b=%d\n",a,b);

temp=a;a=b;b=temp;

printf("交换后: a=%d,b=%d\n",a,b) ;

}

3.3.2 试编写一个程序,任意输入一个小写字母,分别按八进制、十进制、十六进制、

字符格式输出。

//参考程序:

#include

void main()

{ char c;

printf("请输入1个小写字母:\n");

scanf("%c",&c);

printf("八进制: %o\n十进制: %d\n" ,c,c);

printf("十六进制: %x\n字符: %c\n" ,c,c);

}

3.3.3 输入一个华氏温度,要求输出摄氏温度,输出要有文字说明,取2位小数。公式

为:

()32

9

5

-=F

c

//参考程序:

# include

void main()

{ float c,f;

printf(“请输入一个华氏温度:\n”);

scanf(“%f”,&f);

c= 5.0/9*(f-32);

printf(“华氏温度F=%.2f\n”,f);

printf(“摄氏温度c=%.2f\n”,c);

}

3.3.4 设圆半径r=3,圆柱高h=4,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体

积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2

位数字。请编程序。

//参考程序:

# include

# define PI 3.1415926

void main()

{ float r,h,c,s1,s2,v1,v2;

print f(“请输入圆半径,圆柱高:”);

scanf(“%f,%f”,&r,&h);

c=2*PI*r; s1=PI*r*r; s2=4*PI*r*r;

v1=4/3*PI *r*r*r; v2=s1*h;

printf(“r=%.2f,h=%.2f\n”,r,h);

printf(“圆周长=%.2f,圆面积=%.2f\n”,s1,s2);

printf(“圆体积=%.2f,圆柱体积=%.2f\n”,v1,v2);

}

习题四

4.1 填空题

4.1.1 表示条件:10

4.1.2 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表

达式为 a 。

4.1.3 若已知a=10,b=20,则表达式!a

4.1.4 当a=3,b=2,c=1时,表达式f=a>b>c的值是0 。

4.1.5 设y为int型变量,请写出描述“y是奇数”的表达式y%2!=0 。

4.1.6 设x,y,z为int型变量,请写出描述“x或y中有一个小于z”的表达式

x=z||x>=z&&y

4.1.7 已知a=7.5,b=2,c=3.6,表达式a>b && c>a||ab的值是 1 。

4.1.8 假设a=5, b=2, c=4,以下表达式的值依次为:0,1,1,1 。

(1) a % b * c && c % b * a

(2) b % c * a && a % c * b

(3) a % b * c || c % b * a

(4) b % c * a || a % c * b

4.1.9 假设a=3, b=4, c=5,x=0,y=0,以下各表达式的值依次为0,1,1,0,1 。

(1) a + b > c && b == c

(2) a || b + c && b - c

(3) ! (a > b) && ! c || 1

(4) ! (x = a) && (y = b) && 0

(5) ! (a + b) + c – 1 && b + c/2

4.1.10 两次运行下面的程序,如果从键盘上分别输入6和4,输出的结果是7和5 。

void main()

{ int x;

scanf(“%d”,&x);

if(x++>5)

printf(“%d”,x);

else

print f(“%d\n”,x--); }

4.2 选择题:

4.2.1 设a为整型变量,不能正确表达数学关系: 10

A) 10

C) a>10&&a<15 D) !(a<=10)&&!(a>=15)

4.2.2 在以下一组运算符中,优先级最高的是( C )。

A) <= B) = C) % D) &&

4.2.3 设a,b,c都是int型变量,且a=3,b=4,c=5,则下面表达式中,值为0的表达式是

( D )。

A) ?a?&&?b? B) a<=b C) c||+c&&b-c D) !((a

4.2.4 在C语言的if语句中,用作判断的表达式为( D )。

A) 关系表达式B) 逻辑表达式C) 算术表达式D) 任意表达式

4.2.5 在以下运算符中,优先级最高的运算符是( B )。

A) <= B) /C) != D) &&

4.2.6 假设所有变量均为整型,表达式(a=2,b=5,a>b? a++:b++,a+b)的值是( B )。

A) 7 B) 8 C) 9 D) 2

4.2.7 在C语言中,能代表逻辑值"真"的是( D )。

A) true B) 大于0的数C) 非0整数D) 非0的数

4.2.8 在以下运算符中,优先级最高的运算符是( A )。

A) ! B) = C) + D) ||

4.2.9 逻辑运算符两侧运算对象的数据类型( D )。

A) 只能是0或1 B) 只能是0或非0正数

C) 只能是整型或字符型数据D) 可以是任何类型的数据

4.3 编程题

4.3.1 编写一个C程序,要求从键盘输入一个整数,判断该整数是否能够被17整除。

(解析:当该数与17的余数为零时,即可以被17整除。)

//参考程序

#include

void main()

{

int a;

printf(“请输入一个整数:”);

scanf(“%d”,&a);

if(a%17==0)

printf(“%d能被17整除\n”,a);

else

printf(“%d不能被17整除\n”,a);

}

4.3.2 编写一个C程序,计算并显示由下列说明确定的一周薪水。如果工时小于40,

则薪水按每小时8元计;否则,按320元加上超出40小时部分的每小时12元。

(解析:一周工时数为键盘输入,显示其相应薪水为输出。)

//参考程序

#include

void main()

{

float a,wage;

printf(“请输入工时数:”);

scanf(“%f”,&a);

if(a<0) printf(“error!”);

else

{ if(a<40) wage=a*8;

else wage=320+(a-40)*12;

printf(“周薪水=%.1f元\n”,wage);

}

}

4.3.3 编写一个C程序,要求从键盘输入三个整数a,b,c,输出其中最大的数。(解析:

求极值问题。设立一个变量max总是保留两数比较时较大的那个值。具体方法如

下:先将a的值赋给max,如果max

c进行比较,如果max

最后输出max。)

//参考程序

#include

void main()

{

int a,b,c,max;

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

scanf(“%d %d %d”,&a,&b,&c);

if(a>b) max=a;

else max=b; /* max=a>b?a:b; */

if(c>max) max=c; /* max=max>c?max:c; */

printf(“最大值max=%d\n”,max);

}

4.3.4 编写一个C程序,要求从键盘输入三个整数x,y,z,请把这三个数由小到大输出。

(解析:排序问题。想办法把三个数进行调换,使得最小的数放到x变量里,最

大的数放在z变量里。具体方法如下:先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小;然后将y与z比较,并将较小的值保存在y里而较大的值放在z 里。最后,依次输出x、y、z。)

//参考程序

#include

void main()

{

int x,y,z,a;

printf(“input 3 integer :\n”);

scanf(“%d,%d,%d”,&x,&y,&z);

if(x>y) /*使x<=y*/

{a=x; x=y; y=a;}

if(x>z) /*使x<=z*/

{a=x; x=z; z=a;}

if(y>z) /*使y<=z*/

{a=z; z=y; y=a;}

printf(“\nx=%d, y=%d, z=%d\n”,x,y,z);

}

4.3.5 编写一个C程序,要求从键盘输入一个不多于5位的正整数x,要求输出:一、

它是几位数;二、逆序打印出各位数字,例如:原数为789,应输出987。(解析:该问题的核心是分解出每一位上的数字:

a=x/10000; /*分解出万位上的数字*/

b=x%10000/1000; /*分解出千位上的数字*/

c=x%1000/100; /*分解出百位上的数字*/

d=x%100/10; /*分解出十位上的数字*/

e=x%10; /*分解出个位上的数字*/

通过检测各数字是否为零,便可知道x是几位数,例如:if (a) 则x是5位数。)//参考程序

#include

void main()

{ long x; int a,b,c,d,e;

printf("\ninput x:"); scanf("%ld",&x);

e=x%10; d=x/10%10; c=x/100%10; b=x/1000%10; a=x/10000;

if(x>=1E+5||x<=0)

printf("Out of range!\n");

else

{ if(a>0) printf("5位数,反序数字是:%d%d%d%d%d\n",e,d,c,b,a);

else if(b>0) printf("4位数, 反序数字是:%d%d%d%d\n",e,d,c,b);

else if(c>0) printf("3位数,反序数字是:%d%d%d\n",e,d,c);

else if(d>0) printf("2位数,反序数字是:%d%d\n",e,d);

else printf("1位数,数字是:%d\n",e);

}

}

4.3.6 编写一个C程序,要求从键盘输入两个数,并依据提示输入的数字,选择对这两

个数的运算,并输出相应运算结果。要求提示为:

1、作加法;

2、做乘法;

3、做除法:

(解析:可使用switch语句,以提示输入的数字为依据,作分支结构设计,使得提示输入1时,将两数之和输出;提示输入2时,将两数之积输出;提示输入3时,将

两数之商输出-- 注意,除数不可为零的检测与提示。)

//参考程序

#include

void main()

{ float op1,op2; int sign;

printf("请输入两个操作数: a b\n");

scanf("%f%f",&op1,&op2);

printf("请选择进行的运算(1,2,3,4): \n");

printf("1: +\n");

printf("2: -\n");

printf("3: *\n");

printf("4: /\n");

printf("您选择: ");

scanf("%d",&sign);

switch(sign)

{ case 1: printf("\n%f+%f=%f\n",op1,op2,op1+op2); break;

case 2: printf("\n%f-%f=%f\n",op1,op2,op1-op2); break;

case 3: printf("\n%f*%f=%f\n",op1,op2,op1*op2); break;

case 4: if(op2) {printf("\n%f/%f=%f\n",op1,op2,op1/op2); break; }

else { printf("\n除数不能为0\n"); break;}

default: printf("\n您选择的运算不对\n");

}

}

习题五

5.1填空题

5.1.1 C语言三个循环语句分别是while 语句,do while 语句和for 语句。

5.1.2 至少执行一次循环体的循环语句是do while 。

5.1.3 循环功能最强的循环语句是for 。

5.1.4 下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填

填空。

int n=0,c;

c=getchar();

while( c!=?\n?)

{ if( c>=?0?&&c<=?9?) n++;

c=getchar(); }

5.1.5 在执行以下程序时,如果键盘上输入:ABCdef<回车>,则输出为abcDEF 。

#include

{ char ch;

while((ch=getchar())!=?\n?)

{ if(ch>=?A?&&ch<=?Z?) ch=ch+32;

else if(ch>=?a?&&ch<=?z?) ch=ch-32;

printf(“\n”); }

5.1.6 下面程序的功能是用辗转相除法求两个正整数的最大公约数,请填空。

#include

void main()

{ int r,m,n;

scanf(“%d,%d”,&m,&n);

if(m

r=m%n;

while(r) { m=n; n=r; r= m%n ;}

printf(“%d\n”,n);

}

5.1.7 当运行以下程序时,从键盘输入“right? <回车>”,则下面程序的运行结果是sjhiu 。

#include

void main()

{ char c;

while((c=getchar())!=???) putchar(++c);

}

5.1.8 下面程序的运行结果是s=254 。

#include

void main()

{ int a,s,n,count;

a=2; s=0; n=1; count=1;

while(count<=7) { n=n*a; s=s+n; ++count; }

printf(“s=%d”,s); }

5.1.9 执行下面程序段后,k的值是36 。

k=1;n=263;

do{ k*=n%10; n/=10; } while(n);

5.1.10 下面程序的运行结果是-10 。

#include

void main()

{ int i;

for(i=100; i>=0; i-=10);

printf(“%d\n”, i); }

5.1.11 下面程序使循环结束的条件式i==0 。

#include

void main()

{ int i;

for(i=250;i;i-=5)

printf(“%d\n”,i);

}

5.1.12 以下程序输出结果为x=-1,y=21 。

#include

void main()

{ int x,y;

for(x=30,y=0;x>=10,y<20;x--,y++)

x/=2, y+=2;

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

5.1.13 下面程序的功能是计算1-3+5-7+...-99+100的值,请填空。

#include

void main()

{ int i, t=1, s=0;

for( i=1; i<=101; i+=2)

{ t=t*i ; s=s+t; t=-t/i ; }

printf(“%d\n”,s);

}

5.1.14 下面程序的运行结果是****。

#include

void main()

{ int i, j=4;

for(i=j; i<2*j; i++)

switch(i/j)

{ case 0:

case 1: printf(”*”); break;

case 2: printf(“#”); }

}

5.1.15 下面程序的输出结果是i=6, k=4 。

#include

void main()

{ int i, j,k=19;

while(i=k-1)

{ k-=3;

if(k%5==0) { i++; continue; }

else if(k<5) break;

i++;

}

printf(“i=%d, k=%d\n”,i k);

}

5.2 选择题

5.2.1 设有程序段:int k=10; while(k=0) k=k-1;,则下面描述正确的是(C)。

A) while循环执行10次B) 循环时无限循环

C) 循环体语句一次也不执行D) 循环体语句执行一次

5.2.2 有以下程序:

#include

void main() { while(putchar(getchar())!=???); }

当输入“china?”时,程序的执行结果是( D )。

A) china B) dijob C) dijiob? D) china?

5.2.3 语句while(!E);中的表达式!E等价于(A )。

A) E==0 B) E!=1 C) E!=0 D) E==1

5.2.4 下面程序段的运行结果是(A )。

a=1;b=2;c=2;

while(a

{ t=a; a=b; b=t;c- -; }

printf(“%d,%d,%d”,a,b,c);

A) 1,2,0 B) 2,1,0 C) 1,2,1 D) 2,1,1

5.2.5 下面程序段的输出结果是(C )。

int n=0;

while(n++<=2); printf(“%d“,n);

A) 2 B) 3 C) 4 D) 有语法错误

5.2.6 下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一

对相等数时结束循环,请选择填空。

#include

void main()

{ int a,b,t;

scanf(“%d,%d”,&a,&b);

while( B )

{ if(a>b)

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

printf(%d,%d\n“,a,b);

scanf(“%d,%d”,&a,&b);

}

}

A) !a=b B) a!=b C) a==b D) a=b

5.2.7 下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小

写字母的个数n,并输出m、n中的较大者,请选择填空。

#include

void main()

{ int m=0,n=0;

char c;

scanf(“%d,%d”,&a,&b);

while( ( [1] C )!=?\n ?)

{ if(c>=?A?&&c<=?Z?) m++;

if(c>=?a?&&c<=?z?) n++; }

printf(“%d”,m

}

[1] A) c==getchar( ) B) getchar( )

C) c=getchar( ) D) scanf(“%c”,c)

[2] A) n:m B) m:n

C) m:m D) n:n

5.2.8 下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,

请选择填空。

#include

void main()

{ int a,max=0;

scanf(“%d”,&a);

while( B )

{ if(max

scanf(“%d”, &a);

}

printf(“%d”,max);

}

A) a==0 B) a C) !a==1 D) !a

5.2.9 下面程序段的输出结果是(C)。

#include

void main()

{ int num=0;

while( num<=2 )

{ num++;

printf(“%d\n”,num);

}

}

A) 1 B) 1 C) 1 D) 1

2 2 2

3 3

4

5.2.10 若运行下程序,从键盘输入2473<回车>,则下面程序的结果是( A )。

#include

void main()

{ int c;

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

switch(c-?2?)

{ case 0:

case 1: putchar( c+4 );

case 2: putchar( c+4 ); break;

case 3: putchar( c+3 );

default: putchar( c+2 ); break;

}

printf(“\n”);

}

A) 668977 B) 668988 C) 66778777 D) 6688766

5.2.11 以下描述正确的是(C )。

A) while、do…while、for循环中的循环体语句都至少被执行一次。

B) do…while循环中,while(表达式)后面的分号可以省略。

C) while循环中,一般要有能使while后面表达式的值变为“假”的操作。

D) do…while循环中,根据情况可以省略while。

5.2.12 C语言的do…while循环中,循环由do开始,用while结束;而且在while

表达式后面的(B)不能丢,它表示do…while循环的结束。

A) \n B) “;”C) “%”D) “。”

5.2.13 下面程序段的输出结果是(D )。

int x=3;

do{ printf(“%3d”, x-=2); } while(!(--x));

A) 1 2 B) 3 2 C) 2 3 D) 1 -2

5.2.14 下面程序的功能是计算正整数2345的各位数字的平方和,请选择填空。

#include

void main()

{ int n=2345,sum=0;

do

{ sum=sum+( [1] B );

n=( [2] C )

}while(n);

printf(“sum=%d”,sum);

}

[1] A) n%10 B) (n%10)*(n%10)

C) n/10 D) (n/10)*(n/10)

[2] A) n/1000 B) n/100

C) n/10 D) n%10

5.2.15 执行程序段:x=-1;do{x=x*x;} while(!x);的结果是(C )。

A) 死循环B) 循环执行2次C) 循环执行一次D) 有语法错误

5.2.16 以下能正确计算1*2*3*4…*10的程序段是(C )。

A) do(i=1;s=1;s=s*i;i++) while(i<=10);

B) do(i=1;s=0;s=s*i;i++) while(i<=10);

C) i=1;s=1; do(s=s*i;i++) while(i<=10);

D) i=1;s=0; do(s=s*i;i++) while(i<=10);

5.2.17 下面程序的功能是从键盘输入若干学号,然后输出学号中百位数字式3的

学号(输入0时结束循环),请选择填空。

#include

void main()

{ long int num;

scanf(“%ld”,&num);

do

{ if( [1] B) printf(“%ld”, num);

scanf(“%ld”,&num);

}whle( [2] C ))

}

[1] A) num%100/10==3 B) num/100%10==3

C) num%10/10==3 D) num/10%10==3

[2] A) !num B) num<0==0 C) !num==0 D) !num!=0

5.2.18 对于for(表达式;;表达式3)可理解为(B )。

A) for(表达式;0;表达式3)

B) for(表达式;1;表达式3)

C) for(表达式;表达式1;表达式3)

D) for(表达式;表达式3;表达式3)

5.2.19 以下不正确的描述是(B )。

A) break语句不能用于循环语句和switch语句外的任何其他语句

B) 在switch语句中使用break语句或continue语句的作用相同

C) 在循环语句中使用continue语句是为了结束本次循环,而不是终止整

个循环的执行。

D) 在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环

5.2.20 若i为整型变量,循环语句for(i=2,i==0;) printf(“%d”,i--);的执行次数为(B)。

A) 无限次B) 0次C) 1次D) 2次

5.2.21 以下叙述正确的是(C )。

A) for循环中设置if(条件)break,当条件成立时中止程序执行。

B) for循环中设置if (条件)continue,当条件成立时中止本层循环。

C) for循环中设置if (条件)break,当条件成立时中止本层循环。

D) for循环中设置if (条件) continue,当条件成立时暂停程序执行。

5.2.22 下面关于for循环的正确描述是(D )。

A) for循环只能用于循环次数已经确定的情况。

B) for循环是先执行循环体语句,后判断表达式。

C) 在for循环中,不能用break语句跳出循环体。

D) for循环的循环体语句中,可以包含多条语句。

5.2.23 循环语句for(i=0,x=0; !x&&i<=5; i++);的执行次数为(B)。

A) 5次B) 6次C) 1次D) 无限

5.2.24 以下程序段的输出结果是(D )。

int x,i;

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

{ x=I; if(++x%2==0) if(++x%3==0) if(++x%7==0) printf(“%d”,x); }

A) 39 81 B) 42 84 C) 26 68 D) 28 70

5.2.25 以下描述正确的是( C )。

A) goto语句只能用于退出多层循环

B) switch语句不能出现continue语句

C) 只能用continue语句来终止本次循环

D) 在循环中break语句不能独立出现

5.2.26 以下不是无限循环的语句是(A )

A) for(y=0,x=1;x>++y; x=i++) i=x;

B) for(; ; x++=i);

C) while(1) { x++; }

D) for(i=10; ; i- -) sum+=i;

5.2.27 下面程序段的输出结果是( D )。

int i,sum;

for(i=1;i<=10;i++) sum+=sum

printf(“%d\n”, i);

A) 10 B) 9 C) 15 D) 11

5.2.28 下面程序段的运行结果是(D)。

for(x=3; x<6; x++) printf((x%2)?(“**%d”):(“##%d\n”),x);

A) **3 B)##3 C) ##3 D) **3##4

##4 **4 **4##5 **5

**5 ##5

5.2.29 执行语句for(i=1; i++<4; );后变量i的值是(C )。

A) 3 B) 4 C) 5 D) 不定

5.2.30 下面程序段运行结果是(C)。

int i,j,k;

for(i=2;i<6;i++,i++)

{ k=1;

for(j=i; j<6; j++) k+=j; }

printf(“%d\n”,k);

A) 4 B) 5 C) 10 D) 7

5.2.31 下面程序段(D )。

for( t=1; t<=100; t++)

{ scanf(“%d”, &x);

If(x<0) continue;

printf(”%3d”,t);

}

A) 当x<0时整个循环结束B) x>=0时什么也不执行

C) printf函数永远也不执行D) 最多允许输出100个非负数

5.2.32 下面程序段运行结果是(A)。

int i,j,a=0;

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

{ for(j=0; j<4; j++) {if(j%2) break; a++;} a++; }

printf(“%d\n”,a);

A) 4 B) 5 C) 6 D) 7

5.2.33 下面程序的运行结果是(B)。

#include

void main()

{ int i,j,x=0;

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

{ x++;

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

{ if(j%2) continue; x++; }

x++; }

printf(“x=%d\n”,x); }

A) x=4 B) x=8 C) x=6 D) x=12

5.2.34 下面程序段运行结果是(A)。

#include

void main()

{ int i;

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

{ if(i%2) printf(”*”);

else continue;

printf(“#”);

}

printf(“$\n”);

}

A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$

5.2.35 有一堆零件(100~200之间),如果分成4个零件一组的若干组,则多2

个零件;若分成7个零件一组,则多3个零件;若分9个零件一组,则多

5个零件。下面程序是求这堆零件的总数,请选择填空。

#include

void main( )

{ int i;

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

if((i-2)%4==0)

if(!(i-3)%7)

if( D )

printf(”%d”, i);

}

A) i%9=5 B) i%9!=5 C) (i-5)%9!=0 D) i%9==5

5.3编程题

5.3.1输入一行字符,分别统计出其中字母、数字和其它字符的个数。

#include

void main()

{ char ch;

int i,j,k;

i=j=k=0;

while( (ch=getchar() )!=‘\0’)

{ if(ch>’a’&&ch<‘z’||ch>’A’&&ch<‘Z’ )

i++; //统计字母

else if(ch>’0’&&ch<‘9’)

j++; //统计数字

else k++; //统计其它 }

printf(“字母个数:%d ,数字个数:%d ,其他字符:%d ”,i, j, k);

5.3.2 求100~200之间不能被3整除也不能被7整除的数。 #include void mian() { int i;

for (i=100;i<=200;i++) {

if (i%3==0&&i%7==0) printf(“%5d ”,i); } } 5.3.3 求 100

199********-++-+-

。 #include

main() {

int i; float s=0,k=1; for (i=1;i<=100;i++) { s=s+ k / i ; k = -k ; }

printf("Sum=%f\n",s); } 5.3.4 求

)

1(1321211+?++?+?n n ,直到某一项小于0.001时为止。

void main()

{

int i ;

float t=0.5,s=0,i=1; while (t>=0.001) { s=s+t; i++;

t=1/(i*(i+1)); }

printf("Sum=%f\n",s); }

5.3.5 用迭代法求

a

X =。迭代公式为:

??

?? ?

?+=

+n n n X a X X 211,要求迭代精度满足

00001.0||1<-+n n X X 。提示:a 由键盘输入,x 1=a/2.

#include

Void main( ) {

float x1,x2,a,k;

scanf("%f",&a);

x1=a/2; x2=(x1+a/x1)/2;

while(fabs(x1-x2)>=0.00001)

{ x1=x2;

x2=(x1+a/x1)/2; }

printf("%f : %f",a,x2);

}

5.3.6假设x,y是整数,编写程序求x y的最后3位数,要求x,y从键盘输入。

#include

void main()

{ int x. y, i, b, s, g, san;

long m=1;

scanf(“%d,%d”,&x, &y);

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

m=m*x

san=m%1000;//求出最后3位数

b=san/100; //求出最后3位数的百位

s=san%100/10; //求出最后3位数的十位

g=san%10; //求出最后3位数的个位

printf(“%d,%d,%d”,b,s,g);

}

5.3.7从键盘上输入10个整数,求其中的最大值和最小值。

#include

void main()

{ int x,i,max,min;

scanf(“%d”,&x);

min=max=x;

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

{

scanf(“%d”,&x);

if(x

if(x>max) max=x;

}

printf(“%d,%d”,max,min);

}

5.3.8(1)判断一个数是否为素数。(2)输出3-100之间的所有素数。

(1)判断m素数

#include

void main()

{int i,k,m;

scanf(“%d”,&m);

k=sqrt(m);

汇编语言程序设计练习题

汇编语言程序设计练习题 一、字符与串处理类 1.逆序输出字符串“BASED ADDRESSING”。 2.试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来。 3.编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。 4.从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。 5.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。)放在STRING中,试编制一个程序测试字符串中是否存在数字。如有,则把CL的第5位置1,否则将该位置置0。 6.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。),将其中的小写英文字母变换为大写英文字母,其他字符保持不变。然后将变换后的字符串显示出来。 7.试编制一个程序:从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不是,则退出程序;如是,则开始接收键入的字符并顺序存放在首地址为buffer的缓冲区中(空格符不存入),直到接收到第二个空格符时退出程序。 8.试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等则显示“MATCH”, 若不相同则显示“NO MATCH”。 9.试编写一段程序,要求输入两个字符串,如两个字符串相等则显示“MATCH”, 否则显示“NO MATCH”。 10.试编写一段程序,要求在长度为100H字节的数组中,找出大于61H的无符号数的个数并存入字节单元UP中,找出小于2FH的无符号数的个数并存入字节单元DOWN中。 11.在内存区域0B800:0000-0B800:0FFFF(都是16进制数)内查找首地址为SOURCE的串(SOURCE的首字节为串长度),如果找到,则把AL的第0位置0,否则将该位置置1。 12.已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一个程序,把既在A中又在B中出现的整数存放于数组C中。 13.在附加段中,有一个首地址为LIST和未经排序的字数组。在数组的第一个字中,存放着该数组的长度,数组的首地址已存放在DI寄存器中,AX寄存器中存放着一个数。要求编制一个程序:在数组中查找该数,如果找到此数,则把它从数组中删除。 二、数字输入输出类 1. 试编制一个程序,把BX寄存器内的二进制数以十六进制数的形式在屏幕上显示出来。 2. 试编制一个程序,把BX寄存器内的二进制数以八进制数的形式在屏幕上显示出来。 3. 试编制一个程序,把BX寄存器内的二进制数以十进制数的形式在屏幕上显示出来。 4.从键盘上输入2个一位数,求出它们的和(假设和不超过1位)。 5.试编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。 6.试编写一段程序,从键盘接收一个0-65535间的十进制无符号数,并在终端上显示与它等值的二进制数。 7.试编写一段程序,从键盘接收一个-32768-32767间的十进制有符号数,并在终端上显示与它等值的二进制数。 8.编写一个程序,从键盘输入一个0~65535之间的10进制无符号数,然后以16进制

邹申版英语写作教程1课后答案-UNIT 2-keys

P21 Pronouns 1)She me 2)Me 3)Him 4)She 5)Who 6)Whoever 7)Who/whom 8)Whom P25 2 1)play a minor role 2) That’s Greek to me 3) belated action 4)Where there is smoke there is fire 5) be a utility man 6)walk into the trap 7) one’s face glowing with health 3 1)We must practice economy. We must reduce unnecessary expenditures. 2)It is essential to control environmental pollution. 3)We must arrive at the station on time. 4)Financial expenditures should be arranged in order of priority. 5)We should speed up construction of urban housing, so as to improve the housing conditions. 6)Private capital has to meet two conditions. First, the profits must be legal. Second, they must be excessive. 7)During the period of the Eleventh Five-Year Plan we must never neglect grain production. Instead, we must steadily increase it. P26 5 1)me 2)who 3)I 4)me/myself 5)me 6)each other’s 7)who 8)us 9)whom 10)Some 11)one’s 12)his 13)his 14)his his

汇编语言程序设计教学大纲

《汇编语言程序设计》课程教学大纲 二、课程简介 汇编语言是计算机能够提供给用户使用的最快最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言,因而,对程序的空间和时间要求很高的场合及需要直接控制硬件的应用场合,汇编语言的应用是必不可少三、课程目标 汇编语言课程是计算机专业的一门专业选修课。通过本课程的学习,应使学 生系统地了解计算机组成原理与内部的运行机理,掌握汇编语言程序设计及相关 知识,为学习本专业后继课程和进行与硬件有关的技术工作打下良好基础。通过 上机实验,使学生受到软硬件实验的初步训练,并培养学生分析问题和解决问题 的能力。 四、教学内容及要求 第一章基础知识 1.教学内容 (1) 为什么要用汇编语言编写程序 (2) 进位计数制与不同基数的数之间的转换 (3) 二进制数和十六进制数运算 (4) 计算机中数和字符的表示 (5) 几种基本的逻辑运算 2.基本要求 了解机器指令、代码指令、机器语言、汇编指令、汇编语言、汇编语言源程 序、汇编程序、汇编等概念;掌握进位计数制与不同基数的数之间的转换及

运算;计算机中数和字符的表示;“与”、“或”、“非”、“异或”等几种基本的逻辑运算; 第二章80X86计算机组织 1.教学内容 计算机系统概述、存储器、中央处理机和外部设备。 2.基本要求 理解计算机的硬件和软件系统及其关系。掌握计算机的基本结构及总线;存储器的内容、地址及存储器的分段;中央处理机的组成、80X86系列CPU工作寄存器构成和功能,特别是段寄存器和标志寄存器;外设接口、端口和8086/8088的端口地址范围和访问方法。 第三章80X86的指令系统 1.教学内容(重点内容) IBM PC机的寻址方式、IBM PC机的指令系统。 2.基本要求 熟练掌握IBM PC机寻址方式及物理地址的计算;数据传送、算术、逻辑、串处理、控制转移和处理机控制指令六组中的所有指令的格式、操作、及影响的标志位。了解机器语言的指令组成; 第四章汇编语言程序格式 1.教学内容 汇编程序功能、伪操作、汇编语言程序格式、汇编语言程序的上机过程。 2.基本要求 掌握DEBUG程序和命令及能用DEBUG 程序调试和运行简单小程序;汇编语言上机步骤、汇编程序的功能;数据定义及存储器分配、表达式赋值“EQU”和“=”、段定义、程序开始和结束、对准、基数控制等六类伪操作;汇编语言程序格式中的名字、操作、操作数和注释等项。 第五章循环与分支程序设计 1.教学内容 程序设计的一般步骤和基本结构、循环程序设计和分支程序设计 2.基本要求 掌握汇编语言程序的编制步骤和结构化程序设计的三种基本结构;循环的设计方法和多层循环的设计;分支程序的设计方法,并能编制相应的程序。第六章子程序结构 1.教学内容 子程序的设计方法、嵌套与递归子程序、子程序举例和DOS系统功能调用

汇编语言程序设计实验教程

汇编语言程序设计实验教程

目录 第一章上机过程 (4) 1.1编辑源程序 (4) 1.2 汇编源程序 (5) 1.3连接目标程序 (6) 1.4运行程序 (7) 第二章DEBUG命令祥解 (8) 2.1 DEBUG程序使用 (8) 2.2 DEBUG的常用命令 (8) 第三章汇编语言程序设计实验 (13) 3.1实验一顺序与分支程序设计 (13) 3.2 实验二循环与子程序程序设计 (15) 3.3 实验三算术运算与代码转换程序设计 (16) 3.4 实验四字符串的匹配与替换程序设计 (18) 3.5 实验五输入输出程序设计 (19) 第四章部分实验参考答案 (21)

第一章上机过程 1.1编辑源程序 汇编语言源程序:用汇编语句编写的解决应用问题的程序。 汇编程序:将汇编语言源程序翻译成机器语言程序的系统。 汇编:将汇编语言程序翻译成机器语言程序的过程。 在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立ASCII码文本文件的软件即可。 (1)编辑软件 编辑软件:EDIT、QE、WORD、NOTEPAD等。 当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成的文件扩展名一定是.ASM。 (2)汇编程序 有汇编ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。TASM适用于8086/8088~Pentium系列指令系统所编写的汇编语言程序,是比较先进的汇编工具。 (3)连接程序 用连接程序LINK.EXE或TLINK.EXE,将MASM.EXE产生的目标代码程序(.OBJ)文件连接成可执行程序.EXE,TLINK比LINK更先进。 (4)辅助工具程序(.EXE) 进行汇编语言程序调试和文件格式转换的程序有: https://www.doczj.com/doc/154637619.html, 动态调试程序 EXE2BIN.EXE文件格式转换程序

汇编语言程序设计练习题及答案

一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。) 1.为在一连续的存储单元中,依次存放数据41H,42H,43H,44H,45H,46H,可选用的数据定义语句是(D) A.DB 41,42,43,44,45,46 B.DW 4142H,4344H,4546H C.DW ‘AB’,‘CD’,‘EF’D.DW ‘BA’,‘DC’,‘FE’ 2.DA2 DB‘AB’,‘CD’ ┇ MOV AX,WORD PTR DA2+1 上述语句执行后AX中的值是(D) A.‘AD’B.‘BC’ C.‘DA’D.‘CB’ 3.下列数据定义语句中可实现留空20H个字节存储单元的是(D) A.DB 20 DUP(?) B.DW 20H DUP(?) C.DB 10H DUP(4 DUP(?)) D.DD 08H DUP(?) 4.如某存储器分段时,表示偏移地址是17位二进制代码,那么一个段最多的存储单元数是(D) A.32K字节B.32K字 C.64K字节D.64K字 5.下列寄存器中用来指示堆栈中任意数据区的偏移地址的是(B)A.BX B.BP C.SI D.DI 6.下列指令中有语法错误的是(C) A.PUSH AX B.PUSH [20H+SI+BX] C.POP CS D.PUSH CS 7.执行PUSH BP指令时,目的操作数的物理地址表达式是(D) A.16*SS+BP B.16*DS+BP C.16*CS+IP D.16*SS+SP 8.把BL中的数据输出到端口8CH中正确指令是(C) A.OUT 8CH,BL B.IN 8CH,BL C.MOV AL,BL D.MOV AL,BL OUT 8CH,AL IN 8CH,AL 9.结果为零的条件转移指令,其测试条件是(A) A.ZF=1 B.ZF=0 C.SF=l D.SF=0 10.下面程序段完成测试DA-BYTE字节单元中数是否为负数,若是则将全l送DH中,否则全0送DH中,那么程序段中方框里应填的语句是 MOV CH,0 MOV CH,0FFH ZERO:MOV DH,CH(C) A.JNZ ZERO B.JS ZERO

邹申版英语写作教程1课后答案-unit6-keys

UNIT 6 P75 1)The enraged father threatened to throw the screaming boy out of the room. 2)You can use the frequently used method. 3)Tommy, filled with despair, left the office. 4)Smiling through the window, the girl is enjoying one of the happiest days in her life. 5)The boy was sitting at his desk, his feet gently tapping the floor. 6)The computers damaged by an unknown virus, the employees are happy to take the day off. P76 Task1 Sentences 1) and 2) participles as attributes Sentences 3) and 4) participles to indicate simultaneous actions Sentences 5) and 6) as absolute constructions P78 1. smiling 2. Reading 3. Swimming 4. competing broken informing 8. Having exhausted relieved P80 Task 2 1.The computer bought last week brings happiness to everyone in my family. 2.Being back in my hometown, I didn’t know that my professor had \assigned another 5000-word paper. 3.Standing in front of the picture painted by a post-impressionist, many people pretended that they could understand it. 4.Looking out of the window of the train, the boy was amused by the power lines dancing up and down in the air. P81 Classroom Activities Task 1 1.Kate fell asleep when reading Bo b’s letter. 2.She started to chat with her friend after finish/ having finished her work. 3.Although having seen it a thousand and one times, the old man still watches the video from time to time. 4.Though closely watched by the guards, the prisoner plans to escape. 5.It is believed that if read many times, an article will naturally be understood. 6.if buying more, you can pay less. P82 B a. 2) P83 Classroom activities Task 1 1)Thinking about her kid at home, Judy… 2)Racing along the street, the car sent… 3)Born in educated in …, she is now working …

汇编语言程序设计课后习题解答宋人杰2版

第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据 的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为 多少?若段内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著) 《计算机操作系统原理》 《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。 《数据结构和算法》——这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时) 《软件工程》——这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》(黄色,清华) 《Windows 程序设计》——《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本 建议:你还可以在CSDN上阅读到许多书评。这些书评能够帮助你决定读什么样的书 关于编程的网站 计算机编程 郭新明-FTP服务器体验式学习课程(张孝祥监制) https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=3997 https://www.doczj.com/doc/154637619.html,快速开发新闻系统在线播放 https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=4708 数字电路基础[宁波电大] https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=774 计算机组成与汇编语言程序设计(赵丽梅)宁波电大 https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=1242 操作系统(陈访荣)宁波电大(在线播放) https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=4708 计算机网络(马敏飞)宁波电大 https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=1243 https://www.doczj.com/doc/154637619.html, 2.0快速入门(12)-https://www.doczj.com/doc/154637619.html, 2.0网站快速导航 https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=2501 Internet和Intranet应用(薛昭旺)宁波电大 https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=1245 2004年电脑硬件安装调试维修视频教学讲授 https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=4825 https://www.doczj.com/doc/154637619.html, 高级排错技巧 https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=768 SQL Server 2000管理专家系列课程 https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=4832 开心三人行系列(2):使用Atlas 构建AJAX应用 https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=2564 Visual Basic 2005开发技巧系列课程(4): 在Visual Basic 2005中使用.NET Framework 2.0新增功能 https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=2526 SQL Server 2005 系列课程-使用ADO https://www.doczj.com/doc/154637619.html,开发SQL Server 2005 OLAP应用 https://www.doczj.com/doc/154637619.html,/so/so138.aspx?id=2535

新世纪高等院校英语专业写作教程第一册unit1-4课后答案

Unit 1 . The little boy was chicken-hearted. 2)That statesman is a respectable figure in the political arena. 3)We sat down by the oak tree ,enjoying the breeze coming from the lake. 4)We need to drink the milk before it sours. 5)The child had difficulty finding his way to school. 6)The young woman received a lot of flowers and gifts. 7)My father drew back the curtain a little lest I see him. 8)Our university can accommodate 4,000 students. 9)Social customs vary greatly from country to country. experienced 2)elapsed 3)attempting 4)with 5)take up 6)made 7)endeavor 8)true The state attorney said that the man would be prosecuted. 2)We suppose that a referee should be disinterested but not uninterested. 3)Tony can hit a ball farther than I can. 4)We must pursue this matter farther. 5)The principle behind our constitution are a principal reason for its astounding success. 6)All the band instruments except the tuba will be carried to the auditorium for the music contest. 7)The federal government comprises the legislative,judicial,and executive branches. 8)The whole region was struck by an economic disaster. 9)(correct) 10)He was awaked to the risk. Sixty hours is the amount of work time I contracted for. 2)The jury is expected to reach its decision very quickly. 3)Each of the candidates for the position has exceptionally high qualifications. 4)Every boy and girl in the sixth grade was at fault.. 7)He is one of the students who plan to attend the speech contest. 8)The jury are to be isolated in individual hotel rooms each night during the trial. 9)Sam sprawled in the chair and knocked over one of the lamps which were on display. 10)The symptoms of mercury poisoning vary with each individual case. 11)He believes that athletics improves school morale. 12)Up goes the starter”s gun,and each of the runners becomes tense. 13)Either The Moning Post or The City News is a reliable sourse of news. 14)The first thing that catches your eye is the headlines. 15)She is one of the women who have made this country what it is.

新版汇编语言程序设计习题答案(钱晓捷主编)电子教案

新版汇编语言程序设计习题答案(钱晓捷主 编)

新版汇编语言程序设计习题答案(钱晓捷主编) 第一章汇编语言基础知识 1.1、简述计算机系统的硬件组成及各部分作用 1.2、明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 1.3、什么是汇编语言源程序、汇编程序、目标程序? 1.4、汇编语言与高级语言相比有什么优缺点? 1.5、将下列十六进制数转换为二进制和十进制表示 (1)FFH (2)0H (3)5EH (4)EFH (5)2EH (6)10H (7)1FH (8)ABH 1.6、将下列十进制数转换为BCD码表示 (1)12 (2)24 (3)68 (4)127 (5)128 (6)255 (7)1234 (8)2458 1.7、将下列BCD码转换为十进制数 (1)10010001 (2)10001001 (3)00110110 (4)10010000 (5)00001000 (6)10010111 (7)10000001 (8)00000010 1.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示 (1)0 (2)-127 (3)127 (4)-57 (5)126 (6)-126 (7)-128 (8)68 1.9、完成下列二进制数的运算 (1)1011+1001 (2)1011-1001 (3)1011×1001 (4)10111000÷1001 (5)1011 ∧~1011 (8)1011 ⊕ 1001 1001(6)1011 ∨1001(7) 1.10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符? 1.11、计算机中有一个“01100001”编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符? 1.12、简述Intel 80x86系列微处理器在指令集方面的发展。 1.13、什么是DOS和ROM-BIOS? 1.14、简述PC机最低1MB主存空间的使用情况。 1.15、罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用。 1.16、什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。

2位数计算器程序-汇编语言课程设计

信息学院课程设计题目:2位数计算器程序设计 __ 姓名: __ _____ 学号: ____ ___ 班级: 课程:汇编语言 ________ 任课教师:侯艳艳 ____ 2011年12月

课程设计任务书及成绩评定

目录 摘要 (2) 1.设计目的………………………………………………………………………………………………?2 2.概要设计………………………………………………………………………………………………?3 2.1系统总体分析…………………………………………………………………………?3 2.2程序流程图 (3) 3.详细设计......................................................................................................? (4) 3.1主程序及子程序说明 (4) 3.2程序代码编写 (4) 4.程序调试 (6) 4.1运行界面分析 (6) 4.2算法的分析 (6) 4.3调试过程及分析 (6) 5.心得体会 (7) 5.1设计体会...................................................................................................? (7) 5.2系统改进...................................................................................................? (7) 参考文献 (8)

汇编语言程序设计期末考试题

汇编语言程序设计期末考试题 学院(系):学号: 姓名: 计分: 一、项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号 内。每小题1分,共10分) 1.CPU发出的访问存储器的地址是( ) A.物理地址 B.偏移地址C.逻辑地址D.段地址 2.将高级语言的程序翻译成机器码程序的实用程序是( ) A.编译程序 B.汇编程序 C.解释程序 D.目标程序 3.DEC BYTE PTR[BX]指令中的操作数的数据类型是( ) A.字 B.双字C.字节D.四字 4.在下列语句中,BUFFER称为( ) BUFFER DB 01H,0AH A.符号 B.变量 C.助记符D.标号 5.串操作指令中,源串操作数的段地址一定在( )寄存器中。 A. CS B. SS C. DS D. ES 6.使计算机执行某种操作的命令是( ) A.伪指令B.指令 C.标号D.助记符 7.将数据5618H存放在存储单元中的伪指令是( ) A. DATA1 DW 1856H B. DATA1 DB 18H,56H C. DATA1EQU 5618H D. DATA1 DB 18H,00H,56H,00H 8.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=( ) A.1400H B. 77F8H C. 0000H D. 0FFFFH 9.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍 采用的是( )码。 A. BCD码 B.二进制码 C.ASCII码D.十六进制码 10.用指令的助记符、符号地址、标号和伪指令、宏指令以及规定的格式书写程序的语 言称为( ) A.汇编语言 B.高级语言 C.机器语言 D.低级语言 二、填空题(每空1分,共20分) 1.在8086/8088汇编语言中,有五条串操作指令,其中搜索字符串指令的助记符是______。 2.通常所说的计算机系统包括________和________两大部分。 3.8086/8088存储器分四个段,这四个段的段名所对应的段寄存器分别是________、_____ ___、________、________。 4.现有AX=2000H,BX=1200H, DS=3000H, DI=0002H, (31200H)=50H,(31201H)=02H, (31202H)=40H,请写出下列各条指令独立执行完后有关寄存器及存储单元的内容,并指出标 志位ZF、CF的值。 A.ADDAX,1200H;问AX=________H,ZF=________

(完整版)写作教程(一)unit1答案

Unit 1 PART Ⅱ FOCUS Denotation and Connotation Suggested answer to the question If it is your teacher, most probably you will choose b, as the word portly has an implication of a more or less dignified and imposing appearance (e.g. an elderly gentleman, large and portly). However, if it is a doorkeeper, an amiable middle-aged woman, you may choose the word plump as it implies a pleasing fullness of figure (e.g. the plump goddesses of Renaissance paintings). From this exercise we can conclude that words that share the same denotative meanings can be diverse in their connotative meanings. Reference for the Classroom Activities 1.father: the male parent. It connotes support and sternness; it also connotes protection but in a serious fashion. wildflower: uncultivated plant; it connotes vitality and pleasantness. 2. a. In the West, every male person has the good qualities of males, such as bravery, spirit, and toughness. b. Anyway, she has the characteristics of a woman, such as frailty and delicacy. Attitude Reference for the Classroom Activities 2. a. unique b. pigheaded c. flattered d. fossil e. spinster Collocation Suggested answers to the exercise

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

汇编语言程序设计(钱晓捷)课后答案

汇编语言程序设计(第二版) 钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2(1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.5 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.7 W=X+Y+24-Z

2.8 (1)ADD DX,BX (2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX (4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax <-- dx,ax =A*B mov ax,Z ;ax = C cwd ;dx,ax =C (扩展符号后为双字) add cx,ax adc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+C sub cx,540 sbb bx,0 ;bx,cx<-- A*B+C-540 mov ax, V ;ax= D cwd ;dx,ax= D (扩展符号后为双字) sub ax, cx sbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540) idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax存商,dx存余数 2.10;(1)xchg的操作数不能是立即数 (2不能对CS直接赋值 (3)两个操作数不能都是存储单元 (4)堆栈的操作数不能是字节量 (5)adc的操作数不能是段寄存器 (6)没有确定是字节还是字操作 (7)in不支持超过FFH的直接寻址 (8)out只能以AL/AX为源操作数 第二章(02) 2.11; 指令AX的值CF OF SF ZF PF Mov ax,1407h1470h----- And ax,ax1470h00000 Or ax,ax1470h00000 Xor ax,ax000011 Not ax0ffffh----- Test ax,0f0f0h0ffffh00101 注意: 1. mov, not指令不影响标志位 2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。

汇编语言程序设计试题

汇编语言程序设计试题 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.设SS=2050H,SP=0140H,则栈顶存贮单元的物理地址是( A ) A.20640H B.2063EH C.2063FH D.21900H 2.使用DOS功能调用时,子程序编号应放在( B ) A.AL B.AH C.AX D.任意指定 3.没有 ..语法错误的输出指令是( B ) P76 A.OUT AX,30H B.OUT DX,AL C.OUT AL,DX D.OUT 30H,AH 4.用MOV指令将十进制数89以非压缩BCD码格式送入AX,可使用的指令是( B ) A.MOV AX,89 B.MOV AX,0809H C.MOV AX,89H D.MOV AX,0809 5.设AX=8765H,DX=4321H,执行CWD指令后,DX中的内容是( B ) P117 A.4321H B.0FFFFH C.8000H D.0001H 6.设CL=05H,要获得CL=0AH,可选用的指令是( A) A.XOR CL,0FH B.NOT CL C.OR CL,0AH D.AND CL,0FH 7.假设执行ADD指令后AL=8CH,再执行DAA指令,AL中的值是( A ) A.92H B.0104H C.74H D.8CH 8.MOV AL,79H ADD AL,B1H 上面指令执行后,设置的标志位CF和ZF的值是( D ) A.CF=0,ZF=1 B.CF=l,ZF=1 C.CF=0,ZF=0 D.CF=1,ZF=0 9.TEST DL,55H P123 JZ NEXT NEXT:…… … 上述程序段,执行JZ指令时能产生转移的情况是( D ) A.DL>55H B.DL<55H C.DL=55H D.DL中第0、2、4、6位均为0 10.假设AL=28H, 执行ROL AL,1 指令之后的情况是( D ) P125 A.AL=14H, CF=1 B.AL=50H, CF=1 C.AL=14H, CF=0 D.AL=50H, CF=0 11. 98的BCD码是(B) A)10011001 B) 10011000 C) 10011010 D) 10001010 12. –0110110 的补码是(A) A) 11001010 B) 11001001 C) 10110110 D) 00110110

相关主题
文本预览
相关文档 最新文档