文档库 最新最全的文档下载
当前位置:文档库 › 《程序设计基础》习题汇编

《程序设计基础》习题汇编

《程序设计基础》习题汇编
《程序设计基础》习题汇编

《程序设计基础》习题汇编

C程序与算法

单项选择题

1. 将汇编语言编写的程序翻译成目标程序的程序是()

A)解释B)编译C)汇编D)目标

2. 不属于面向机器语言的是()

A)符号语言B)二进制语言C)汇编语言D)C语言

3. 将高级语言编写的程序翻译成目标程序的程序是()。

A)解释B)编译C)汇编D)二进制

5. 程序段的基本结构中,不包含()。

A)函数结构B)循环结构C)顺序结构D)分支结构

6、C语言源程序的基本单位是()。

A、程序行

B、语句

C、函数

D、字符

7、以下说法正确的是()。

A、在C语言中,要调用的函数必须在main()函数中定义

B、C语言程序总是从第一个定义的函数开始执行

C、C语言程序中,main()函数必须放在程序的开始部分

D、C语言程序总是从main()函数开始执行

8、以下对C语言描述中正确的是()。

A、C语言源程序中可以有重名的函数

B、C语言源程序中要求每行只能书写一条语句

C、C语言源程序中,注释可以出现在任何位置

D、最小的C源程序中没有任何内容

9、对C语言源程序执行过程描述正确的是()。

A、从main() 函数开始执行,到main()函数结束

B、从程序的第一个函数开始执行,到最后一个函数结束

C、从main函数开始执行,到源程序的最后一个函数结束

D、从第一个函数开始执行,到main函数结束。

填空题

1. 能完成某个任务的、有始有终的C语言__ _称为C程序。

2. 用来编写程序的计算机语言称为____。

3. 高级语言编写的程序称为____。

4. 用C语言编写的源程序简称为“C程序”,扩展名规定为“____”。

5. C程序经过“编译”后将获得扩展名为“OBJ”的____。

6. C程序经过编译后获得的中间代码文件还需要经过____,才能成为可执行的“程序”,目标程序的扩展名规定为"EXE"。

7、ANSI C标准中共规定了个关键字,条控制语句。

8、一个执行的C语言源程序至少应包含一个。

9. 选择结构是____选择某个操作来执行的—种程序结构。

10. 选择结构可以分为____、双分支结构和多分支结构。

11. 循环结构又可分为当型循环、____及次数型循环。

数据类型、运算符与表达式

单项选择题

1. 以下程序的输出结果是。

main()

{int a=10,b=10;

printf("%d,%d",a--,++b);}

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

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

A)'a'&&'b' B)a<=b

C)a||b+c&&b-c D)!((a

3. 设ch是char型变量,其值为'a',且有下面的表达式:

ch=(ch>='a'&&ch<='z')?(ch-32):ch

上面表达式的值是

A)'a' B)'A' C)'Z' D)'z'

4. 下面程序的输出是

main()

{int a=-1,b=4,k;

k=(a++<=0)&&(!(b--<=0));

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

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

5. 字符串“\ t \ n \ \ \ 045 \?”的长度为。

A)4 B)10 C)5 D)说明不合法

6. C语言中最基本的数据类型包括。

A)整型,实型,逻辑型B)整型,实型,布尔型C)整型,实型,字符型D)整型,实型,指针型

7. C浯言中的构造类型包括。

A)数组型,结构体型,联合体型B)结构体型,联合体型,指针型

C)结构体型,联合体型,枚举类型D)数组型,结构体型,联合体型,指针型

8. 设C语言中,一个int型数据在内存中占用两个字节,则int型数据的取值范围为:

A)-128~127 B)-32768~32767 C)0~65536 D)0~2147483647

9. 若a是float型变量,则表达式a=l,a++,a+=a的值为。

A) 2 B) 4 C) 2.0 D) 4.0

10. 以下运算符中,运算优先级最低的是。

A) -> B) ++ C) * D) =

11. 不属于字符型常量的是。

A)'A' B)"A" C)'\ \' D)'\"'

12. 不属于整型常量的是

A)10 B)010 C)0xl0 D)4/2

13. 属于实型常量的是

A)E10 B)10 C)10L D)1E10

14. ' \060 '和"\060"在内存中占用的字节数分别为。

A)2 2 B)2 1 C)1 2 D)4 4

15. 设有以下程序片段,请问执行后的输出结果是

int i=010,j=10,k=0xl0;printf("%d,%d,%d",k,j,i);

A)16,10,8 B)8 10 16 C)10,10,10 D)8,10,16

16. 设整型变量a的值为5,使整型变量b的值不为2的表达式是。

A)b=a/2 B)b=6-(--a) C)b=a%2 D)b=a>3?2:1

17. 设单精度变量f,g的值均为5.0,则下面的表达式中,使f为10.0的表达式是。

A) f+=g B)f-=g+5 C)f*=g-5 D)f/=g*5

18. 表达式-l?(10?10:1):(0?0:-1)的值为

A)10 B)1 C)0 D) -1

19. sizeof(double)的值为

A)1 B)2 C)4 D)8

20. sizeof(float)是。

A)一种函数调用B)—个单精度表达式C)—个整型表达式D)—个不合法的表达式

21. 设有以下的程序片段,请问执行后变量i的值是。

int i;float f=10.5;i=((int)f)/2;

A) 5.0 B)5.5 C)6 D)5

22. 以下程序的输出结果是

#include

main()

{int k=4,m=1,p;

p=func(k,m);printf("%d,",p);

p=func(k,m);printf("%d\n",p);}

func(a,b)

int a,b;

{static int m=0,i=2;i+=m+1;m=i+a+b;return(m);}

A)8,17 B)8,16 C)8,20 D)8,8

填空题

1. 数学式sin2x*(a+b)/(a-b)写成C语言表达式是____。

2. 若已知a=1,b=2,则表达式!a

3. C语言的常量可以分为____,____,____,____,____,____。

4. C语言的基本数据类型分为____,____,____,____。

5. 已知字母'A'的ASCII码值为十进制数65,且ch为字符型,则执行语句ch='A'+'6'-'0?后,ch的值为____。

6. 设C语言中,一个int型数据在内存中占用两个字节,则unsigned int型数据的取值范围为____。

7. 若a是float型变量,且a=6,则表达式a/2+(int)(a+1)%2的值为____。

8. 假设m是一个三位数,百位、十位、个位的数值分别为a、b、c,则百位、十位、个位的数值分别为c、a、b的数的表达式是____。

顺序程序设计

单项选择题

1. 设有整型变量m值为8,下列赋值语句中,正确的是。

A)++m=6; B) m=m++;C) m+1=8;D) m+1+=8;

2. 设字符型变量ch的值为'A',整型变量m的值为'1',假定执行ch=getchar();m=getchar();时,从键盘输入B,则变量ch和m的值分别为。

A)'A'和'1' B)'B'和'1' C)'B'和' ' D)'B'和'\n'

3. 设字符型变量ch的值为'A',整型变量m的值为'1',假定执行putchar(m);putchar(' ');putchar(ch);后,则输出结果是。

A)A1 B)lA C)A l D)1 A

4. 如果用scanf()来输入长整型数据,则正确的格式控制符是。

A)%x B)%lx C)%lD D)%d

5. 如果用printf()来输出双精度型数据、则正确的格式控制符是。

A)%-10.2f B)%lf C)%le D)%lg

6. 执行语句scanf("%d,%d",&m,&n);使m和n的值分别为1和2,正确输入是。

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

7. 设整型变量a和b的值分别为8和9。printf("%d,%d",(a++,++b),b--);的输出是。

A)8,8 B)8,7 C)9,9 D)10,9

8. 设有下列程序段,则其正确的输出是。

int x=011,y=0xll;

printf("x=%-3dy=%3d",x,y);

A)口口917口B)x=9口口y=口17 C)x=口口9y=17口D)x=lly=x11

9. 设字符型变量ch已有值,下列语句中错误的是。

A)scanf("%c%c",ch, ch);B){int ch=6;printf("%d",ch);}

C)5;D)ch>48&&ch<0x3A;

10. 下列表达式中,结果不为1.0的表达式是。

A)fabs(-1.0) B)powl0(0) ) C)floor(0.99) D)sin(90*3.14159/180)

11. 运行下列程序的输出是。

main()

{int k=1;

{int k=2;printf("%d",k);}

printf("%d",k);}

A)12 B)21 C)11 D)22

12. 运行下列程序的输出是。

main()

{char ch='B';

printf("%c%d",ch,ch++);}

A)C65 B)B65 C)B66 D)C66

填空题

1. 使用"putchar()"函数时,程序的开头必须写一条包含命令:____。

2. 用输入函数scanf()输入长整型十六进制数据时,对应的格式控制符是____.

3. 用输入函数scanf()输入双精度实型数据时,对应的格式控制符可以是%lf或____。

4. 用输出函数printf()输出双精度实型数据时,对应的格式控制符可以选用%f,%e或____

5. 在输出函数printf()中使用了%s格式字符,则输出表达式是____。

6. 表达式语句的构成规则是在任何表达式的后面加上一个____。

7. 表达式"sound(1200)"的运算结果是____。

8. 表达式"random(889)"的运算结果是产生____—个整数。

9. 运行下列程序的输出结果是____

#include

main()

{ int x=12 , y=8;

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

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

}

10运行下列程序的输出结果是____

#include”math. h”

main()

{float f1=1.0,f2=-2.0;

printf(“f2=%f,fabs(f2)>f1=%d”,f2+=f1,fabs(f2)>f1); }

11.运行下列程序的输出结果是____

#include

main()

{ Int a=2 , c=5;

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

}

12. 运行下列程序的输出结果是____

#include”math. h”

main()

{int m=64;

printf(%d,%c,%#o,%#x”,m,m+1,m+2,m+3);

}

选择程序设计

单项选择题

1.已知a,b,c的值分别是1,2,3,则执行下列语句后a,b,c的值分别是if (a++

else a=b=c=0;

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

2.以下if语句中格式正确的是

A)if(a>b) b++ else a++;

B)if(a>b) {b++;printf ("%d",b);}

else {a++;printf("%d",a);}

C)if(a>b) {b++;printf("%d",b)}

else{a++;printf("%d",a);}

D)if(a>b)b++;printf("%d",b);

else printf("%d",a);

3.若i是int型变量,且有下面的程序片段

i=0;

if(i<=0) printf("####")

else printf("****");

上面程序片段的输出结果是

A) #### B) **** C) ####**** D)有语法错误,无输出结果

4.有以下程序:

#include

main()

{int x,y;printf("Enter an integer(x):");

scarf("%d",&x);

if(x++<0) y=-1;

else if(x==0) y=0;else y=1;printf("%d",y);}

现从键盘上输入-1,则程序的输出是。

A) -1 B)0 C)1 D)不确定的值

5.有以下程序,运行后的输出结果是

main()

{int a=2,b=0,c=-1;

if(a=b+c)

if(a>0) b=c=a;

else if(a==0)a=b=c=0;

else a=b=c=1;

else a=b=c=-1;

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

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

6.若执行下面的程序时从键盘上输入10,则输出是

main()

{int a;scanf("%d",&a);

if(a++>10)

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

else printf("%d\n",a--);}

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

7.下面程序的输出结果是。

#include

main()

{int i=2,p;p=f(i,i+1);

printf("%d",p);}

int f(a,b)

int a,b;

{int c;c=a;

if(a>b) c=1;

else

if(a==b)c=0;else c=-1;

return(c);}

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

8.有以下程序:

#include

main()

{int al=0,a2=0,a3=0;

char ch;

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

switch(ch)

{case 'A':a1++;

case 'B':a2++;

default:a3++;}

printf("%d,%d,%d",a1,a2,a3);}

现从键盘上输入AAAAABBBC<回车>,则程序执行后的输出结果是

A)5,8,9 B)5,3,1 C)5,3,9 D)5,8,1

9.请读程序:

#include

main()

{int x=l,y=0,a=0,b=0;

switch(x)

{case l:

switch(y)

{case 0: a++; break;

case 1:b++;break;}

case 2:

a++;b++; break;}

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

上面程序的输出结果是

A)a=2,b=l B)a=l,b=l C)a=l,b=0 D)a=2,b=2

10.若要求表示a不等于0的关系,错误的表达式是

A)a<>0 B)a!=0 C)a D)a<0| |a>0

11.程序的三种基本结构是。

A)顺序结构,循环结构,递归结构B)顺序结构,循环结构,选择结构

C)选择结构,循环结构,递归结构D)顺序结构,选择结构,递归结构

12.C语言中,逻辑真表示为

A)TRUE B)'y'或'Y' C)1 D)非零值

13.设有如下程序:

#include< stdio. h>

main()

{ char ch1,ch2;

scanf(“%c%c”,&ch1,&ch2);

if (ch1!=?B?)

{ switch(ch2)

{ case?B?:

switch(ch1)

{ case?A?:printf (“AB”)

break;

case?B?:printf(“BB”);

break; }

case …A?:

switch(ch1)

{case?A?:printf (“AA”)

break;

case?B?:printf(“BA”);

break;

} } }}}

若执行是从键盘上输入的数据时AB,则输出是

A) AB B)ABAA C)ABBBAABA D)BBBA

14. 已知a,b,c,w时int型变量,a,b均以赋值,且满足a

w=a;

if (w<=b) w=b;

if (w<=c) printf (“%d”,w);

else w=c;

为把c的值放入w中,则执行此程序段时,从键盘输入的c的值不应取的范围是

A) b>c B) c>=b C) c>a且ca或c

15.设a,b,w为整型变量,ch为字符型变量,用if语句改写以下的程序段:

switch(ch)

{ case'+':w=a+b;break;

case'-':w=a-b;break;

case'*':w=a*b;break;

case'/':w=a/b;break;}

在下列写法中,错误的是

A)if(ch= ='+') w=a+b;B)if(ch= ='*') w=a*b;

if(ch= ='-') w=a-b;else if(ch= ='/') w=a/b;

if(ch= ='*') w=a*b;if(ch= ='+') w=a+b;

if(ch= ='/') w=a/b;else if(ch= ='-') w=a-b;

C)if(ch= ='+') w=a+b;D)if(ch= ='+') w=a+b;

else if(ch= ='-') w=a-b;elseif(ch= ='-') w=a-b;

if(ch= ='*') w=a*b;if(ch= ='*') w=a*b;

else w=a/b;else if(ch= ='/') w=a/b;

16.实型变量a,b中放有两门课程的考试成绩,如果两门成绩都及格(成绩>=60),则显示“pass”,如果a成绩不及格,则显示"fail",如果a成绩及格而b成绩不及格则不做任何处理。下列程序段中可实现上述要求的是

A)if(a>=60) B)if(a<60)

if(b>=60) printf(”fail”);

printf("pass");else if(b>=60)

else printf("pass");

printf("fail");

C)if(a>=60)&&(b>=60)) D)if(b>=60)

printf("pass");if(a>=60)

else if(b<60) printf("pass");

printf("fail");else printf("fail");

17.下面满足当(a>=b)&&(c= =d)时u=w,否则x=y的if语句是

A)if(a

if(c= =d) x=y;else if(c= =d) u=w;

else x=y;else x=y;

else u=w;

C)if(a=b)

{if(c= =d)x=y;{if(c= =d) x=y;

else u=w;else u=w;

} }

18.以下程序的输出结果是

#include

main()

{ int a=0,b=l,c=0,x=0,y=0;

if(x<=y)

if(y=l0)

if(!b) a=1;

else if(c) a=10;

a=-1;

printf("%d",a);}

A)1 B)10 C)-1 D)不确定的值

填空题

1.有以下程序:

main()

{int i;

scanf(“%d”,&i);

swith(1)

{case 1:

printf(“%d”,i++)

case 2:

printf(“%d,i++)

case 3:

printf(“%d”,i++)

case 4:

printf(“%d”,i++)

break;

default:

printf(“END”)} }

输入数据1,执行以上程序,则输出结果是____ 2. 执行下面程序后输出的结果为____。

# include

main()

{

int x=100,i=20,j=10;

int m=5,n=0;

if (i

if (b!=15)

if (!m)

x=1;

else

if(n) x=10;

x=-1;

printf("%d",x);

}

3.执行下面程序后输出的结果为____。

main()

{ int i=0,j;

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

switch(j)

{ case 1: i=i+1;

case 2: i=i+2;

case 3: i=i+3; }

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

4.设有以下程序:

#include

main()

{ char ch1, ch2;

scanf("%c%c",&ch1,&ch2);

if(ch1!='B')

{ switch(ch2)

{ case 'B':

switch(ch1)

{ case'A':printf("AB");

case'B':printf("BB");}

break;

case'A':

switch(ch1)

{case'A':printf("AA");

case'B':printf("BA");

} } }

else printf("Nothing");}

若执行此程序段时输入的数据是AB,则程序的输出是____。

5.有以下程序:

#include

main()

{ int c;

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

{ switch(c-'2')

{ case 0:

case l:putchar(c+4);

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

case 3:putchar(c+3);

default:putchar(c+2);break;

} }}

若执行时从键盘上输入2473(代表回车),则程序的输出结果是____。执行下面程序后输出的结果为____。

# include

main()

{

int a=1, b=10;

switch(a)

{

case 1:

switch(b)

{ case 0: printf(“**0**”);break;

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

case 2: printf(“**2**”);break;

}

}

6.若x是int型变量,请写出"x是偶数则为真"的表达式____。

7.x,y,z均为整型变量,请写出描述"x或y等于z"的表达式____。

8.已知a=3,b=03,c='0',则表达式a>b&&a>c||b>c&&a>c的值为____。

9.以下程序的功能是:输入圆的半径,和运算标志,按照运算标志进行运算,输出运算后的结果。请在下划线处填入合适内容。

标志指定运算

'a'或'A' 求面积

'b'或'B' 求周长

其他值求周长,面积

#include

#define P 3.14

main()

{ char c;

float r,area,length;

seanf("%c,%f",&c,&r);

switch(____)

{case 'a':

case 'A':area=P*r*r;printf("area=%f",area);break;

case 'b':

case 'B':length=2*P*r;

printf("length=%f",length);

——;

default:area=P*r*r;

length=2*P*r;

printf("area=%d,length=%f",area,length);

10.以下程序的功能是:从键盘上接受三个十进制整型数据,对这三个数据进行从小到大的排序,输出排序后的数据。请完成该程序。

#include

main()

{int x,y,z,i;

scanf("%d,%d,%d",&x,&y,&z);

if(____){i=x;x=y;y=i;}

if(____){i=y;y=z;z=i;}

if(____){i=x;x=z;z=i;}

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

11.以下程序的功能是:从键盘输入一年份数据,判断此年份是否为闰年。其中判断闰年的条件是:能被4整除但不能被100整除,或能被400整除。请填空完成该程序。

#include

main()

{int x,i;

seanf("%d",&x);

if(x%400= =0) i=1;

else if(____) i=1;

else____;

if(i= =1) printf("This year is a leap year");

if(i= =0) printf("This year is not a leap year");}

12.现要根据学生的成绩,将学生划分为A,B,C,D,E五个等级,其对应的关系已用if 语句写出如下(其中整型变量result存放学生成绩,字符型变量grade存放学生等级):if(result<60) grade='E';

else if(result<70) grade='D';

else if(result<80) grade='C';

else if(result<90) grade='B';

else if(result<=100) grade='A';

现要将上述关系写成switch语句如下,请在下划线处填入正确内容.

switch( )

{case 6:grade='D?;break;

case 7:grade='C';break;

case 8:grade='B';break;

case 9:

case 10:grade='A';break;

____:grade='E';}

13.假设公民交纳个人所得税的税率如下(a代表个人收入,r代表税率):

r= 0 (a<1000)

r=5% (1000<=a<2000)

r=10% ( 2000<=a<3000)

r=15% (3000<=a<4000)

r=20% (a>=4000)

以下程序要求从键盘上输入个人收入,根据以上的税率计算出应付的税金并输出。请完成该程序。

#include

main()

{float a,b;.

int i;

scanf("%f",a);

if(a>=4000)i=4;

else i=____;

switch(i)

{case 0:b=a*0.0;break;

case 1:b=a*0.05;break;

case 2:b=a*0.10;break;

case 3:b=a*0.15;break;

case 4:b=a*0.20;break;}

printf("%f",b);}

14.打印100~200之间的所有素数。

______ ________

#include

main()

{

int m, i , flag = 1;

for(m = 100; m <= 200; m++)

{ for(i = 2; ; i++) { if(m%i == 0) } if(flag) { printf("%6d ", m); }

}

}

循环控制

单项选择题

1.有以下程序片段,请问执行后的输出结果是

int i;

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

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

A)1 B)2 C)3 D)陷入死循环,无输出结果

2.下面有关for语句的说法中,正确的是

A)任何情况下,for语句的三个表达式一个都不能少

B)for语句中的循环体至少会被执行一次

C)for语句只能用于循环次数已经确定的情况下

D)for语句中的循环体可以是复合语句

3.下面程序的输出是

main()

{int y=9;

for(;y>0;y--)

if(y%3= =0)

{printf(“%d”,--y);continue;}}

A)741 B)852 C)963 D)875421

4.请读程序:

#include

main()

{int a,b;

for(a=1,b=1;a<=100;a++)

{if(b>=20) break;

if(b%3= =1){b+=3;continue;}

b=-5;}

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

上面程序的输出结果是

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

5.请读程序

#include

main()

{int num=0;

while(num++<=2)

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

上面程序的输出结果是

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

2 2 2 3

3 4

6.执行下面程序片段的结果是

int x=0;

do

{printf(“%2d”,x--);}

while(x);

A)打印出321 B)打印出23 C)打印不确定结果D)陷入死循环

7.下面的程序,描述正确的是

main()

{int x=3;

do

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

while(!(--x));}

A)输出的是1 B)输出的是1和-2 C)输出的是3和0 D)是死循环

8.下列循环中哪一个不是无限循环

A) for(i=1;;i++) B) i=1;while(i--)

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

C) i=1 D) for(i=0;i;i++)

do printf(“%d”,i);

{printf(“%d”,i);

i++;}while(--i);

9.有以下程序段:

int i,j;

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

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

printf(“*”);

则执行以上的程序片段后,输出‘*’个数是

A)15 B)10 C)25 D)20

10.有以下程序段:

int i,j;

i=0;j=0;

while(i++<5)

{j=0;

do

{printf(“*”);}

while(++j<4);}

则执行以上的程序片段后,输出‘*’的个数为

A)15 B)10 C)25 D)20

11.下面的程序段不能实现求阶乘8!(8!=1*2*3*4*5*6*7*8,结果存放在p中)的是

A)p=1; B)p=2;

for(i=1;i<9;i++) for(i=8;i>3;i--)

p=p*i; p=p*i;

C)p=1;i=1; D)p=1;i=8;

while(i<9) do

p=p*i++ ; {p=p*i--;}

while(i>1); 12.有下列程序段:

char ch;

int s=0;

for(ch=?A?;ch

if(ch%2= =0)s++;

printf(“%d”,s);

则执行上述片段后,程序的输出结果是

A)13 B)12 C)26 D)25

13.有下面的程序:

main()

{int i,n,k;

n=15496;k=2;

for(i=1;i

n=n%10;

printf(“%d”,n);}

则执行后的输出结果是

A)9 B)6 C)2 D)1

14.有以下程序:

main()

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

int i,j,b[10];

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

{b[i]=0;

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

if(a[j]= =a[i])b[i]=b[i]+1;}

j=0;

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

if(b[i]>b[j])j+I;

printf(“%d”,a[j]);}

执行程序后的输出结果是

A)8 B)4 C)3 D)2

15.语句while(!e= =0);是什么时候将会陷入死循环

A) e==0 B) e!=0 C) e!=1 D)e!= -1

16.以下程序的输出结果是

#include

main()

{int i;

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

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

else continue;printf(“#”);}printf(“$”);}

A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$ 17.有以下程序片段

int k=5;

while(k=1)k--;

执行此程序片段,则描述正确的是

A)while循环执行4次B)循环体执行一次

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

18.下面程序的运行结果是

#include

main()

{int i=1;

do{i--;}while(i++);

printf(“%d”,i--);}

A) -1 B) 0 C) 1 D)陷入死循环

19.以下说法中正确的是

A)continue语句的作用是结束整个循环的执行

B)break语句应出现在switch语句和循环语句中

C)利用goto语句可以使程序的执行从一个函数跳到另一个函数

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

填空题:

1.执行下属程序片段后的输出结果为____.

int a=6;

while(a--)

printf(“%d”,a--);

2.有以下程序,其功能是将从键盘上输入的小写字母转换成大写字母输出,当输入为‘#’时,结束转换,请在下划线处填上合适的语句。

#include

main()

{char c; scanf(“%c”,&c);

while(______)

{if((c>=?a?)&&(c<=?z?))

printf(“%c”,______);

scanf(“%c”,&c);} }

3.为输出入下图形,请在程序中的下划线处填入合适的内容

*

**

***

* * * *

* * *

* *

*

main()

{int i,j;

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

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

print(“”);

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

printf(“*”);

printf(”\n”);}

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

{for(j=0;j

printf(“ “);

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

printf(“*”);

printf(“\n ”);} }

4.现有已知长度为n 的整型数组a ,其前n-1个元素中已有数据,并且数据按从小到大的顺序排列,函数insert 要完成的功能是:把任意整数i 填入数组a 中,并使插入数据后的数组依然保持从小到大的顺序(函数参数的意义分别是:i 为需插入的数据,n 为数组a 的长度,a 为数组名)。

insert(int i ,int n ,int a[ ])

{ int k ;

k=n-1;

while((k>0)&&(______))

{ a[k]=a[k-1];

k=k-l ;}

a[k]=______;}

5.已知e=l+!11+!21+!31+…+!

1n ,试用此公式求e 的近似值,要求累加所有不小于1e-6的项值,请在程序中下划线处填上合适内容,完成程序功能。

#include

main()

{ int i ;

float e ,n ;

e=1.0;i=1;

n=1.0;

while(______)

{ n=1.0 / tun(i);i++;

e+=n ; } }

fun(int i)

{ int j ,k ;

k=l;

for(j=1; ____;++j)

k=k*j ;

return(k); }

6. 下面程序可从键盘上输入一个大于0且小于1000的整数,然后输出此整数的所有整数因子。如:输入12,输出l ,2,3,4,6,12。请在下划线处填上合适的内容,完成该程序。 main()

{int a ,k ;

scanf(”%d ,&a);

if((a>0)&&(a<1000))

{printf("%d",a);

for(k=1; ;++k)

if(______)printf("%d",k);} }

7. 现有一等差数列,已知第一项a=1,公差b=4,下面程序的功能是输出满足前n 项之和小于100的n 最大值,请填空完成该程序。

#include

main()

{ int a=1,b=4,sum=1,n=1;

while(______)

{ a=a+b;

sum=sum+a;

n++;}

printf("%d",n-1);}

8.以下程序的输出结果是______。

#incude

main()

{ int i;

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

switch(i/5)

{case 0:printf("*");break;

case 1:printf("#");break;

case 2:printf("&");

default:printf("@");}}

9.已知一正整数递增等差数列前5项之和为25,之积为945,根据以上条件,要求编写以下程序,输出该数列的前十项,请完成该程序。

#include

main()

{ int x,y,z,i,a,b;

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

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

{a=0;b=1;z=x;

for(i=1;______;i++)

{a=a+z;b=b*z;z=z+y;}

if(a= =25&&b= =945)

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

printf("%4d",______);} }

10.下面程序的功能是求1到1000之间能同时被3,5,7整除的数,按每行十个数的格式输出这些数,请完成该程序。

#include

main()

{ int i=1,j=0;

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

{if(____){pfintf("%4d",i);j=j+1;}

if(j= =10){printf("\n");j=0;}

} }

11.下面程序的功能是:从键盘上输入一个五位整数,对此整数中的五个数值(即万位,千位,百位,十位,个位上的数字)进行从大到小的排序,形成一个新的五位整数,输出这个整数。如输入12435,则输出54321。请完成该程序。

#include

main()

{ long int x,y;

int i,a[5];

scanf("%1d",&x);

if((x<10000)||(x>99999))

{printf("This data is error");

exit(0);}

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

{a[i]=x%10;

x=x/10;}

fun(a);

y=0;

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

y=y*10+a[i];

printf("%1d",y);}

fun(int a[])

{ int i,j,k;

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

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

if(______)

{______;

a[i]=a[j];

a[j]=k;} }

12.下面程序的功能是求500以内的所有完全数,请填空(说明:一个数如果恰好等于它的因子(自身除外)之和,则称该数为完全数,如6=1+2+3,则6是完全数)。

#include

main()

{ int i,sum,a=2;

do

{i=1;sum=0;

do

{if(a%i= =0)______

i++;} while(i<=a/2);

if(sum==a) printf("%d",______);

a++;}while(a<500);

}

数组

单项选择题

1.请读程序:

#include

main()

{int n[2],i,j,k;

for(i=0;i<2;i++) n[i]=0;

k=2;

for(i=0;i

for(j=0;j

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

上面程序的输出结果是。

A)不确定的值B)3 C)2 D)1

2.下列四个选项中,正确的数组定义是。

A)int 3a[3];B)int i;scanf("%d",&i);char ch[i];

C)#define MAX l0 D)#define MAX l0.0

int a[MAX] int a[MAX];

3.下列数组的定义中,会产生错误的是

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

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

C)char a[5]="Hello";

D)char a[5]={'H','e','l','l','o'};

4.若有以下的程序,请问执行后的输出结果是。

main()

{ int i=0;

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

for(i=0;i<3;i++) printf("%d",a[i][1]);}

A)50,53,56 B)49,52,55 C)2,5,8 D)1,4,7

5.阅读下列程序:

main()

{int n[3],i,j,k=2;

for(i=0;i

for(i=0;i

for(j=0;j

n[j]=n[i]+1;

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

上述程序运行后,输出结果是。

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

6.下列有关字符数组与字符串的说法中正确的是

A)字符数组中存放的一定是—个字符串

B)所有的字符数组都可以被当作字符串处理

C)对存放字符串的字符数组可以象一般数组一样对数组中的单个元素进行操作

D)一个字符数组可以认为就是一个字符串

7.下列对字符串的说法中,错误的是

A)字符串就是一个字符数组

B)字符串可以整体输入输出

C)字符串可以比较大小

D)存储字符串所需的内存空间等于字符串的长度

8.有以下程序:

#include

main()

{ char a[4];

scanf("%c,%c,%c",&a[0],&a[1],&a[2]);

printf("%s",a);}

现若从键盘上输入abc,则输出是

A)abc B)ABC C)无特定值D)程序出错,不能通过编译

9.已知有如下说明:

实验四-循环结构汇编语言程序的设计实验报告

循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实

验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如 下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:

四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:Masm.exe+Link.exe。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj (3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe 2)汇编环境 最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根

目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)

汇编语言程序的设计试卷与答案

汇编语言程序设计试卷 一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题1分,共20分) 1.十六进制数88H,可表示成下面几种形式,请找出错误的表示()。 ① 无符号十进制数136 ② 带符号十进制数-120 ③ 压缩型BCD码十进制数88 ④ 8位二进制数-8的补码表示 2.指令指针寄存器是()。 ① IP ② SP ③ BP ④ PSW 3.当执行指令ADD AX,BX后,若AX的内容为2BA0H, 设置的奇偶标志位PF=1,下面的叙述正确的是()。 ① 表示结果中含1的个数为偶数 ② 表示结果中含1的个数为奇数 ③ 表示该数为偶数 ④ 表示结果中低八位含1的个数为偶数 4.完成将累加器AL清零,并使进位标志CF清零, 下面错误的指令是()。 ① MOV AL,00H ② AND AL,00H

③ XOR AL,AL ④ SUB AL,AL 5.下列指令执行后总是使CF=0,OF=0的是()。 ① AND ② NEG ③ NOT ④ INC 6.完成同指令XCHG AX,BX相同功能的指令或指令序列是()。 ① MOV AX,BX ② MOV BX,AX ③ PUSH AX POP BX ④ MOV CX,AX MOV AX,BX MOV BX,CX 7.设AH=0,AL=06H,BL=09H,执行指令 ADD AL,BL AAA 之后,其结果应是()。 ① AH=01,AL=05 ② AH=1 AL=15 ③ AH=0 AL=0FH ④ AH=0 AL=05 8.设AL=0B4H,BL=11H,指令“MUL BL”和指令“IMUL BL”分别执行后OF,CF的值为

汇编语言程序设计练习题

汇编语言程序设计练习题 一、字符与串处理类 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、强度是金属材料在力的作用下抵抗和断裂的能力。 2、依据凝固区的宽窄,铸件的凝固方式分为、和。 3、按照产生原因,铸件内应力可分 为:和。 4、自由锻的工序可分为:、和 三大类。 5、拉深中常见的废品有:和。 6、焊接热影响区可分为:、、 和。 7、普通手工电弧焊的焊条由和两部分组 成。 8、刀具的磨损过程可分 为、、三个阶段。 9、对于钢铁零件,外圆面切削加工的主要方法 是:和。 10、影响铸铁石墨化的主要因 素和。 11、工程上常用硬度指标有_________ 和 __________ 两种。 12、合金的收缩经历_________ 、_________ 和 ________三个阶段。 13、造型方法可分为造型和造型两大类。 14、影响铸铁石墨化的主要因素是和。 15、金属的可锻性取决于和。 16、模锻中,模膛根据功用的不同,分为和__________。 17、冲压生产的基本工序有___________ 和 __________两大类。 18、焊接电弧包括________、_________ 和__________三个区域。 19、埋弧自动焊中,和的作用相当于电焊条的焊芯和药 皮。 二、判断对错

1、影响合金流动性最显著的因素是化学成分。() 2、铸件凝固过程中,糊状凝固的合金缩孔倾向大,缩松倾向小。() 3、铸件内应力产生的主要原因是收缩受阻。() 4、铸造模样表面上设计起模斜度是为了便于模样在砂型中固定() 5、铸件分型面应该尽可能的多。() 6、设计落料模时,应先按照落料件确定凸模刃口尺寸。() 7、塑性金属变形后的纤维组织可以采用热处理的办法消除。() 8、锻造为了提高金属的锻造性能,锻件的锻造温度越高越好。() 9、设计模锻模膛时,只有终锻模膛有飞边槽。() 10、随钢中含碳量增加,其可焊性变差。() 11、焊接热影响区组织、性能在焊接前后没有变化。() 12、弯曲时应尽可能使弯曲线与板料纤维垂直。() 13、为了提高焊接质量,应尽量采用异种材料进行焊接。() 14、只有在切削塑性金属材料时,才会产生积屑瘤。() 15、顺铣时,会造成工件在进给方向的窜动。() 16、磨削可以用来加工钢铁以及铝、铜等有色金属。() 17、粗加工时,刀具后角应取较小值。() 18、金属材料的加工性能与工艺方法有关。() 19、冲裁变形时板料首先进行弹性变形。() 20、锻造加工只是适合塑性金属材料加工。() 21、碳钢通常在油中淬火,而合金钢在水中淬火。() 22、合金结晶温度范围越小,合金的流动性越好。() 23、灰铸铁一般都要安置冒口和冷铁,使之实现同时凝固。() 24、冷却速度越快越易得到灰口铸铁。() 25、浇注时铸件的重要平面应朝下。() 26、砂型铸造时,木模尺寸应与铸件尺寸完全相同。() 27、铸件壁厚小于“最小壁厚”,容易产生浇不足、冷隔现象。() 28、设计制造零件时,应使零件的最大正应力方向与纤维方向垂直。() 29、常言道“趁热打铁”,就是说铸铁是可以锻打的。() 30、只要在压力加工过程中对工件加热,就属于热变形。() 31、落料和冲孔是使坯料沿封闭轮廓分离的工序。() 32、拉深系数越小,表明拉深件直径越小,变形程度越小。() 33、直流正接就是工件接电源正极,焊条接负极。()

汇编语言学习知识程序设计实验

目录 目录 (1) 实验一利用DEBUG熟悉常用指令的使用 (2) 一、实验目的 (2) 二、示例 (2) 三、实验题 (2) 实验二汇编程序和连接程序的使用 (6) 一、实验目的。 (6) 二、示例。 (6) 三、实验题。 (8) 实验三顺序结构程序设计 (11) 一、实验目的 (11) 二、示例 (11) 三、实验题 (12) 四、实验报告 (15) 实验四循环结构程序设计 (16) 一、实验目的 (16) 二、示例 (16) 三、实验题 (18) 实验五分支结构程序设计 (21) 一、实验目的 (21) 二、示例 (21) 三、实验题 (22) 实验六子程序设计 (29) 一、实验目的 (29) 二、实验题 (29)

实验一利用DEBUG熟悉常用指令的使用 一、实验目的 熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。 二、示例 请分别用一条汇编语言指令完成如下功能:(过程略)。 1.用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。 ADD AL,[BX][SI] 2.用位移量为0520H的直接寻址方式把存储器中的一个字与3412H相加,并把结果送回该存储单元。 ADD WORF PTR [0520H],3412H 三、实验题 1.调试、验证下列指令的结果,已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(BP)=0200H,(SS)=2300H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,(23204)=88H,说明各指令执行完后AX寄存器的内容。要求输入指令,相应存储单元的内容要事先设置,单步 P执行,观察执行结果。 (设置存储器的值)

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

汇编语言程序设计期末考试题 学院(系):学号: 姓名: 计分: 一、项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号 内。每小题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=________

汇编语言程序设计期末复习题及答案

《汇编语言程序设计》期末复习题及答案 一、选择(30题) 1.下列是8位带符号二进制数的补码,其中最大的是( B )。 B、00000001 2.在一段汇编语言程序中多次调用另一段程序,用宏指令比用子程序实现( C ) C、占内存空间大,但速度快 3.数据定义为:EE DB 3,4 CC DW 3456H,6789H 执行指令“MOV CX,WORD PTR EE+1”后,(CX)= ( B ) B、5604H 4.有如下指令序列: MOV AL,95H MOV CL,2 SAR AL,CL 上述指令序列执行后,AL的内容是( D ) D、0E5H 5.设A=18610,B=2738,C=0BB16,把这三个数看成无符号数,则它们之间的关系是( D )D、A

A、ENDP 11.用来存放下一条将要执行的指令代码段地址的段寄存器是( D ) D、CS 12.假定(SS)=1000H,(SP)=0100H,(AX)=5609H,执行指令PUSH AX后,存放数据56H的物理地址是( D ) D、100FFH 13.执行“SUB AX,[BP][DI]”指令,取源操作数时,使用的物理地址表达式是( A ) A、16*SS+BP+DI 14.设AX中有一带符号数8520H,执行“SAR AX,1”指令后,AX中的值是( C ) C、0C290H 15.设(BX)=1234H,(DS)=2000H,(21234H)=5678H,则指令“LEA SI,[BX]”执行后的结果是:( B ) B、SI=1234H 16.测试BL中的数是否为负数,若为负数则转移至AA1处,横线处的指令应为( A ) A、JNE 17.设DF=0,(SI)=20H,(CX)=10,执行“REP LODSW”指令后,SI中的内容是( C ) C、34H 18.在程序执行过程中,IP寄存器中始终保存的是( B ) B、下一条指令的首地址 19.设SP初值为2000H,执行指令“POP AX”后,SP的值是( A ) A、2002H 20.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=( A ) A、1400H 21.汇编源程序时,出现语法错误的语句是( A ) A、MOV DS,1200H 22.将数据1234H存放在存储单元中的伪指令是( C ) C、DATA1 DB 34H,12H 23.下面指令执行后,可能改变AL寄存器内容的指令是( D ) D、AND AL,BL

《机械制造基础技术》综合练习题

《机械制造基础技术》综合练习题 一、单项选择题 1.零件设计图纸上用来表示各表面相互位置所依据的那些点、线、面是————————, 在机械加工及装配过程中所采用的基准是—————————。 (1)工序基准(2)装配基准(3)工艺基准(4)设计基准 2.在尺寸链的组成环中,若某环的变动引起封闭环的同向变动,该环被称为—————— —。若某环的变动引起封闭环的反向变动,该环被称为——————。 (1)减环(2)增环(3)封闭环(4)组成环3.————————、—————————为尺寸精度,——————————、— —————————为位置精度。 (1)长度(2)平行度(3)同轴度(4)高度(5)圆度 4.影响切削加工表面硬化的因素很多,一般说来,塑形变形越大,则————越严重;切 削温度越高,则———————作用加强。 (1)硬化(2)弱化(3)强化(4)中性化 5.使加工表面层达到所需的精度和表面质量而应切除的金属表层称为____________, 相 邻两工序的工序尺寸之差称为——————。平面加工的属于——————,外圆加工的属于————————。 (1)单边余量(2)双边余量(3)工序余量(4)加工余量 6.工件在机床或夹具中定位,其6个自由度被完全限制的定位叫__________ ,其6个自由 度没有被完全限制的定位叫__________ ,其1个或几个自由度被几个定位支承点重复限制的定位叫___________ 。 (1)重复定位(2)完全定位(3)部分定位(4)欠定位 7.在相同工艺条件下,加工一批零件时所产生的大小和方向相同的误差是__________ , 所产生的大小和方向按加工顺序作有规律变化的误差是_________ ,所产生的大小和方向变化无规律的误差是__________ 。 (1)加工误差(2)随机误差 (3)变值系统误差(4)常值系统误差 8.机床的几何精度主要指机床有关部件之间的__________和__________ 。 (1)测量精度(2)位置精度(3)接触精度(4)运动精度 9.抑制机械加工中强迫震动的主要方法是减少或消除__________ 、提高工艺系统的 _________ 等。 (1)激振力(2)强度(3)刚度(4)切削力 10.车床主轴的纯轴向窜动对_______ 和————————的形状精度有影响,主轴的纯径 向摆动对________ 和——————————的形状精度有影响。 (1)车罗纹(2)车端面(3)车圆柱面(可以重复选用) 二、判断题(你认为下列命题是否正确,对正确的打“√”;错误的打“×”) 1.不经选择就能互相替换的零件,就是具有互换性的零件。() 2.零件的实际尺寸愈接近其基本尺寸就愈好。() 3.实际尺寸较大的孔和实际尺寸较小的轴相装配,就形成间隙配合。()

汇编语言程序设计试题A卷

陕西电子信息职业技术学院考试试卷(A) 2011至2012学年度第一学期 期末 班级: 09成教 课程: 汇编语言程序设计 题 号 一 二 三 四 五 合分人 分 数 总 分 (考试时间:120分钟 满分100分) 一、单项选择题(本大题共10小题,每小题2分,共20分) 1. 计算机硬件中最核心的部件是( )。 A. 运算器 B. 主存储器 C. CPU D. 输入 / 输出设备 2. 指令指针寄存器(IP )中存放的内容( )。 A. 指令 B. 指令地址 C. 操作数 D. 操作数地址 3. 寄存器间接寻址方式中,要寻找的操作数位于( )中。 A. 通用寄存器 B. 内存单元 C. 段寄存器 D. 堆栈 4. I/O 端口的编址方式分为统一编址和( )。 A. 独立编址 B. 选择编址 C. 设置编址 D. 控制编址 5. 汇编语言程序中可执行的指令位于( )中。 A. 数据段 B. 堆栈段 C. 代码段 D. 附加数据段 6. 循环结构设计中,要考虑的核心问题是( )。 A. 循环的控制 B. 选择循环结构 C. 设置循环参数初始值 D. 修改循环控制参数 7. 在汇编中用于管理和控制计算机相关功能的指令是( )。 A. 伪指令 B. 机器指令 C. 宏指令 D. 目标指令 班级 姓名 学号 — — — — — — — — — — — — — — — — 密 — — — — — — — — — 封 — — — — — — — — — — 线 — — — — — — — — — — — — — — — —

8. 识别中断源的方法包括查询中断和()共两种类型。 A. 指令中断 B. 故障中断 C. 矢量中断 D. 实时时钟中断 9. CPU与I/O设备之间需要传输的信息通常包括()、状态信息 和控制信息。 A. 编址信息 B. 格式信息 C. 中断信息 D. 数据信息 10. 一般情况下,汇编源程序应由数据段、()和代码段共三个逻 辑段组成。 A. 逻辑段 B. 堆栈段 C. 指令段 D. 类型段 二、名词解释(本大题共5小题,每小题4分,共20分) 11. 微处理器: 12. 寻址方式: 13. 伪指令: 14. 中断源:

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

一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。) 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

机械制造基础考试复习题及答案

机械制造基础考试复习题 及答案 The latest revision on November 22, 2020

《机械制造基础》复习题及答案 一、填空题: 1、金属材料的性能主要包括使用性能和工艺性能两个方面。 2、金属材料在外力作用下所表现出来的性能称为力学性能。 3、强度是指金属材料在静载荷作用下,抵抗_变形__和_断裂__的能力。 4、硬度可通过硬度试验测定,常用的有布氏硬度和洛氏硬度两种。 5、金属材料的常用强度指标为屈服点和抗拉强度。 6、金属的结晶包括晶核的形成和晶核的长大。 7、通常把金属从液态向固态的转变称为结晶。 8、金属的品格类型主要有体心立方晶格、面心立方晶格和密排六方晶格三大类 9、通常固态合金中形成固溶体、金属化合物和机械混合物三类组织。 10、珠光体是铁素体和渗碳体组成的机械混合物。 11、铁素体碳在α-Fe中固溶体。 12、金属在固态下晶格类型随温度(或压力)发生变化的现象称为同素异构转 变。 13、金属材料热处理主要有钢的普通热处理和钢的表面热处理。 14、常用的两种表面热处理方法是_表面淬火和_化学热处理___。 15、普通热处理通常是指对工件进行整体的热处理。

16、普通热处理按加热温度和冷却方法不同,常用的有退火、正火、淬火和回 火等。 17、热处理时须将钢加热到一定温度,便其组织全部或部分转变为奥氏体。 18、钢件的加热温度主要由钢的化学成分确定。 19、常见的退火方法有.完全退火、球化退火和去应力退火三种。 20、常见的淬火方法有-单介质淬火、双介质淬火、马氏体分级淬火和贝氏体等 温淬火。 21、根据钢的热处理原理可知,当过冷奥氏体快速冷却至Ms点以下时,会发生 马氏体_转变。 22、调质的热处理工艺是淬火+高温回火。 23、常见的化学热处理是渗碳、渗氮、碳氮共渗。 24、按用途不同碳素钢可分为碳素结构钢和碳素工具钢。 25、低合金结构钢是在低碳钢的基础上加入少量合金元素炼成的。 26、.常用的刃具钢有低合金工具钢和高速工具钢-。 27、在合金调质钢中加入铬、锰、镍等合金元素,主要是为了增加钢的淬透 性。 28、铸铁是含碳量大于2.11%的铁碳合金. 29、碳在铸铁中的存在形式有石墨和渗碳体。 30、灰铸铁中按石墨存在的形态不同分灰口铸铁、可锻铸铁、球墨铸铁、蠕墨铸铁__。

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

【汇编语言程序设计】试题及答案合集

《汇编语言程序设计试题及答案》合集 汇编语言程序设计试题及答案 1.对于有符号的数来说,下列哪个值最大(D) A:0F8H B:11010011B C:82 D:123Q 2.下列有关汇编语言中标号的命名规则中,错误的是(D) A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符 C:?和$不能单独作为标号 D:.号不可位于标号首 3.8088/8086存储器分段,每个段不超过(D ) A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式(B)A:寄存器寻址B:相对基址变址寻址 C:变址寻址D:基址变址寻址 5.若AX= - 15要得到AX=15应执行的指令是(A ) A.NEG AX B.NOT AX C.INC AX D.DEC AX 6.8086/8088系统执行传送指令MOV时( A) A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 7.若要求一个操作数中的若干位维持不变,若干位置?1?,可以使用(B)A:NOT B:OR C:AND D:XOR 8.下列指令中段默认为堆栈段的是( C) A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB [BX],[BP][DI] D. MOV DX,[1000H] 9.关于8086/8088微机系列,下列说法哪个是正确的(D) A:一个存储单元由16个二进制位组成,简称字。

B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C:在内存空间中,可以无限分配段,且段的大小不受限制。 D:段与段之间可以邻接,也可以重叠。 10.下列关于堆栈的说法,错误的是(D) A:以?先入后出?为原则。 B:栈区最高地址单元的前一个单元为栈底。 C:运行中SP寄存器动态跟踪栈顶位置。 D:压栈和弹出都是以字节为单位。 11.表示过程定义结束的伪指令是( A) A.ENDP B.ENDS C.END D.ENDM 12.BUF1 DB 3 DUP(0,2 DUP (1,2),3) COUNT EQU $-BUF1 符号COUNT等价的值是( B) A.6 B.18 C.16 D.9 13.下列标志位中,可以用来判断计算结果正负的是(B) A:PF B:SF C:DF D:OF 14.下列指令正确的是( CD) A. MOV [100H], [BX] B.MOV DS, ES C. ADD V[BX], CX D.MOV AX, 34H 15.下列哪个寄存器是属于指针寄存器(C) A:SI B:DX C:SP D:ES 二、填空题 (每小题4 分,共 20 分) 1.下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出) FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _LEA SI,FLD______ MOV CX, 8 XOR AX, AX

汇编语言程序设计课后习题解答宋人杰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

机械制造基础重点例题教学内容

090? 【例6】:如图所示零件简图,其内、外圆均已加工完毕,外圆尺寸 为?0.1?0.05?0.3605,该尺mm。现铣键槽,其深度要求为mm,内孔尺寸为? mm00可直接测量哪些尺寸?试标出它们的尺为检验槽深是否合格,寸不便直接测量,寸及公差。 。则L 设此尺寸为【题解】:可直接测量键槽底部至内孔上母线的尺寸。画出尺寸链如上图右,判断闭环、增环和减环如下——00.3?455,增环为,其余为减环。闭环为0.05?0具体解法略去。 【例7】:如图所示的轴套类零件的外圆、内孔及轴向定位基准,B和A求以现

铣缺口,端面均已加工, 为径向定位基准时的工序尺寸。M和N 分析:要找出轴向和径向铣缺口时的设计基准,然后求解。面,而径向的设A 【题解】:根据加工要求及零件图知,轴向的设计基准是M计基准是轴线。0.2?。A面定位时,定位基准与设计基准重合,则工序尺寸为(1)以1000。(2)以M定位时,定位基准与设计基准重合,则工序 尺寸为100.5?B(3)以为轴向定位基准时,设工序尺寸为x做出尺寸链如下 0.2?10闭环为0 60+0 减环为 其余为增环

计算略。 为径向定位基准时,设工序4)以N(,做出尺寸链如下尺寸为y010闭环为0.5? 020减环为0.05? y 增环为 尺寸计算略。 说明:此类型的题,当定位基准与设计基准不重合时,需用调整法加工,让以设计基准设计基准与定位基准重合,确定工序尺寸。而在画出的尺寸链图中,到加工面间的那个尺寸就是闭环。 ,,内孔直径为【例8】工件定位如图所示。已知:工件外径为 )(1。本工序加工键槽,要求保证尺寸A。试分析计算外径与内孔的同轴度为2e)采取什么定位方案可使的最大变化量是多少?(2该定位方案引起工序尺寸A 工序尺寸A的变化量最小? 【题解】:先计算定位误差Td TDe?2无公共误jwjb和?? jw= 由于? ?1()jb= ?22sin2差因素?dw= ?jb+ ?jw ∴ jb?2)若以D的上母线为定位基准,则定位基准与设计基准重合,此时(为0,所以可采取此方法。都首先考虑将定位基准与设计说明:一般对于不满足加工精度的改进方法,基准重合。 :在圆柱工件上铣缺口的定位如图所示,试分析该定位方案能否满【例9】足工序要求?若不能满足,提出改进方法。

汇编语言程序设计实验篇emu

1.汇编语言程序设计实验篇 1.1.汇编系统软件简介 Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。 1.1.1创建程序 https://www.wendangku.net/doc/141473996.html, TEMPLATE程序 本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。 在“choose code template”对话框中,选择“COM template-simple and tiny executable file format, pure machine code.”后,单击按钮。

在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地址为100h。 输入全部指令后,单击按钮,保存相应的程序段。 2.EXE TEMPLATE程序 本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。

在“choose code template”对话框中,选择“EXE template-advanced executable file.header: relocation, checksum.”后,单击按钮。 在如图所示的编辑界面中,已经可以给出了源程序的框架,包含数据段、堆栈段和代码段的定义以及必要的功能调用等,在“add your data here”和“;add your code here”部分可以分别输入相应的变量定义和指令。

全国1月高等教育自学考试汇编语言程序设计试题历年试卷

做试题,没答案?上自考365,网校名师为你详细解答! 全国2005年1月高等教育自学考试 汇编语言程序设计试题 课程代码:02321 一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填 在题干的括号内。每小题1分,共16分) 1.已知某操作数的物理地址是2117AH,则它的段地址和偏移地址可能是( )。 A.2025∶0F2A B.2108∶00EA C.2000∶017A D.2100∶117A 2.某程序装入内存后,DS=1200H,CS=1400H,则程序中数据段中的数据最多是( )字节。 A.2K B.4K C.8K D.16K 3.以寄存器DI间接寻址的存储器字节单元内容加1的指令是( )。 A.INC [DI] B.INC DI C.INC BYTE PTR[DI] D.ADD [DI],1 4.有语句:COUNT EQU 256,下列四种叙述中,正确的是( )。 A.COUNT是变量 B.COUNT占用一个字节存储单元 C.COUNT是符号常数 D.COUNT占用二个字节存储单元 5.下面指令中,源操作数的寻址方式为立即寻址的是( )。 A.MOV AX,OFFSET A B.MOV AX,A C.MOV AX,A+1 D.MOV AX,A[BX] 6.已知SP=2110H,执行POP AX后,SP寄存器的值是( )。 A.2111H B.2112H C.210FH D.210EH 7.将AX中有符号数除以2的正确指令是( )。 A.SHR AX,1 B.SAR AX,1 C.ROR AX,1 D.RCR AX,1 8.比较BX和SI中的两个存储器地址,若BX≥SI转向HIGH的正确指令是( )。 A.JAE HIGH B.JBE HIGH C.JEG HIGH D.JLE HIGH 9.指令SCASB操作数的段地址一定在( )寄存器中。 A.CS B.DS C.ES D.SS 10.有数据定义语句BUF DW 0ABH,1,10 DUP(3 DUP(1,0),2)汇编后,为变量BUF分配 的存储单元字节数是( )。 A.48H B.90H C.120 D.60 11.下列指令执行后,不改变AL寄存器内容的指令是( )。 1

汇编语言程序设计复习2(带答案)1

汇编语言程序设计练习题2 一、单项选择题(答案BDDBA BDADC CCAC CBBDA BDADA BCCB ) 1、使计算机执行某种操作的命令是( ) A.宏指令 B.指令 C.伪指令 D.语句 2、某存储单元的物理地址是12345H,可以作为它的段地址有()。 A.2345H B.12345H C.12340H D.1234H 3、8088/8086存储器分段,每个段不超过() A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4、计算机能直接识别并执行的语言是( ) A.汇编语言 B.机器语言 C.高级语言 D.低级语言 5. 8086/8088系统执行传送指令MOV时() A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 6、以下各个指令中正确的是()。 A. MOV CS, DX B. MOV DS, BP C. IN 20H,AL D. MOV AH, BX 7、下列对OUT指令的叙述正确的是()。 A. 实现从端口中读出数据 B. 能直接访问的端口范围是0~1KB C. 能访问的端口为64KBit D. 只能用DX做为间接寻址的寄存器 8、已有汇编语句“V AR EQU 1220H”,则语句“mov AX, V AR”中源操作数的寻址方式为()。 A. 立即寻址 B. 直接寻址 C. 寄存器间接寻址 D. 基址寻址 9、与MOV BX,OFFSET DATA1指令完全等效的指令是()。 A.MOV BX,DATA1 B.LDS BX,DATA1 C.LES BX,DATA1 D.LEA BX,DATA1 10、下列指令中段默认为堆栈段的是() A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB BX,[BP][DI] D. MOV DX,[1000H] 11、已知DS=2000H,ES=1000H, SI = 0800H,内存10880H开始的两个单元中存放5678H,内存20880H开始的两个单元中存放8765H,则语句“LEA BX,[SI+80H]”执行后BX 的值为()。 A. 5678H B. 1000H C. 0880H D. 8765H 12、汇编结束语句有()种格式,为()。

相关文档 最新文档