模拟题3及参考答案.docx

上传人:b****6 文档编号:14156011 上传时间:2023-06-21 格式:DOCX 页数:13 大小:140.99KB
下载 相关 举报
模拟题3及参考答案.docx_第1页
第1页 / 共13页
模拟题3及参考答案.docx_第2页
第2页 / 共13页
模拟题3及参考答案.docx_第3页
第3页 / 共13页
模拟题3及参考答案.docx_第4页
第4页 / 共13页
模拟题3及参考答案.docx_第5页
第5页 / 共13页
模拟题3及参考答案.docx_第6页
第6页 / 共13页
模拟题3及参考答案.docx_第7页
第7页 / 共13页
模拟题3及参考答案.docx_第8页
第8页 / 共13页
模拟题3及参考答案.docx_第9页
第9页 / 共13页
模拟题3及参考答案.docx_第10页
第10页 / 共13页
模拟题3及参考答案.docx_第11页
第11页 / 共13页
模拟题3及参考答案.docx_第12页
第12页 / 共13页
模拟题3及参考答案.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

模拟题3及参考答案.docx

《模拟题3及参考答案.docx》由会员分享,可在线阅读,更多相关《模拟题3及参考答案.docx(13页珍藏版)》请在冰点文库上搜索。

模拟题3及参考答案.docx

模拟题3及参考答案

《高级语言程序设计(C++)》模拟题(三)

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

1.设有inta,b;下面()不是C++的正确表达式。

(A).!

a(B).b+'a'(C).a

“=”:

左操作数必须为左值

2.计算表达式x=a=4,b=x++后,变量x,a,b的值分别是:

()

(A)4,4,4(B)4,4,5(C)4,5,5(D)5,4,4

x++先赋值,后自加

3.以下运算符中,优先级最低的是:

()

(A)&&(B)>=(C)?

:

:

(D)->

从高到低依次是:

->,>=,&&,?

:

4.表达式1/2*2.0的值是:

()

(A)2(B)1(C)0.5(D)0

1/2两个整数相除的结果为整数,即为0,0*2.0还是0

如果题目改为1.0/2*2.0则结果为1

5.设有变量定义char*s1=”string”,*s2=”1234”;

执行语句cout<

()

(A)10(B)6(C)5(D)4

s1在连接s2之后变成”string1234”,长度为10.

注意:

在VC下,因为strcat(s1,s2)的第一个参数指向的是常量字符串,所以会出错.

上面这段代码在TC下可以正常运行.

6.设有变量定义inta[]={3,5,7,9,11},*p=a+2,y;

执行语句y=*p;后,变量y的值是:

()

(A)6(B)7(C)8(D)9

*p=a+2实际上就是将p指向a[2],也就是7.

7.设有变量定义inti,j;与表达式i==0&&j==0等价的表达式是:

()

(A)i==j(B)i&&j(C)!

i&&!

j(D)i||j

!

i&&!

j也就是!

i和!

j都必须为1,也就是i和j都必须为0

8.设有变量定义inta[3][4];能够表示元素a[2][1]的值有:

()

(A)*a[2]+1(B)&a[2][1](C)*a[2][1](D)*(a[2]+1)

a[2]实际上就是a[2][0]的地址,a[2]+1实际上就相当于a[2][0]的地址再加一,也就是a[2][1]

9.以下正确的函数原型是:

()

(A)voidfun(int,int=0);(B)floatfun(x,y);

(C)voidfun(*,&);(D)intfun(int=0,int);

B,参数没有类型

C,参数类型不对

D,默认参数只能放在最后.

10.已知inta[3][2]={1,2,3,4};则a[1][1]的值是()。

(A).1(B).2(C).3(D).4

a[3][2]={1,2,3,4}相当于a[3][2]={{1,2},{3,4}}.

二.简答题(第1-4题每题2分,第5-6题每题4分,共16分)

1.表述问题“x和y都小于z”的C++表达式是?

参考答案:

x

说明:

不能写成xy

 

2.设有变量定义inty=123;执行语句cout<

参考答案:

173

说明:

按8进制输出

 

3.设有变量说明intw[]={1,3,5,7,9},*p=w;表达式*p+*(w+3)的值?

参考答案:

8

说明:

*p=w,也就是p指向w[]的第一个位置,*p也就是1了.

*(w+3),就是w的第三个位置上的值,也就是7了.

所以*p+*(w+3)=1+7=8;

 

4.函数原型intfun(int,int=0);中“int=0”的含义是什么?

参考答案:

在调用时如果不指定第二个参数,则第二个参数默认为0.

比如fun

(2)等同于fun(2,0)

 

5.请说明形参和实参的区别。

参考答案:

主调函数中调用一个函数实时,函数名后面的括弧中的参数称为实参。

在定义函数,函数名后的括弧中的变量名称叫形式参数就是形参。

1.在未被调用时。

不占内存单元。

2.实参可以是常量,变量或者表达式。

但要求有确定的值。

调用时将实参的值赋给形参(如果是形参是数组名则传递数组首地址而不是数组的值)

3.在被定义的函数中,必须指定形参的类型

4.实参与形参的类型应相同或赋值兼容

 

6.for语句可以实现直到型循环,请画出流程控制框图。

参考答案:

 

三.分析程序,写输出结果(每小题6分,共24分)

1.#include

voidmain()

{intx=4;

switch(2*x-1)

{case3:

cout<

case5:

cout<<2*x+1<<"";

case7:

cout<<3*x-1<<"";

default:

cout<<"default";

}

cout<<"Switchend.\n";

}

参考答案:

11defaultSwitchend

说明:

2*x-1的值为7,所以直接跳到case7:

3*x-1的值为11.case7:

语句后面并无break;所以接续执行后面的default:

语句.

 

2.#include

#include

voidmain()

{intm,k,i;

for(m=1;m<=10;m+=2)

{k=m/3;

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

if(m%i)cout<

}

}

参考答案:

79

说明:

m/3,m为整数,所以结果只取整数.如m=7,则m/3的值是2.

m%i表示取模,如m=7,i=3,则m%i的值是1.

3.#include

intfind(char*str,charc)

{char*p=str;intn=0;

while(*p&&*p!

=c){p++;n++;}

return*p?

n:

-1;

}

voidmain()

{chara[]="programdesign";

cout<

<

}

参考答案:

38

4.#include

voidf(intm)

{cout<

if(m>1)

f(m-1);

}

voidmain()

{f(4);

cout<

}

参考答案:

4321

 

四.根据程序功能填空。

(每空3分,共21分)

1.以下程序的功能是计算并输出两个复数之差。

#include

structcomp{floatre;floatim;};

compM(___

(1)___)函数M的两个参数,从下面的代码看出x和y是没有声明的

{compz;

z.re=x.re-y.re;

z.im=x.im-y.im;

return(___

(2)___);变量z就是x,y这两个复数的差

}

voidmain()

{compa,b,t;

a.re=1;a.im=2;

b.re=3;b.im=4;

t=M(___(3)___);函数M的参数

cout<<"a-b=("<

}

(1)compx,compy

(2)z

(3)a,b

2.以下程序建立一个66矩阵a,然后把矩阵a的主对角线元素放在数组b中。

主函数输出b的元素。

#include

__(4)___因为transform在定义之前就调用了,所以此处应该是transform的声明

voidmain()

{inta[6][6],b[6],i,j;

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

for(j=0;j<6;j++)cin>>a[i][j];

transform(__(5)___);transform的两个参数,根据类型判断,a和b刚好

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

cout<

cout<

}

voidtransform(intx[6][6],int*p)

{for(inti=0;i<6;i++)

{*p=__(6)___;x[i][i]

__(7)___;指针加一

}

}

(4)voidtransform(intx[6][6],int*p)

(5)a,b

(6)x[0][i]

(7)p++

五.程序设计(第一题5分,其余每题7分,共19分)

编写函数输出以下形状的图形,其中构成图形的符号和输出的行数通过参数传送。

#

##

##

#######

#include

usingnamespacestd;

voidPrintTrangle(constcharsign,constintline)

{

for(inti=1;i<=line;i++)

{

for(intj=i;j

cout<<"";

for(intk=i;k<3*i-1;k++)

{

if((k==i||k==(3*i-2))||i==line)

{

cout<

}

else

{

cout<<"";

}

}

cout<<"\n";

}

}

intmain(intargc,char*argv[])

{

charsign='#';

intline=4;

PrintTrangle(sign,line);

return0;

}

 

2.编写程序,打印如下杨辉三角。

1

11

121

1331

14641

#include

usingnamespacestd;

#defineLINE_COUNT5

intmain(intargc,char*argv[])

{

intA[LINE_COUNT][LINE_COUNT];

inti,j;

for(i=0;i

{

A[i][0]=1;

A[i][i]=1;

}

for(i=2;i

//从第三行开始

for(j=1;j

//两重循环,j从1到i

A[i][j]=A[i-1][j-1]+A[i-1][j];

for(i=0;i

{

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

//输出j从0到i

cout<

cout<

}

return0;

}

3.编写函数create把1-10十个数字建立一个以head为表头的单向链表

//定义结构体

typedefstruct_MY_NODE

{

intvalue;

_MY_NODE*next;//next的类型为自身的指针

_MY_NODE()//默认的构造函数

{

value=0;

next=0;

}

}MY_NODE;

voidcreate(intcount,MY_NODE**head)//第二个参数为指针的指针

{

MY_NODE*pNext=0;

MY_NODE*pTemp=0;

for(inti=0;i

{

//首节点

if(i==0)

{

pNext=newMY_NODE;

*head=pNext;

}

else

{

pNext=pTemp;

}

pNext->value=i+1;//赋节点的值

//最后一个节点

if(i==count-1)

{

pNext->next=0;//

}

else

{

pTemp=newMY_NODE;

pNext->next=pTemp;//下一个节点

}

}

}

int_tmain(intargc,_TCHAR*argv[])

{

intcount=10;

MY_NODE*head=0;

create(count,&head);

MY_NODE*pNext=head;

for(inti=0;i

{

MY_NODE*pTemp=pNext->next;

deletepNext;

pNext=pTemp;

}

return0;

}

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2