一、1.单项选择题
0. 通常使用后缀表明数的各种进制,以下叙述不正确的是( )
A.后缀B:二进制
B.后缀H:十六进制
C.后缀D:十进制
D.后缀A:八进制
1. 大写字母"A"的ASCII码值为65,则字母"G"的ASCII码是( )
A.60
B.70
C.71
D.72
2. 以下有关C语言的说法中,正确的叙述是( )
A.C语言不但具备高级语言特征,还具备部分汇编语言的功能
B.C语言是一种模块化和结构化的程序设计语言,但程序只能有一个函数组成
C.C语言具有多种多样的数据类型,任何其他语言所有的数据类型,C语言都有
D.C什与C语言不兼容,因而用户很难从面向过程的程序设计过渡到面向对象的程序设计
3. 已知float x[20];,则下面表达式正确的是( )
A.x[20]=x[1]+x[2]
B.x[2]=x[2]+x[3]
C.x[0]=x[-1]+x[1]
D.x[18]=x[20]-x[2]
4. 已知char s1[20]="china",char s2[20]="Beijing",执行语句pine("%s",strcat(s1,s2));后,则在屏幕上显示的内容是( )
A.China
B.ChinaBeijing
C.Beijing
D.BeijingChina
5. 如果要把数据写入二进制文件"filel.dat"中,打开文件的正确表达是( )
A.fopen("filel.dat","w")
B.fopen("file1.dat","a")
C.fopen("fiel.dat","rb")
D.fopen("file1.dat","wb")
6. 单片机上电或按手动复位键,都可复位,使PC和大多数特殊功能寄存器(SFR)的初值为零。但有一个SFR为07H,它是( )
A.ACC
B.SP
C.B
D.PSW
7. 8031单片机片内RAM中4q-2:作寄存器区的地址范围为( )
A.08-17H
B.20H-2FH
C.60H-7FH
D.00H-1FH
8. 8031单片机访问片外存储器时,其地址总线由并行口提供,分别为( )
A.P0口——低8位地址,P1口——高8位地址
B.P0口——低8位地址,P2口——高8位地址
C.P0口——高8位地址,P1口——低8位地址
D.P0口——高8位地址,P2口——低8位地址
9. 关于传送指令的性质,以下说法中,不正确的是( )
A.片内外ROM数据传送,均用MOVC指令
B.片内外RAM数据传送,均用MOVX指令
C.传送指令一般不影响PSW中标志位,只有改变累加器A的值时除外
D.堆栈操作指令和数据交换指令,均属数据传送类指令
10. 执行下列指令组后,(A)的内容为( ) MOV A,#35H ANL A,#0FH
A.0FH
B.05H
C.3F
D.35H
11. 执行长调用指令LCALL addr16,它的操作是( )
A.将断点地址进栈保存(保护断点)
B.将子程序地址送PC(构成目的地址)
C.保护断点和构成目的地址
D.保护断点、保护现场(即所用到的寄存器内容入堆栈)及构成目的地址
12. 在地址为4400H开始存放无条件转移指令SJMP 30H,执行该指令后,(PC)的内容为( )
A.4430H
B.4370H
C.43D2H
D.4432H
13. 8031单片机定时器TO的中断服务程序入口地址是( )
A.0000H
B.0003H
C.000BH
D.0013H
14. RS-232接口表示逻辑1时,信号电平为( )
A.-12V
B.-1V
C.5V
D.12V
15. 8K字节的EPROM 2764,地址线的根数应为( )
A.13根
B.14根
C.15根
D.16根
二、2.填空题
0. 已知y=1,执行语句x=y++;后,则x的值是______。
1. 表达式胁10&&!(60<20)的值是____________。
2. 以下程序的功能是判断输入的整数是否是素数,试在程序空白处填上适当的内容。
Main()
{
int m,i;
scan("%d",&m);
for(i=2;i<m;i++)
if(m%i==0)
______;
if(i<m)
prind("%d是素数 ",m);
else
prind("%d不是素数 ,",m);
}
3. 以下程序的功能是在100个随机数中求其中最大值,试在程序空白处填上适当的内容。
WSnclude"stdlib.h"
main()
{
int i,max,a[100];
for(i=0;i<100;i++)
a[i]=rand();
max=a[0];
for(i=1;i<100;i++)
if(______)
max=a[i];
printf("max=%d ",max);
}
4. 8051单片机内部有两个______位定时器/计数器,可完成______功能。
5. 片内RAM21 H单元的最低位(D0)的位地址为_______,累加器ACC(直接地址为EOH)的最高位D7的位地址为______。
6. 指令MOV A,#41H,其源操作数的寻址方式为______。指令MOV A,41H其源操作数的寻址方式为______。
7. MCS-51单片机中的堆栈是在______区中开辟的一个区域,其数据的存取遵守______的原则。
8. 已知堆栈指针内容(SP)=30H,执行下列指令后,
MOV 30H,#16H
POP 40H
则(SP)=______;(40H)=______。
9. 8031单片机时钟频率12MHz,如将T1设定为方式2,定时时间200μS,则TH1应为______。
10. 8031单片机若要求将外中断1和定时器0设置成高优先级,其余为低优先级,所用的字节操作指令为______。
IP寄存器各位内容
11. EPROM中的信息可采用______照射的方法擦除。
三、3.改错题
0. main()
{
int r=5;
float s;
s=3.14*r*r;
prinff("s=%d ",s)
}
错误 ______
改正 ______
1. 以下程序是计算分段函数的值
main()
{
float x,y;
scanf("%f",&x);
if(x<=0)
y=x*x;
else if(0<x<=1)
y=1/x;
else y=2*x;
printf("%f ",y);
}
错误 ______
改正 ______
2. #include<stdio.h>
#include<string.h>
main()
{char a[10],*pa="012345678";
a=pa;
printf("%s ",a);
}
错误______
改正 ______
3. # include "stdio.h"
siruct student
{int number;
char name[10]=" ";
};
main()
{stmct student s;
s.number=12345;
printf("%d ",s.number);
}
错误 ______
改正 ______
四、4.程序阅读题
0. 写出程序运行结果
main()
{
int a,b,c;
scanf("%d%d",&a,&b);
while(o!=0)
{
c=a%b;
a=b;
b=c;
}
prine("运行结果是:%d ",a);
}
运行时变量a、变量b的输入值分别为:24 9,则程序运行结果是:______
1. main()
{
int a[5],s,i;
for(i=0,s=0;i<5;i++)
{
scanf("%d",a[i]);
s=s+a[i];
}
s=s/5;
for(i=0;i<5;i++)
if(a[i]>s)
printf("%6d",a[i]);
prind("\n");
}
程序运行时输入的5个数为:55 60 65 70 75程序运行结果是:______
2. #include<stdio.h>
#define N 10
int table[N*N];
void muld()
{int i,j;
for(i=0;i<N;++i)
{for(j=0;j<N;++j)
{table[i*N+j]=i*j;}
}
}
void disPlay()
{int i,j;
for(i=1;i<5;++i)
{for(j=1;j<N;++j)
{printf("%3d",table[i*N+j];}
printf(" ");
}
}
void main()
{muld();
display();
}
答:______
3. #include"stdio.h"
void main()
{int x=7,y=90,z[10]={0,11,22,33,44,55,66,77,88,99};
iht *p1=&x,*p2=z,*p3=&z[5];
printf("%d%d%d%d ",*p1,*p2,*p3,*(p3+1));
++p2;p3++;
printf("%d%d%d ",*p1,*p2,*p3);
p2=z+7;p3=Z+8;
printf("%d%d%d ",*p1,*p2,*p3);
printf("%d ",*(p1=p2-5));
}
答:______
五、5.程序设计题
0. 某一农场有一头刚出生的小母牛,这头母牛自第4年起每年生一头母牛,假设所有的母牛都健康地活着,而且都是从第4年起每年生一头母牛,请计算到第n(n<30)年该农场共有多少头母牛?要求n在程序执行时输入(根据提示编写funcow函数)。
提示:农场各年的牛数存放于名为COW的数组中,则:
cow[0]=0, cow[1]=1, cow[2]=1, cow[3]=1,
cow[n]=cow[n-1]+cow[n-3]。
#include"stdio.h"
void main()
{int fun cow(int);
int n;
printf("请输入年数(大于3,小于30):");
scanf("%d",&n);
if(n>3&&n<30)
{printf(" 第%d年共有%d头母牛。 ",n,funcow(n));}
else
{printf(输入年数不在限定的范围内!”);}
}
/*请根据提示编写。funcow函数,funcow函数定义如下:*/
六、6.改错题-单片机原理与接口技术
0. 把A中的补码数转换为原码,仍存于A中的子程序如下:
TR:JNB ACC.7,DONE
CPL A
INC A
ANL A,#80H
DONE:RET
错误 ______
改正 ______
1. 8031单片机时钟频率为12MHz,TO方式1,50mS定时的初始化程序如下:
MOVTMOD,#10H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
MOV IE,#82H
IE寄存器各位内容:
错误 ______
改正 ______
七、7.程序阅读题-单片机原理与接口技术
0. 已知:(30H)=23H,(31H)=13H,(40H)=72H,(41H)=08H
执行:
MOV A,30H
ADD A,40H
DA A
MOV 30H,A
MOV A,31H
ADDC A,41H
DA A
MOV 31H,A
则结果为:(30H)=______H,(31H)=______H,(40H)=______H,(CY)=______。
1. 如8031单片机时钟频率为12MHz,运行以下程序后,P1.0口将产生连续的、频率为______Hz的______波。
ORG 0000H
LIMP BEG
ORG 001BH
MOV TH1,#9EH
MOV TL1,#58H
CPL P1.0
RETI
BEG:MOV FMOD,#10H
MOV TH1,#9EH
MOV TL1,#58H
SETB TR1
MOV IE,#88H
SJMP$
IE寄存器各位内容:
八、8.程序设计题-单片机原理与接口技术
0. 编写两个4字节无符号数相减的程序。被减数存放在片内RAM 30H开始的数据区,减数存放在40H开始的数据区(均为低位在前),差值存回30H开始的存储单元,试补全下列程序。
MOV R0,#30H
MOV R1,#40H
MOV R3,#04H
SJMP $
九、9.微型计算机原理与接口技术-应用题
0. 如题43图所示,某8031单片机实验装置中的数模转换部分的电路,P2.7连接DAC0832的
端,P2.6~P2.0作为其他芯片的片选线(选DAC0832时必须为1)。以下程序段用查表的方式,在Aout端产生一正弦波(每个周期有40个数据)。请填满程序中的缺少部分。
题43图
MOV P2,* (1) H
LP0:MOV R4,#40
MOV DPTR,#(2)
LP1:CLR A
MOVC A, (3)
(4) @R0,A
ACALL DELAY ; 延时子程序
INC (5)
DJNZ R4, (6)
SJMP (7)
DELAY:MOV R6,#80H
DEL1:DJNZ R6,DEL1
(8)
TABL:DB 80H,8CH,98H,OA5H,………
DB………
DB 5AH,67H,73H,7FH
(1)______;(2)______;
(3)______;(4)______;
(5)______;(6)______;
(7)______;(8)______。