计算机南理工级VC++程序设计A卷附答案.docx

上传人:b****6 文档编号:4685684 上传时间:2022-12-07 格式:DOCX 页数:18 大小:21.51KB
下载 相关 举报
计算机南理工级VC++程序设计A卷附答案.docx_第1页
第1页 / 共18页
计算机南理工级VC++程序设计A卷附答案.docx_第2页
第2页 / 共18页
计算机南理工级VC++程序设计A卷附答案.docx_第3页
第3页 / 共18页
计算机南理工级VC++程序设计A卷附答案.docx_第4页
第4页 / 共18页
计算机南理工级VC++程序设计A卷附答案.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

计算机南理工级VC++程序设计A卷附答案.docx

《计算机南理工级VC++程序设计A卷附答案.docx》由会员分享,可在线阅读,更多相关《计算机南理工级VC++程序设计A卷附答案.docx(18页珍藏版)》请在冰豆网上搜索。

计算机南理工级VC++程序设计A卷附答案.docx

计算机南理工级VC++程序设计A卷附答案

南京理工大学课程考试试卷(学生考试用)

课程名称:

VC++程序设计学分:

4大纲编号06000702

试卷编号:

2010A考试方式:

闭卷满分分值:

80考试时间:

120分钟

组卷日期:

2010年6月20日组卷教师(签字):

审定人(签字):

学生班级:

学生学号:

学生姓名:

说明:

1.所有试题做在答卷纸上

2.考试完毕后连考卷一起交上

一、选择题(选择一个最合适的答案。

每题2分,共40分)

1、下面哪一个可以作为合法标识符?

A.register

B.Mx-up

C.protect

D.switch

2、若a、b和c都是整型变量,且值都是8,则执行语句a/=5+b++-++c;后a的值是()。

A.5

B.3

C.4

D.2

3、下列字符串常量表示中,错误的是()。

A."\"yes\"or\"

B."\\Right\""

C."abcdef\0"

D."ABCD\t\\"

4、inti=~12;则执行该语句后i的值是()。

A.12

B.-12

C.-13

D.13

5、若a、b、c、d、m、n均为整型变量,且a=3,b=2,c=14,d=5,m=6,n=7,则逻辑表达式(m=a

A.0

B.7

C.1

D.5

6、若定义floatx=1.2f;inta=1,b=2;则以下正确的switch语句是()。

A.switch(a+b)

{case1:

cout<<1;break;

case3:

cout<<2;}

B.switch(x)

{case1:

cout<<1;break;

case2:

cout<<2;}

C.switch(b-a)

{case1:

cout<<1;break;

case1:

cout<<2;}

D.switch(a+b)

{case1.0:

cout<<1;break;

case3.0:

cout<<2;}

7、执行下面的程序,输出结果是()。

#include

voidmain()

{inti,j,x=0;

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

{x+=2;

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

{if(j%2)continue;

x++;}

x++;break;}

cout<

A.3

B.6

C.4

D.5

8、以下语句段不是死循环的是()。

A.ints=33;

while(s++%2+3%2)

s++;

B.inti,sum=0;

for(i=1;;i++)

sum=sum+1;

C.inti=100;

while

(2)

{

i=i%100+1;

if(i==20)break;

}

D.intk=0;

do{

++k;

}while(k<=0);

9、执行下面的程序后a的值是()。

#defineSQR(X)X*X*X

voidmain()

{inta=2,k=2,m=3;

a+=SQR(k+m)/SQR(k+m);

cout<

A.3

B.32

C.24

D.127

10、以下对字符数组initarray进行初始化的语句,不正确的是()。

A.charinitarray[]='word\0';

B.charinitarray[]={'w','o','r','d','\0'};

C.charinitarray[]={"word\0"};

D.charinitarray[]="word\0";

11、下面结构体成员说明中,哪一条语句是错误的。

structEmployee{

charidno[20];//A

Employee*manager;//B

Employeehead;//C

Employee&administrator;//D

};

12、执行下面程序代码后的输出结果是()。

#include

voidmain()

{char*u="1243567",*s;

int*v;

v=(int*)u;

v++;

s=(char*)v;

cout<

A.4567

B.567

C.67

D.34567

13、下述定义中,()是定义指向二维int数组的行指针。

A.int(*p)[5]

B.int*p[]

C.int*p[5]

D.(int*)p[5]

14、若有如下函数说明和变量定义语句

voidfun(floatarray[10],float&s);

floatt[10],*pt=t,n;

则对函数fun的调用语句正确的是()。

A.fun(pt[10],n);

B.fun(pt,n);

C.fun(*pt,n);

D.fun(pt,&n);

15、假设类MyTestClass的定义如下:

classMyTestClass

{public:

MyTestClass(){value=0;}

voidSetValue(inti){value=i;}

private:

intvalue;};

则当执行语句MyTestClass*p,test;p=&test;后,以下描述正确的是()。

A.语句p=&test;是把对象test赋值给指针变量p

B.语句MyTestClass*p,test;的执行,会调用两次MyTestClass类的构造函数

C.对语句p.SetValue(5);的调用不会产生错误

D.对语句p->SetValue(5);的调用不会产生错误

16、以下关于类的构造函数和析构函数的描述中,正确的是()。

A.类的构造函数和析构函数都不能重载

B.类的构造函数和析构函数都能重载

C.若类中没有定义任何构造函数,则编译器将提供一个缺省构造函数,函数体中是空语句

D.当一个对象被撤销时,系统不会自动调用并执行相应的析构函数

17、假设对象b1和b2都是类T的对象,下面的语句()不会执行类T的拷贝构造函数。

A.T&b1=b2;

B.fun(b1,2);//函数fun的原型说明为voidfun(Tx,inta);

C.Tb1=b2;

D.returnb2;

18、关于继承方式,基类的()在私有继承时在派生类中为私有成员,在公有和保护继承时在派生类中为保护成员。

A.私有成员

B.保护成员

C.私有数据成员

D.公有成员

19、当多继承派生类的构造函数被调用以构造对象时,最先执行()的函数体。

A.非虚基类的构造函数

B.虚基类的构造函数

C.派生类中成员对象所属类的构造函数

D.派生类自己的构造函数

20、对于友元函数,以下说法错误的是()。

A.一个类的友元函数中可以访问该类的保护成员,但不能访问私有成员。

B.一个类的友元函数可以是类外的某个函数。

C.一个类的友元函数可以是另一个类中的某个成员函数。

D.一个类的友元函数可以是另一个类中的所有成员函数。

二、读程序,写出输出结果(12分)

1、(2分)

#include

voidadd(int*x,inti,intn)

{

if(n<=i)add(x,i,2*n);

*x+=n++;

cout<<*x<<'\t'<

}

voidmain()

{

1213

187

214

21

intx=0;

add(&x,10,3);

cout<

}

2、(2分)

#include

intf1(int*px){

staticintcount=0;

*px+=10;

count+=*px;

returncount;

}

voidf2(int&xx)

{xx+=10;}

voidmain(void)

{intx=0;

cout<<"x="<

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

X=0

103060

X=30

X=40

cout<

cout<

cout<<"x="<

f2(x);

cout<<"x="<

}

3、(4分)

#include

classBase

{inti;

public:

Base(intn){cout<<"调用Base类的构造函数"<

~Base(){cout<<"调用Base类的析构函数"<

voidshowBasei(){cout<

intGetBasei(){returni;}

};

classDerived:

publicBase

{intj;

Baseaa;

public:

Derived(intn,intm,intp):

Base(m),aa(p){

cout<<"调用Derived类的构造函数"<

j=n;

}

~Derived(){cout<<"调用Derived类的析构函数"<

voidshow()

{

showBasei();

cout<

调用Base类的构造函数

调用Base类的构造函数

调用Derived类的构造函数

11,6,17

调用Derived类的析构函数

调用Base类的析构函数

调用Base类的析构函数

};

voidmain()

{Derivedobj(6,10,16);

obj.show();

}

4、(4分)

#include

classA{

public:

A(){cout<<"调用A类的构造函数"<

virtual~A(){cout<<"调用A类的析构函数"<

virtualvoidfun(){cout<<"调用A类的函数fun"<

voidg(){fun();}};

classB:

publicA{

public:

B(){fun();cout<<"调用B类的构造函数"<

~B(){cout<<"调用B类的析构函数"<

classC:

publicB{

调用A类的构造函数

调用A类的函数fun

调用B类的构造函数

调用C类的构造函数

调用C类的函数fun

调用C类的析构函数

调用B类的析构函数

调用A类的析构函数

public:

C(){cout<<"调用C类的构造函数"<

~C(){cout<<"调用C类的析构函数"<

voidfun(){cout<<"调用C类的函数fun"<

voidmain()

{A*a=newC;

a->g();

deletea;

}

三、填程序,在空格位置填入合适的代码(每空2分,共8分)

对于一个int单向链表结构

structnode{

intdata;

node*next;

};

下面一个函数从一个int数组来创建一个int单向链表,按数组中各元素次序建立一个链表,并保持相同次序。

形参a是数组名,形参n是数组a中元素个数,返回链表的头指针。

Node*create(inta[],intn){

Node*p1,*p2,*head=NULL;

for(inti=0;i

_______________;

p1->data=a[i];

p1->next=NULL;

if(______________)

head=p1;

else

_______________;

p2=p1;

}

_____________;

}

p1=newNode;

head==NULL

p2->next=p1;

returnhead;

 

四、写程序,根据要求编写程序(20分)

1、输入任何一个字符串,计算并显示字符串中各个字符及其出现次数。

(10分)

例如,输入:

doorkeeper,输出:

d:

1

o:

2

r:

2

k:

1

e:

3

p:

1

各字符显示次序与串中首次出现次序一样。

按要求实现下面函数:

1.1:

intdupCount(constchara[],charb[],intc[])(7分)

形参a是一个输入字符串。

形参b保存了各个不重复的字符。

形参c保存了各字符对应的出现次数,即c[i]表示了字符b[i]的出现次数。

函数返回不重复的字符个数,上面例子返回6。

1.2:

voidmain()函数,输入一个字符串,调用上面函数得到结果,最后显示结果(3分)。

2、PC类(个人计算机)和NoteBook类(笔记本计算机)。

(10分)

已有一个Date类表示日期:

classDate{

intyear,month,day;

public:

Date(inty,intm,intd);

voidprint();//打印年-月-日

};

建立一个PC类表示个人计算机。

classPC{

charbrand[40];//品牌及型号

DatebuyDate;//购买日期

intcost;//价格,单位为元

public:

PC(char*brand,intbuyy,intbuym,intbuyd,intcost);

virtualvoidshow();

};

要求:

2.1实现构造函数PC(char*brand,intbuyy,intbuym,intbuyd,intcost);

(2分)

2.2实现成员函数voidshow();要求显示所有属性。

(2分)

2.3建立一个NoteBook类表示笔记本计算机,除了计算机的属性之外,还要求描述电池容量:

intbatteryCapacity;//电池容量,单位为毫安时

给出类的设计。

注意利用已有的类。

在类的设计中要求

1)实现NoteBook类的一个构造函数:

NoteBook(char*brand,intbuyy,intbuym,intbuyd,intcost,intbattCap)

2)实现NoteBook类的一个成员函数:

voidshow();要求显示所有属性。

(6分)

 

4.1参考答案

#include

#include

intdupCount(constchara[],charb[],intc[]){

intk=0;

for(inti=0;i

for(intj=0;j

if(a[i]==b[j])

break;

if(j==k){

b[k]=a[i];

c[k]=1;

for(intm=i+1;m

if(a[i]==a[m])

c[k]++;

k++;

}

}

returnk;

}

voidmain(){

charstr[200];

cout<<"输入一个英文字符串,用回车结束:

";

cin.getline(str,200);

charch[100];

intcc[100];

intc=dupCount(str,ch,cc);

for(inti=0;i

cout<

"<

}

4.2参考答案

#include

#include

classDate{

intyear,month,day;

public:

Date(inty,intm,intd){

year=y;

month=m;

day=d;

}

voidprint(){//打印年-月-日

cout<

}

};

classPC{

charbrand[40];//品牌及型号

DatebuyDate;//购买日期

intcost;//价格,单位为元

public:

PC(char*brand,intbuyy,intbuym,intbuyd,intcost)

:

buyDate(buyy,buym,buyd){

strcpy(this->brand,brand);

this->cost=cost;

}

virtualvoidshow(){

cout<

";

buyDate.print();

cout<<";价格:

"<

}

};

classNoteBook:

publicPC{

intbatteryCapacity;//电池容量,单位为毫安时

public:

NoteBook(char*brand,intbuyy,intbuym,intbuyd,intcost,intbattCap)

:

PC(brand,buyy,buym,buyd,cost){

batteryCapacity=battCap;

}

voidshow(){

PC:

:

show();

cout<<";电池容量:

"<

}

};

voidmain(){

NoteBooknb1("Dell",2010,3,4,5600,4500);

nb1.show();

}

一选择题(每题2分,共40分)

1~10CDACBADCDBA

11~20CBABDCABBA

4、(4分)

调用A类的构造函数

调用A类的函数fun

调用B类的构造函数

调用C类的构造函数

调用C类的函数fun

调用C类的析构函数

调用B类的析构函数

调用A类的析构函数

3、(4分)

调用Base类的构造函数

调用Base类的构造函数

调用Derived类的构造函数

11,6,17

调用Derived类的析构函数

调用Base类的析构函数

调用Base类的析构函数

二读程题(共12分)

1(2分)

1213

187

214

21

 

2、(2分)

X=0

103060

X=30

X=40

三填程题(每空2分,共8分)允许多种表示

1、p1=newNode;或者p1=newnode;

2、head==NULL或者head==0或者!

head

3、p2->next=p1;

4、returnhead;或者return(head);

四编程题(共20分)允许不同的实现方式

1(10分)

#include

#include

intdupCount(constchara[],charb[],intc[]){

intk=0;

for(inti=0;i

for(intj=0;j

if(a[i]==b[j])

break;

if(j==k){

b[k]=a[i];

c[k++]=1;

}else

c[j]++;

}

returnk;

}

(7分)

voidmain(){

charstr[200];

cout<<"输入一个英文字符串,用回车结束:

";

cin.getline(str,200);

charch[100];

intcc[100];

intc=dupCount(str,ch,cc);

for(inti=0;i

cout<

"<

}

(3分)

 

2(10分)允许不同的实现方式

classPC{

charbrand[40];//品牌及型号

DatebuyDate;//购买日期

intcost;//价格,单位为元

public:

PC(char*brand,intbuyy,intbuym,intbuyd,intcost)

:

buyDate(buyy,buym,buyd){

strcpy(this->brand,brand);

this->cost=cost;

}(2分)

virtualvoidshow(){

cout<

";

buyDate.print();

cout<<";价格:

"<

}(2分)

};

classNoteBook:

publicPC{(以下6分)

intbatteryCapacity;//电池容量,单位为毫安时

public:

NoteBook(char*brand

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

当前位置:首页 > 高中教育 > 理化生

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

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