2022年河北专升本计算机全真模拟一(C和微机接口)
宋丽丽 希赛网 2021-12-30 11:04:53
第一部分:C 语言程序设计(满分 150 分)
一、单项选择题(本大题共 25 小题,每小题 2 分,共 50 分。)
1. 以下正确的 C 语言标识符是_。
A. 2AB
B. a2.c
C. _ab3
D. #ab
2. C 语言的基本构成单位是_。
A. 函数
B. 函数和过程
C. 超文本过程
D. 子程序
3. 若 x 为 int 型变量,则执行以下语句后,x 的值为_。
x=6; x+=x*x;
A. 16
B.42
C. 52
D. 6
4. 不是 C 语言字符常量的是_。
A. “h”
B. ‘h’
C. ‘\0’
D. ‘\n’
5. 字符串”\\AB\01C\\”的长度是_。
A. 3
B. 9
C. 6
D. 4
6. 假定 w、x、y、z、m 均为 int 型变量,有如下程序段: w=1;x=2;y=3;z=4; m=w m=(m<z)?m:z; p=”” 的值是_。
A. 4
B. 3
C.2
D. 1
7. 执行下面程序后,运行结果是_。
#include
void main( )
{ int x=49,y=1;
if (x%3==0 && x%7==0)
{ y+=x;printf(“y=%d\n”,y);}
else
{y=x;printf(“y=%d”,y);}
return 0;
}
A. y=49
B. y=43
C. y=42
D. y=1
8. 条件语句 while(x){…}中条件表达式 x 的等价写法是_。
A. x==0
B. x!=0
C. x==1
D. x!=1
9. 如有定义语句 int a[]={1,8,2,8,3,8,4,8,5,8}; ,则数组 a 的大小是_。
A. 10
B. 11
C.8
D. 不定
10. 若有语句 int *point,a=4;和 point=&a;下面均代表地址的一组选项是_____。
A.a,point,*&a
B.&*a,&a,*point- 2 –
C.*&point,*point,&a
D.&a,&*point ,point
11. 为表示关系 x≥y≥z,应使用 C 语言表达式_。
A. (x>=y)&&(y>=z)
B. (x>=y)AND(y>=z)
C. (x>=y>=z)
D. (x>=y) & (y>=z)
12. 下列运算符中,要求运算对象必须是整数的是_。
A. /
B. %
C. *
D. !
13. 若已定义 x 和 y 是整型变量 x=3;则表达式 y=2.75+x/2 的值是_。
A. 5.5
B. 3.75
C. 3
D. 4.0
14. 表达式 1!=2 && 3==5 的值是_。
A. True
B. False
C. 0
D. 1
15. 分析下面函数,以下说法正确的是_。
swap(int *p1,int *p2)
{ int *p;
*p=*p1; *p1=*p2; *p2=*p;
}
A.交换*p1 和*p2 的值
B.正确,但无法改变*p1 和*p2 的值
C.交换*p1 和*p2 的地址
D.可能造成系统故障,因为使用了野指针
16. 已知有变量定义 double x=1.6;int a=78; 正确的输出语句_。
A. printf(“%f%d\n”,x,a);
B. printf(“%f%f\n”,x,a);
C. printf(“%d%f\n”,x,a);
D. printf(“%d%d\n”,x,a);
17. 下述 for 循环语句_。
int i,k;
for(i=0,k=-1;k=1;i++,k++) printf(“* * * *”);
A 判断循环结束的条件非法
B 是无限循环
C 只循环一次
D 一次也不循环
18. 若 double x ,*p; 则正确的赋值表达式是_。
A p=&x
B p=x;
C *p=&x;
D *p=*x
19. 若 x=0,y=3,z=3,以下表达式值为 0 的是_。
A !X
B.x<y? p=”” 1:0
C. x%2&&y==z
D. y=x||z/3
20. 以下程序段_。
int x=-1;
do
{ x=x*x; } while (!x);
A.无限循环
B.循环执行两次
C.循环执行一次
D.有语法错误
21. 执行下面程序段后,k 的值是_。
int i,j,k;
for(i=0,j=10;i<j;i++,j–)
k=i+j;
A. 9
B. 11
C.8
D. 10
22. 在执行 int a[][2]={1,2,3,4,5,6};语句后,a[1][1]的值是_。
A 4
B 3
C 2
D 1- 3 –
23. 若有定义:int a[3][4]; ,
不能表示数组元素 a[1][1]。
A. *(a[1]+1)
B. *(&a[1][1]) C. (*(a+1)[1])
D. *(a+5)
24. 有以下定义的函数,函数值的类型是_。
void print_star(){printf(“*********\n”);}
A int
B float
C double
D void
25. 当调用函数时,实参是一个数组元素,则向被调函数传递的是_。
A.数组的长度
B.数组的首地址
C.数组元素的值
D.数组每个元素中的值
二、程序阅读题(本大题共 5 小题,每小题 5 分,共 25 分。)
1. _________________。
#include
void main()
{
int a1,a2,b1,b2;
int i=5,j=7,k=0;
a1=!k;
a2=i!=j;
printf(“a1=%d,a2=%d\n”,a1,a2);
b1=k && j;
b2=k||j;
printf(“b1=%d,b2=%d\n”,b1,b2);
}
2. _________________。
#inlcude
#include
void main()
{
char str[3][80],c[80];
int i;
for(i=0;i<3;i++)
gets(str[i]);
strcpy(c,str[0]);
for(i=1;i<3;i++)
if(strlen(c)<strlen(str[i]))
strcpy(c,str[i]);
puts(c);
}
输入:abcde
xyz
cdefghijk
3. _________________。
#include
void main()
{ int i=1;
while (i<=5)
if (++i%3!=2) continue;
else printf(“%d”,i);
printf(“\n”);
}
4. _________________。
#include
int x;
void main()
{ x=5;
cude();
printf(“%d\n”,x);
}
cude()
{ x=x*x*x; }
5. _________________。
#include
void main()
{ int *p1,*p2,*p,a,b;
a=12;b=34;
p1=&a;
p2=&b;
if(a<b)
{p=p1;p1=p2;p2=p;}
printf(“a=%d,b=%d\n”,a,b);
printf(“max=%d,min=%d\n”,*p1,*p2);
}
三、程序填空题(每空 5 分,共 35 分。)
1. 将一个数组中的元素按逆序重新存放。
例如原来的顺序为:8,5,7,4,1, 要求改为:1,4,7,5,8。
#define N 5
void main()
{ int a[N]={8,5,7,4,1},k,s;
printf(“初始数组:\n”);
for (k=0;k<n;k++)
printf(“%4d”,a[k]);
for (k=0;k<_____________;k++)
{ s=a[k]; a[k]=_______;_________=s; }
printf(“\n交换后的数组:\n”);
for (k=0;k<n;k++)>
printf(“%4d”,a[k]);
}
2. 写一函数,实现两个字符串的比较。即自己写一个 strcmp 函数:compare(s1,s2)。如果s1=s2,返回值为 0,如果 s1≠s2,返回它们二者第一个不同字符的 ASCⅡ码差值(“BOY”与”BAD”,第二个字母不同,”O”与”A”之差为 79-65=14)。如果 s1>s2,则 输出正值,如 s1<s2,则输出负值。
#include
compare(char *p1,char *p2)
{ int i;
i=0;
while( ____)
if(*(p1+i++)==’\0′)_____;
return(____);
}
void main()
{ int m;
char str1[20],str2[20],*p1,*p2;
printf(“please input string by line:\n”);
scanf(“%s”,str1);
scanf(“%s”,str2);
p1=_____;
p2=str2;
m=compare(p1,p2);
printf(“the result is:%d\n”,m);
}
四、编程题(本大题共 2 小题,第小题 20 分,共 40 分。)
1.输出 100-200 之间所有素数。
要求:
(1)编写一个判断一个整数是否为素数的函数:void prime(int n),若是素数则输出,否则不输出
(2)主函数中调用 prime 函数,输出 100-200 之间所有素数说明:素数是指除了 1 和该数本身之外,不能被其它任何整数整除的数
2. 有 n 个学生,每个学生的数据包括学号(num),姓名(name[20]),性别(sex),年龄(age),三门课的成绩(score[3])。要求在 main 函数中输入这 n 个学生的数据, 然后调用一个函数 count,在该函数中计算出每个学生的总分和平均分, 然后打印出所有各项数据(包括原有的和新求出的)。
第二部分:微机原理与接口(含汇编语言)(满分150分)
一、选择题(每小题 3 分,共 45 分)
1.在 8086/8088 中,ES 是()。
A.段寄存器
B.状态标志寄存器
C.通用寄存器
D.数据寄存器
2.8088 是准 16 位微处理机,它的内部结构是几位,对外的数据线是几位()。
A.16,l6
B.16,8
C.8,8
D.8,16
3.堆栈指针 SP 的内容是()。
A.栈顶单元内容
B.栈顶单元地址
C.栈底单元内容
D.栈底单元地址
4. 在 8086 微机系统中,完成对指令译码操作功能的部件是()。
A.BIU
B.EU
C.SRAM
D.DRAM
5.已知 X,Y,M,N 均为无符号数,令 X=10101010,Y=01100010,M=10100010,N=01010100,Z=X+Y,K=M+N,则下列说法正确的是()。
A.Z 无溢出,K 无溢出
B.Z 有溢出,K 无溢出
C.Z 无溢出,K 有溢出
D.Z 有溢出,K 有溢出
6.当 CPU 响应可屏蔽中断时,若将 CS 和 IP 压入堆栈,需执行()个总线周期。
A.1
B.2
C.4
D.6
7. EPROM 是指()。
A.随机读写存储器
B.可编程的只读存储器
C.只读存储器
D.可擦除的可编程只读存储器
8.若 A=01100001, B=11001011,则 A⊕B=()。
A.00100001
B.10101010
C.01000001
D.01101011
9.若将 BL 寄存器中的 D1、D3、D4 和 D6 位取反,应使用()。
A.AND BL,5AH
B.OR BL,5AH
C.XOR BL,5AH
D.TEST BL,5AH
10 8086/8088CPU 响应可屏蔽中断的条件是什么?()
A.INTR=l,IF=1
B.INTR=0,IF=1
C.INTR=l,IF=0.
D.INTR=0,IF=0
11 有如下定义语句:BVAR DB 101B,7,‘D’,0FH,-1,2×56,则 BVAR+4 内存单元中的字节内容()。
A.44H
B.0FH
C.FFH
D.70H
12. 若一 SRAM 芯片的容量是 1024×8 位,除电源和接地线外,该芯片的其它引脚最少应为()根。
A.23
B.22
C.21
D.20
13.可编程中断控制器 8259A 中 IRR 用于()。
A.用来存放对各级中断请求的屏蔽信息
B.识别各中断请求信号的优先级别
C.用来存放由外部输入的中断请求信号
D.用来记录正在处理中的中断请求
14.若形成存储字长为 8 位,空间为 6000H~67FFH 的存储器系统,则需要 1K×4 位的存储芯片()
A.2
B.4
C.6
D.8
15.设 8253 的 CLK 输入 2MHZ 的时钟脉冲,若要输出 4KHZ 频率的波形,负脉冲宽度为 1μs,则该 8253芯片的计数初值是()。
A.4000
B.400
C.500
D.2000
二、填空题(每空 2 分,共 30 分)
1. 8086/8088 为外部设备提供的可屏蔽中断信号是__________。
2.中断返回指令的功能__________。
3. 8086/8088 工作模式分为___________、_______。
4.TW用来等待____________,TW可以查到 T3和 T4之间。
5.十进制数 0.625 转换为二进制数为__________。
6.按功能分,8086 的标志寄存器的标志可以分为两个类__________、______。
7.指令 MOV AL,10 的源操作数的寻址方式为_________。
8.与 XOR AX,AX 指令具有相同功能的指令是_______。
9.下面是统计 100 个内存单元中高 4 位同时为“1”的字节数据个数,并将结果送入其后的内存单元的程序,请在横线上填上空缺的正确内容。
……
C_SEG SEGMENT
ASSUME CS:C_SEG, DS:D_SEG
BEGIN: MOV AX,D_SEG
MOV DL,0
MOV CX, __________
MOV SI, OFFSET NUM
AGAIN: MOV AL,[SI]
ADD AL,10H
________________
________________
NEXT: INC SI
LOOP AGAIN
MOV [SI],DL
MOV AH,4CH
_____________
C_SEG ENDS
END BEGIN
三、简答题(每小题 10 分,共 30 分)
1.在最小模式下,8086CPU 一个基本的总线周期一般由几个时钟周期组成?以读总线周期为例,请说明在每个时钟周期中,CPU 做了哪些工作?
2.简述 8086CPU 响应可屏蔽中断的条件及过程。
3. 设 BX=0158H,DI=10A5H,SI=1008H,DS=2100H,ES=7100H,SS=5100H,BP=0258H,在没有使用段前缀情况下,即 DS 为目前段寄存器,写出下列物理地址。
(1)MOV AX,[1100H]
(2)MOV AX,[BX]
(3)ES:MOV CX,[BX]
(4)MOV BX,[BP]
(5)MOV AX,[BX+SI]
四、应用题(每小题 15 分,共 45 分)
1.编写完整汇编语言程序实现如下功能。
在 M 单元和 N 单元分别存有一个 8 位无符号数 36H 和 95H,要求比较这两个无符号数,并根据比较结果在屏幕上显示 M>N 或 N>M(假设这两个数不相等)。2.8255 各口设置如下:A 组与 B 组均工作于方式 0,A 口为输入,B 口为输出,C 口高位部分为输出,低位部分为输入,端口地址设为 40H~43H。
(1) 写出工作方式控制字。
(2) 编写 8255A 初始化程序段。
(3) 从 A 口输入数据,将其取反后从 B 口送出。
3.在微机系统中,CPU 对中断源的管理可采用中断向量方式。设某中断向量在中断向量表中 0000H:0018H单元开始按地址递增方向依次存放 95H、96H、97H 和 98H,99H,9AH,9BH 和 9CH 八个字节,请回答:该向量对应的中断类型码和中断服务程序的入口地址的 CS 和 IP 分别是多少?并简述所得结论的理由。