2022年河北专接本计算机模拟试卷

宋丽丽    希赛网 2022-01-04

C 语言程序设计试卷

(考试时间:75 分钟)

(总分:150 分)

一、单项选择题(本大题共 20 小题,每小题 2 分,共 40 分。)

1.若已定义”int a[3][4],(*p)[4];”下列赋值表达式中( )是正确的。

A.p=*a

B.p=a[1]

C.p=*a+2

D.p=a+2

2.下列程序的输出结果是 16.00,则划线处应填()。

main()

{ int a=9,b=2;

float x=_______,y=1.1,z;

z=a/2+b*x/y+1/2;

printf(“%5.2fn”,z);

}

A. 16.00

B. 13.2

C. 9

D. 6.6

3.以下字符串赋初值的方式不正确的是( )。

A.char *str=”string”;

B.char *str;str=”string”;

C.char str[]={‘s’,’t’,’r’,’i’,’n’,’g’};

D.char str[7]={‘s’,’t’,’r’,’i’,’n’,’g’};

4.设有结构体类型定义如下

srtuck student

{

int num;

char name[20];

char sex;

int age;

} stu2[3];

对 stu2 不正确的操作是( )

A.stu2[0].sex=’M’;

B.stu2[1].age=stu2[0].age+2;

C.scanf(“%d”,stu2[2].num);

D.printf(“%s”,stu2[1].name);

5.下列程序执行后输出结果是( )

void main()

{

int i=1,j=1,k=2;

if((j++||k++)&&i++)

printf(“%d,%d,%dn”,i,j,k);

}

A. 1,1,2

B. 2,2,1

C. 2,2,2

D. 2,2,3

6.void main()

{

int i=0,x=0,s=0;

for(;;)

{

if(i==3||i==5) continue;

if (i==6) break;

i++;

s+=i;

}

printf(“%dn”,s);

}

程序运行后的输出结果是(

)

A.10

B.13

C.21

D.程序进入死循环

7.以下程序的输出结果是( )

#define f(x) x*x

void main ()

{

int a=6,b=2,c;

c=f (a)/f(b);

printf (“%dn”,c) ;

}

A.9

B. 6

C.36

D.18

8.main()

{

char a[20]=”ABCDEFG”,b[]=”IJK”;

strcat(a,b);

printf(“%sn”,a);

}

程序的输出结果是( )

A.ABCDEFGIJK

B.ABCDIJK

C.IJK

D.EFGIJK

9.以下不能将 s 所指字符串正确复制到 t 所指存储空间的是( )

A.while(*t=*s){t++;s++;}

B.for(i=0;t[i]=s[i];i++);

C.do{*t++=*s++;)while(*s);

D.for(i=0,j=0;t[i++]=s[j++];];

10.void fun(char*w,int m)

{

char s,*pl,*p2;

p1=w;

p2=w+m-1;

while(pl<p2)

{

s=*p1;

*pl=p2;

*p2=s;

p1++;

p2–;

}

}

main()

{

chara[]=”123456″;

fun(a,strlen(a));

puts(a);

}

程序的输出结果是( )

A.654321

B.116611

C.161616

D.123456

11.main()

{

char *s={“abe”};

do

{

printf(“%d”,*s%10);

++s;

}

while(*s);

}

程序的输出结果是( )

A.abc

B.789

C.7890

D.979899

12.有以下程序

int fun (int x,int y){ return x != y ? (x + y) / 3 : x; }

main ()

{

int a = 4, b = 8, c = 6;

printf(“%dn”, fun(3 * a, fun(b, c)));

}

程序运行后的输出结果是( )。

A.3

B.6

C.8

D.5

13.有以下程序

#include

void fun(char *c)

{

while(*c)

{

if (*c>=’a’&&*c<=’z’)*c=*c-(‘a’-‘A’);

c++;

}

}

main()

{

char s[81];

gets(s);

fun(s);

puts(s);

}

当执行程序时从键盘上输入 Hello Beijing

A.hello Beijing

B.Hello Beijing

C.HELLO BELJING

D.hELLO Beijing

14. 设有定义:char s[81];int i=10;以下不能将一行(不超过 80 字符)带有空格的字符串正确读入的语句或语句组是( )。

A. gets(s);

B.while((s[i++]=getchar())!=’n’);s=’’;

C. scanf(“%s”,s);

D.do{scanf(“%c”,&s[i]);}while(s[i++]!=’n’);s=’’;

15. 下面程序段中,for 循环的执行次数是()。

char *s=”ta18bc”; for(;*s!=’’;s++) printf(“*”);

A.9

B.5

C.6

D.7

16. 若已定义”int a[4][5];”下列表示的数组元素中( )是错误的。

A.*(a+1)

B.(*(a+1))[2]

C.**(a+2)

D.*(*(a+1)+2)

17. 有以下程序:

main()

{ int n=2,k=0;

while(k++ && n++>2);

printf(“%d%dn”,k,n);

}

程序运行后的输出结果是( )

A.0 2

B. 1 3

C. 5 7

D. 1 2

18. 有以下程序

main()

{ int a=1,b=2,c=3,d=0;

if(a==1&&b++==2)

if(b!=2||c–!=3)

printf(“%d,%d,%dn”,a,b,c);

else

printf(“%d,%d,%dn”,a,b,c);

else

printf(“%d,%d,%dn”,a,b,c);

}

程序运行后的输出结果是( )

A. 1,2,3

B.1,3,2

C.1,3,3

D.3,2,1

19. 有以下程序:

int f(int x,int y){ return((y-x)*x);}

main()

{

int a=3,b=4,c=5,d;

d=f(f(a,b),f(a,c));

printf(“%dn”,d);

}

程序运行后的输出结果是( )。

A、10

B、9

C、8

D、7

20. 若有以下说明:

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};

char c=’a’,d,g;

则数值为 4 的表达式是()。

A. a[‘d’-‘c’]

B.a[‘d’-c]

C.a[g-c]

D.a[4]

二、程序阅读题(本大题共 5 小题,每小题 6 分,共 30 分。)

1、下列程序运行结果是____________

int fs()

{

static int x = 1;

x+=3;

return x;

}

void cc(){

int i, s = 1;

for (i = 3; i >=1; i–)

s *= fs();

printf(“%dn”, s);

}

2、以下程序段的输出结果是__________

#include

main()

{ char *ch[4]={“red”,”green”,”biue”};

int i=0;

while(ch[i]){putchar(ch[i][0]);i++;}

}

3、以下程序的运行结果是________

char *fun(char *s)

{

int i,j;

for(i=j=0;s[i]!=’’;i++)

if(s[i]!=’c’)s[j++]s[i];

s[j]=’’;return s;

}

main()

{printf(“%s”,fun(“chance”));}

4、以下程序运行结果_________

main()

{

int i,p[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, *p1[3], (*p2)[3];

for (i = 0; i<3; i++) p1[i] = p[i];

p2 = p;

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

printf(“%d,%dn”, *(*(p1 + i) + 1) + 1, *(*++p2 + 1) + 1);}

5、以下程序的输出结果是____________。

main()

{

int j,a[]={1,3,5,7,9,11,13,15},*p=a+3;

for(j=3; j; j–)

{

switch(j)

{

case 1:

case 2:printf(“%d”,*p++);break;

case 3:printf(“%d”,*(–p));

}

}

}

三、程序填空题(每空 5 分,共 35 分。)

1. 以下程序实现从 10 个数中找出最大值和最小值。请填空。

void mian()

{

int a[]={6,1,5,2,3,9,10,4,8,7},*p=a,*q;

int n=10, max,min;

max=min=*p;

for (q=p; _______;q++)

if (________) max=*q;

else if (______) min=*q;

printf (“max=%d,min=%dn”max,min);

}

2. 下列函数用于确定一个给定字符串 str 的长度,请填空。

int strlen (char str[])

{

int num=0;

while(_______) ++num;

return (_______);

}

四、编程题(本大题共 3 小题,每小题 15 分,共 45 分。)

1.编写一个函数,实现输入一个正整数,返回该数的因子之和。数的因子:就是所有可以整除这个数的数,不包括这个数自身。例如:6 的因子是 1、2、3。

2.采用递归函数求 Fibonacci(斐波那契)数列前 30 项并打印。

3. 有 10 个学生,学生信息包括姓名、学号、3 门课成绩,从键盘输入 10 个学生的数据,要求打印出

① 3 门课总平均成绩;② 最高分学生的学号、姓名及 3 门课成绩和平均分

《微机原理、接口与汇编》试题

一、选择题(每题 3 分,共 45 分)

1. 8086 寄存器中,通常用作数据寄存器、且隐含用于 I/O 端口的间址寄存器的是()。

A.AX

B.BX

C.CX

D.DX

2. 已知 8086CPU 内部 CS=1000H,DS=2000H,IP=3000H,则将要执行指令的代码存放在内存单元中的地址为()。

A.4000H

B.5000H

C.13000H

D.23000H

3. 一台微型机,其存储器的首地址为 3000H,末地址为 4FFFH,则该存储器的容量为()。

A.2KB

B.4KB

C.8KB

D.16KB

4. 有一微机系统采用的 CPU 有 64 条数据线,32 条地址线,则该微机系统的最大内存容量为( )字节。

A. 232×8

B. 232 × 4

C. 232 × 2

D. 232

5. 计算机的存储器采用分级存储体系的目的是()。

A.便于输入输出数据

B.减小机箱的体积

C.便于系统升级和兼容

D.解决存储容量、存取速度间的矛盾 a

6. 在 16 位存储系统中,为了(),存储字最好存放在偶地址。

A. 便于快速寻址

B. 节省所占的内存空间

C. 减少执行指令的总线周期

D. 减少读写错误

7. CPU 响应 INTR 和 NMI 中断时,相同的必要条件是()。

A. 当前指令执行结束

B. 允许中断

C. 当前访问内存结束

D. 总线空闲

8. CPU 在中断响应过程中() ,是为了能正确地实现中断返回。

A. 识别中断源

B. 获得中断服务程序入口地址

C. 清除中断允许标志 IF

D. 断点压栈

9. 下列关于存储部件的叙述正确的是()。

A.主存的速度可与 CPU 匹配。

B.内存是 RAM,不包括 ROM

C.辅存的程序调入主存中才能执行

D.辅存中不能存放程序,只能存放数据

10. 下列说法中不正确的是()。

A.变址寻址时,有效数据存放在主存中

B.堆栈是先进后出的随机存储器

C.堆栈指针 SP 的内容表示当前堆栈内所存储的数据的个数

D.内存中指令的寻址和数据的寻址是交替进行的

11. 8086CPU 在中断响应周期中获得中断类型码为 24H,则该中断服务程序的入口地址在内存中的地址区间是()。

A.00090H~00091H

B.00090H~00093H

C.00096H~00099H

D.00096H~00097H

12. 8253 可编程定时/计数器采用 BCD 码时的计数范围是()。

A. 0~255

B.0~9999

C. 0~65535

D. 1~10000

13. 在 8259A 内部,用于反映当前 CPU 正在执行哪些中断源程序的部件是()。

A.中断请求寄存器

B.中断服务寄存器

C.中断屏蔽寄存器

D.中断优先级比较器

14. 增量指令 INC 及减量指令 DEC 影响的标志有()。

A.CF

B.PF

C.TF

D.SF

15. MOV AL,12H 指令中数据 12H 存放在内存的()段中。

A.代码

B.数据

C.堆栈

D.附加

二、填空题(每空 2 分,共 30 分)

1. 若一个数据块在内存中的起始地址为 80A0H:0DFFFH,则这个数据块的起始物理地址为_____。

2. 当一个系统中包含的外设接口较多时,数据总线上需要有_____以增强驱动能力。

3. 对一个微机系统而言有三种总线:片内总线、内部总线和外部总线,外部总线又称为_____,内部总线又称为_____。

4. 若用 8K×4RAM 组成 32K×8 的存储容量,需 RAM 芯片_____个,以及扩展芯片选择地址线_____根。

5. 中断类型号为 20H 的中断所对应的中断向量存放在内存从_____开始的四个连续字节单元中,若这四个字节单元的内容由低地址到高地址依次为 00H、50H、00H、60H,则中断服务程序的入口地址_____。

6. 一片 8255A 端口 A 有____种工作方式,端口 B 有______种工作方式。

7. 8253 有_____种工作方式,其中有_____种工作方式只能单次执行。

8. 执行程序段后,均用十六进制表示 AX、BL、CL 三个寄存器的值,分别为:

AX=_____,BL=_____, CL=_____ 。

S1 DW‘12’

CNT EQU 12

MOV BL,BYTE PTR S1

MOV CL,CNT

MOV AX,S1

HLT

三、简答题(每题 10 分,共 30 分)

1. 什么是总线标准?微机总线可分为哪几类?USB 是什么?

2. 何为多级存储系统? 为什么在计算机中要使用多级存储系统?

3. 试比较 8259A 中断控制器的自动结束中断与非自动结束中断方式的区别。

四、应用题(每题 15 分,共 45 分)

1. 编写汇编源程序,要求在内存中定义两个字节变量 X 和 Y,用移位指令计算得到 6X,并将该乘积存入Y 单元。假设乘积为字节。

2. 下图为存储器芯片译码电路图,请回答:

image.png

(1)计算 1#存储器的地址范围及容量是多少。

(2)如果将 1#存储器的片选端直接和译码器的Y3相连,则该芯片的地址范围及容量是多少。

3. 8253 的端口地址为 300H~303H,利用 8253 的计数器 0 周期性地每隔 20ms 产生一次中断信号,计数时钟频率 CLK0 为 2MHz,要求计算初值和方式控制字,编写实现上述功能的初始化程序段。

类似文章