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 分别是多少?并简述所得结论的理由。

类似文章