完整版专接本计算机C语言程序设计模拟试题及答案.docx

上传人:b****2 文档编号:24507834 上传时间:2023-05-28 格式:DOCX 页数:75 大小:193.62KB
下载 相关 举报
完整版专接本计算机C语言程序设计模拟试题及答案.docx_第1页
第1页 / 共75页
完整版专接本计算机C语言程序设计模拟试题及答案.docx_第2页
第2页 / 共75页
完整版专接本计算机C语言程序设计模拟试题及答案.docx_第3页
第3页 / 共75页
完整版专接本计算机C语言程序设计模拟试题及答案.docx_第4页
第4页 / 共75页
完整版专接本计算机C语言程序设计模拟试题及答案.docx_第5页
第5页 / 共75页
点击查看更多>>
下载资源
资源描述

完整版专接本计算机C语言程序设计模拟试题及答案.docx

《完整版专接本计算机C语言程序设计模拟试题及答案.docx》由会员分享,可在线阅读,更多相关《完整版专接本计算机C语言程序设计模拟试题及答案.docx(75页珍藏版)》请在冰豆网上搜索。

完整版专接本计算机C语言程序设计模拟试题及答案.docx

完整版专接本计算机C语言程序设计模拟试题及答案

专接本计算机C语言程序设计模拟试题及答案

(一)

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

1.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()

A)p=2*(int*)malloc(sizeof(int));B)p=(int*)malloc(2*sizeof(int));

C)p=(int*)malloc(4*2);D)p=(int*)calloc(2,sizeof(int));

2.设有intx=11;则表达式(x++*1/3)的值是()

A)3

B)4

C)

11

D)12

3.下列程序执行后的输岀结果是

(小数点后只写一位)(

#include

voidmain()

{doubled;floatf;longl;inti;

i=f=l=d=20/3;

printf("%d%ld%f%f\n",i,l,f,d);

}

A)666.06.0B)666.76.7

C)666.06.7D)666.76.0

4.下列变量定义中合法的是()

A)short_a=1-.le-1

B)doubleb=1+5e2.5

C)longd1=0xfdaL

D)float2_and=1-e-3;

5.设有定义:

intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是

A)

k++

B)k+=1

C)++k

D)k+1

6.有以下程序,其中%口表示按无符号整数输出,输出结果是()

#include

voidmain()

{unsignedshortx=0xFFFF;/*x的初值为十六进制数*/

printf("%u\n",x);

}

A)-1B)65535C)32767D)

0xFFFF

7.有以下程序,输岀结果是()

#include

voidmain()

{inti,j;

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

{for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);

printf("\n");

}

}

B)1*1=11*2=21*3=3

2*2=42*3=6

3*3=9

A)1*1=11*2=21*3=3

2*1=22*2=4

3*1=3

C)1*1=1

1*2=22*2=4

 

1*3=3

2*3=6

3*3=9

 

8.在C语言中,函数返回值的类型最终取决于()

A)函数定义时在函数首部所说明的函数类型B)return语句中表达式值的类型

C)调用函数时主函数所传递的实参类型D)函数定义时形参的类型

9.设已有定义:

floatx;则对指针变量p进行定义且赋初值的语句中正确的是()

A)float*p=1024B)int*p=(floatx)

C)floatp=&xD)float*P=&x;

10.以下叙述中正确的是()

A)break语句只能用于switch语句体中

B)continue语句的作用是:

使程序的执行流程跳出包含它的所有循环

C)break语句只能用在循环体内和switch语句体内

D)在循环体内使用break语句和continue语句的作用相同

二、完成下列的程序填空(每空3分,共18分)

1•写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输岀字符串。

#include

#include

voidmain()

{voidinverse(charstr[]);

charstr[1OO];

scanf("%s",str);

inverse(str);

printf("inversestring:

%s\n",str);

}

voidinverse(charstr[])

{chart;

inti,j;

for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--)

{;

}

}

2•有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组。

#include

voidmain()

{inta[11]={1,4,6,9,13,16,19,28,40,100};

inttemp1,temp2,number,end,i,j;

printf("arraya:

\n");

for(i=0;i<10;i++)

printf("insertdata:

");scanf("%d",&number);end=a[9];

if(number>end)

else

for(i=0;i<10;i++)

{if(a[i]>number)

{;

a[i]=number;

for(j=i+1;j<11;j++)

{temp2=a[j];

a[j]=temp1;

}

break;

}

}

}

三、写岀下列程序的运行结果(每小题9分,共36分)

1.以下程序运行后的输岀结果是()

#include

voidf(int*q)

{inti=0;

for(;i<5;i++)(*q)++;

}

voidmain()

{inta[5]={1,2,3,4,5},i;

f(a);

for(i=0;i<5;i++)printf("%d,",a[i]);

}

2.以下程序运行后的输岀结果是()

#include

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i

returns;

}

voidmain()

{intx,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

#include

intf()

{staticinti=0;

ints=1;

s+=i;i++;

returns;

}

voidmain()

{inti,a=0;

for(i=0;i<5;i++)a+=f();

printf("%d\n",a);

}

4.以下程序的输岀结果是()

#include

voidmain()

{charch[2][5]={"6937","8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

for(i=0;i<2;i++)

for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';

}

四、按要求编写下列程序(每小题13分,共26分)

o编写程序,用函数的递归调用求x的n次方的值,其中n为正整数。

myfun(x)

o输入正整数m和n,如果m+n是质数,输出"Yes",否则,输出"N6'。

要求定义并调用函数

来判断x是否为质数,在下面空岀的位置完成程序,不能定义新的变量,可不用已定义的某些变量。

#include

#include

voidmain()

{

intm,n;

}

intmyfun(intx)

{

intk;

}

参考答案

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

AAACABBADC

二、完成下列的程序填空(每空3分,共18分)

1.

t=str[i];

str[i]=str[j-1];

str[j-1]=t;

2.

a[10]=number;

temp1=a[i];

temp1=temp2;

三、写岀下列程序的运行结果(每小题9分,共36分)

1、6,2,3,4,5,_

2、10

3、15

4、6385

四、按要求编写下列程序(每小题13分,共26分)

1•编写程序,用函数的递归调用求x的n次方的值,其中n为正整数

#include

floatmypow(floatx,intn)

{floatm;

if(n==1)m=x;

elsem=x*mypow(x,n-1);

returnm;

}

voidmain()

{floatx;

intn;

scanf("%f,%d",&x,&n);

printf("%f的%d次方是%f",x,n,mypow(x,n));

}

myfun(x)

2.输入正整数m和n,如果m+n是质数,输出"Yes",否则,输出"N6'。

要求定义并调用函数来判断x是否为质数,在下面空岀的位置完成程序,不能定义新的变量,可不用已定义的某些变量。

#include

#include

voidmain()

{

intm,n;

scanf("%d%d",&m,&n);

if(myfun(m+n))printf("Yes")

elseprintf("No");

}

intf(intx)

{intk;

for(k=2;k

if(x%k==0)return0;

return1;

}

专接本计算机C语言程序设计模拟试题及答案

(二)

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

1.在说明语句:

int*f();中,标识符f代表的是()

A)一个用于指向整型数据的指针变量B)一个用于指向一维数组的行指针

C)一个用于指向函数的指针变量D)一个返回值为指针型的函数名

2.下列程序的输出结果是()

#include

voidmain()

{doubled=3.2;intx,y;

x=1.2;y=(x+3.8)/5.0;

printf("%d\n",d*y);

}

A)3B)3.2C)0D)3.07

3.设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量al和

a2赋数值10和20,为变量cl和c2赋字符X和'Y'。

以下所示的输入形式中正确的是(注:

□弋表空格字符)()

 

4.

以下选项中,当x为大于1的奇数时,值为0的表达式()

 

5.以下叙述中正确的是()

A)break语句只能用于switch语句体中

B)continue语句的作用是:

使程序的执行流程跳出包含它的所有循环

C)break语句只能用在循环体内和switch语句体内

D)在循环体内使用break语句和continue语句的作用相同

6.以下合法的字符型常量是()

A)'\x13'B)'\018'C)65

D)"\n"

7.在C语言中,函数返回值的类型最终取决于

()

A)函数定义时在函数首部所说明的函数类型

B)return语句中表达式值的类型

C)调用函数时主函数所传递的实参类型

D)函数定义时形参的类型

8.设intx=1,y=1;表达式(凶|y--)的值是()

A)0B)1C)2D)-1

9.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()

A)p=2*(int*)malloc(sizeof(int));B)p=(int*)malloc(2*sizeof(int));

C)p=(int*)malloc(4*2);D)p=(int*)calloc(2,sizeof(int));

10.以下函数的功能是()

intfun(char*s)

{char*t=s;

while(*t++);

return(t-s);

}

A)比较两个字符的大小B)计算s所指字符串占用内存字节的个数

C)计算s所指字符串的长度D)将s所指字符串复制到字符串t中

二、完成下列的程序填空(每空3分,共27分)

1输入20个数,用起泡法对这20个数升序排列。

#include

voidmain()

{inta[20];

inti,j,t;

printf("input20numbers:

\n”);

for(i=0;i<20;i++)

scanf("%d",&a[i]);

printf("\n”);

for(j=0;j<19;j++)

for(i=0;;i++)

if()

{}

printf("thesortednumbers:

\n”);

for(i=0;i<20;i++)

printf("%d”,a[i]);

printf("\n”);

}

2•写一个函数,输入一个十六进制数,输出相应的十进制数。

#include

voidmain()

{chara[6];

scanf("%s",a);

printf("%d\n",htoi(a));

}

inthtoi(chars[])

{inti,n;

n=0;

for(i=0;s[i]!

='\0';i++)

{if(s[i]>='0'&&s[i]<=9)

n=n*16+;

if(s[i]>='a'&&s[i]<='f)

n=n*16+;

if(s[i]>='A'&&s[i]<='F')

n=n*16+;

}

return(n);

}

3•用指针的方法编写的函数,将一个5x3的整型二维数组行列互换。

#include

voidmain()

{voidmove(int*pointer);

inta[3][3],*p,i;

printf("inputmatrix:

'n");

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

scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);

p=&a[0][0];

move(p);

printf("Now,matrix:

\n");

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

printf("%d%d%d\n",a[i][0],a[i][1],a[i][2]);

}

voidmove(int*pointer)

{inti,j,t;

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

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

{;

5

5

}

}

三、写出下列程序的运行结果(每小题8分,共24分)

1.以下程序运行后的输出结果是()

#include

voidmain()

{voidf(intn,int*r);

intm=7,r;

f(m,&r);

printf("%d\n",r);

}

voidf(intn,int*r)

{intr1=0;

if(n%3==0)r1=n/3;

elseif(n%5==0)r1=n/5;

elsef(--n,&r1);

*r=r1;

}

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

#include

f(inta)

{intb=0;

staticintc=3;

b++;c++;

return(a+b+c);

}

voidmain()

{inta=2,i;

for(i=0;i<3;i++)printf(”%d\n”,f(a));

}

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

#include

voidfun(int*x,int*y)

{printf("%d%d",*x,*y);

*x=3;

*y=4;

}

voidmain()

{intx=1,y=2;

fun(&y,&x);

printf("%d%d",x,y);

}

四、按要求编写下列程序(第1小题16,第2小题13分,共29分)

1•编程实现下面的函数,要求输入一个x的值,输出y值,函数如下:

-5(x<0)

y=0(x=0)

5(x>0)

2.编写一个程序,将一组数据{6,5,8,1,0,4,7,3,2,9}按从小到大的顺序排列,程序显示排序前和排序后的结果。

参考答案

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

DCDDCAABAB

二、完成下列的程序填空(每空3分,共27分)

1.

i<19-j

(a[i]>a[i+1])

t=a[i];a[i]=a[i+1];a[i+1]=t;

2.

s[i]-'0'

s[i]-'a'+10

s[i]-'A'+10

3.

t=*(pointer+3*i+j)

*(pointer+3*i+j)=*(pointer+3*j+i)

*(pointer+3*j+i)=t

三、写出下列程序的运行结果(每小题8分,共24分)

1、2

2、7

8

3、2143

四、按要求编写下列程序(第1小题13,第2小题16分,共29分)

1•编程实现下面的函数,要求输入一个x的值,输出y值,函数如下:

-5(x<0)

y=0(x=0)

5(x>0)

#include

voidmain()

{intx,y;

printf("enterx:

");

scanf("%d",&x);

if(x<0)

y=-5;

else

if(x==0)y=0;

elsey=5;

printf("x=%d,y=%d\n",x,y);

}

2.编写一个程序,将一组数据{6,5,8,1,0,4,7,3,2,9}按从小到大的顺序排列,

程序显示排序前和排序后的结果。

#include

#defineN10

Voidmain()

{

inta[N]={6,5,8,1,0,4,7,3,2,9}

inti,j,t;

printf(“Thearraybeforesorted:

”);

for(i=0;i

printf(“%4d',a[i]);

for(i=0;i<9;i++)

{for(j=i+1;j<10;j++)

{if(a[i]>a[j])

{t=a[i];

a[i]=a[j];

a[j]=t;

}

}

}

printf(“Thearrayaftersorted:

”);

for(i=0;i

printf(“%4d',a[i]);

专接本计算机微机原理与汇编语言模拟试题及答案(

、单项选择题(每小题1分,共15分)

1.8088/8086的存储器组织是将存储器划分为段,可作为段的起始地址的是()。

A.185A2HB.00020HC.01003HD.0AB456H

2•指令POP[BX]中,目的操作数的段寄存器是()。

A.DSB.ESC.SSD.CS

3.CPU执行“OUT40HAL”指令时,下列信号为高的是()。

A.RDRWK

4.执行1号DOS系统功能调用后,从键盘输入的字符应存放在()。

A.ALB.BLC.CLD.DL

5.间接寻址方式中,操作数处在()中。

A.通用寄存器B.内存单元

C.程序计数器D.堆栈

6.8086在最小模式下,分时使用AD0〜AD15,所以必须外接地址锁存器,当总线上为地址

信息时,通过()信号将地址送入地址锁存器。

A.DENB.ALEC.丄-二D.DT/R

13.浮点加减中的对阶是()°

A.将较小的一个阶码调整到与较大的一个阶码相同

B.将较大的一个阶码调整到与较小的一个阶码相同

C.将被加数的阶码调整到与加数的阶码相同

D.将加数的阶码调整到与被加数的阶码相同

14.保护断点就是保存()。

A.中断类型码B.中断服务程序入口地址

C.现场D.当前CS、IP的值

15.对以下类型的中断,优先级最低的是()°

A•指令中断B.非屏蔽中断C.可屏蔽中断D•单步中断

二、填空题(每空1分,共20分)

1.指令MOVBX,MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么有效地址为,物理地址为°

2.对于十六进制表示的数码19.8H,转换为十进制数时为;该数码用压缩BCD码

表示时数据为°

3.已知X的补码为10011001,其原码是;真值为

4•使用DOS功能调用时,子程序的功能号应放在寄存器中。

5.设堆栈段寄存器SS所存放的数据为

2250H,堆栈指示器

SP所存放的数据为0140H,

如压入堆栈7个数据库字,问栈顶地址、

SS和SP各为

、、。

6.使CF标志置1的指令是;使DF标志清0的指令是。

7.组成16MX8位的存储器,需要1MX4位的存储芯片片。

8.8253可编程定时/计数器按照二进制计数,其计数范围是从0到;按照BCD码计

数,其计数范围是从0到。

9.PC机的中断类型有、和不可屏蔽中断三种,不可屏蔽中断的请求信息送CPU

的引脚。

10.8255A的控制字的最高位D7=1时,表示该控制字为控制字。

11.CPU可访问8259的端口地址数为。

三、简答题(每小题5分,共20分)

1.定时器和计数器有什么相同和不同?

2•什么是接口?

硬接口和软接口的含义各是什么?

3.在A/D转换过程中,采样保持电路有什么作用?

在什么情况下可以不使用采样保持电

路?

4.什么是中断?

常见的中断源有哪几类?

CPU响应中断的条件是什么?

四、分析题(每小题5分,共15分)

1.若STR是字符串的首地址,阅读程序段,回答问题:

LEABX,STR

MOVCX,30

LP:

CMP[BX],'$'

JNZ

NEXT

MOV

[BX],'&'

NEXT:

INC

BX

LOOP

LP

HLT

(1)指出程序的功能

(2)对程序的各个语句加上注解。

2.阅读程序段,完成指定问题:

NUMDB'ABCDEFGHI

MOVAH,01H

INT21H

ANDAL,0FH

DECAL

XORAH,AH

MOVBX,OFFSETNUM

ADDBX,AX

MOVDL,[BX]

MOVAH,02H

INT21H

试回答:

(1)上述程序段的功能是什么?

(2)如从键盘输入字符‘5'

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1