一、1.单项选择题
0. 以下集成块型号中不属于单片机型号的是( )
A.8051AH
B.83C52JA
C.8096BH
D.80486DX
1. 用16位(bit)二进制能够表示的有符号数的范围是( )
A.-3276~32767
B.-65535
C.-32768~32768
D.-32767~32767
2. 算式
的C语言表达式是( )
A.1/2/x+y
B.1/(2/x+y)
C.1/(2/x)+y
D.1/2/(x+y)
3. 执行以下循环语句后,正确的结果是( ) i=0: while(i++<5);
A.i=0
B.i=4
C.i=5
D.i=6
4. 执行以下循环语句后,正确的结果是( ) for(s=0,i=0;i<5;i=i+2)s=s+i;
A.s=0
B.s=2
C.s=6
D.s=12
5. 关闭文件语句fclose(fp);中的标识符fp的类型是( )
A.File*
B.FILE*
C.file
D.File
6. CPU每取1字节的指令操作码后,有一个寄存器的内容自动加1,这寄存器就是( )
A.ACC
B.SP
C.PSW
D.PC
7. 51系列单片机内部数据存储器中的位寻址区(布尔处理区)的地址范围为( )
A.20H~2FH
B.00H~0FH
C.30H~37H
D.10H~1FH
8. 8051系列单片机内部有很强的中断功能,它共有中断源( )
A.3个
B.4个
C.5个
D.6个
9. 要进行出栈操作,其步骤正确的是( )
A.先从SP指示的栈顶单元读出数据,然后SP内容减1
B.先从SP指示的栈顶单元读出数据,然后SP内容加1
C.先将SP内容加1,然后从其指示的单元读出数据
D.先将SP内容减1,然后从其指示的单元读出数据
10. 8751单片机内有4KB EPROM,如果从内部EPROM取指令必需将1个引脚作适当连接,即( )
11. 程序存储器数据传送,采用的助记符是( )
A.MOV
B.MOVX
C.MOVC
D.PUSH
12. 已知累加器(A)=87H,进位标志(CY)=0,执行RRC A指令后,(A)和(CY)的内容分别为( )
A.0EH,1
B.0FH,0
C.C3H,0
D.43H,1
13. 8031单片外部中断1的中断服务程序入口地址是( )
A.0000H
B.0003H
C.000BH
D.0013H
14. RS232串行口如传送一个二进制位所需的时间为0.208mS,则波特率为( )
A.9600
B.4800
C.2400
D.1200
15. 8031单片机扩展外部存储器时,P0口用作( )
A.数据总线
B.I/0口
C.地址总线
D.兼作数据和地址总线
二、2.填空题
0. 表达式5/3的值是______。
1. 已知x=5,y=6,表达式x>2‖y<5的值是______。
2. 以下程序是求100以内能被5和被7同时整除的所有数之和。
main()
{
int i=0,s=0;
while(i<100)
if(______)
s=s+i++;
printf("s=%d ",s);
}
3. 程序的功能是,在10个评委中,去除一个最高分和一个最低分,然后求平均分。
main()
{
int a[10],i,max,min;
float s=0:
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
s=s+a[i];
}
max=min=a[0];
for(i=1;i<10;i++)
{
if(max max=a[i];
if(min>a[i])
min=a[i];
}
s=______;
s=s/8;
printf("平均分是:%f",s);
}
三、3.改错题
0. main()
{
int x,y;
scanf("%d",x);
y=x*x;
printf("y=%d ",y);
}
错误:______
改正:______
1. 以下程序功能是输入一个学生的成绩,如果输入的成绩不在0~100之间,则显示出错信息。
main()
{
int s;
scanf("%d",&s);
if(100>=s>=0)
printf("输入的成绩是%d ",s);
else
printf("输入成绩出错");
}
错误:______
改正:______
2. #include"stdio.h"
main()
{char a[10],*pa;
scanf("%s",pa);
printf("%s ",pa);
}
错误:______
改正:______
3. #include"stdio.h"
struct date
{int year=2000;
int month;
int day;
};
main()
{struct date d;
d.month=1;
d.day=31;
printf("%d-%d-%d",d.year,d.month,d.day);
}
错误:______
改正:______
四、4.程序阅读题
0. 写出程序运行结果
main()
{
int i,j;
for(i=0;i<5;i++)
{
for(j=5;j-i>0;j--)
printf("*");
printf(" ");
}
}
运行结果为: ______
1. #include"string.h"
#include”stdio.h”
main()
{
char str1[50],str2[50],str3[50];
gets(str1);
gets(str2);
if(strcmp(str1,str2)<0)
{
strcpy(str3,str1);
strcpy(str1,str2);
strcpy(str2,str3);
}
puts(str1);
puts(str2);
}
运行程序时输入的字符串为:"ABCD"和"abcd"
程序运行结果为:______
2. #include
int f=1;
int fac(int n)
{f=f*n;
return f;
}
main()
{int i;
for(i=1;i<=4,i++)
{printf("%d!=%d ",i,fac(i));}
}
程序运行结果为: ______
3. #include"stdio.h"
char*fun(s,c)
char*s,c;
{char*p=NULL;
while(*s!="