C++程序设计试题和答案.docx

上传人:b****7 文档编号:15792338 上传时间:2023-07-07 格式:DOCX 页数:18 大小:23.20KB
下载 相关 举报
C++程序设计试题和答案.docx_第1页
第1页 / 共18页
C++程序设计试题和答案.docx_第2页
第2页 / 共18页
C++程序设计试题和答案.docx_第3页
第3页 / 共18页
C++程序设计试题和答案.docx_第4页
第4页 / 共18页
C++程序设计试题和答案.docx_第5页
第5页 / 共18页
C++程序设计试题和答案.docx_第6页
第6页 / 共18页
C++程序设计试题和答案.docx_第7页
第7页 / 共18页
C++程序设计试题和答案.docx_第8页
第8页 / 共18页
C++程序设计试题和答案.docx_第9页
第9页 / 共18页
C++程序设计试题和答案.docx_第10页
第10页 / 共18页
C++程序设计试题和答案.docx_第11页
第11页 / 共18页
C++程序设计试题和答案.docx_第12页
第12页 / 共18页
C++程序设计试题和答案.docx_第13页
第13页 / 共18页
C++程序设计试题和答案.docx_第14页
第14页 / 共18页
C++程序设计试题和答案.docx_第15页
第15页 / 共18页
C++程序设计试题和答案.docx_第16页
第16页 / 共18页
C++程序设计试题和答案.docx_第17页
第17页 / 共18页
C++程序设计试题和答案.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++程序设计试题和答案.docx

《C++程序设计试题和答案.docx》由会员分享,可在线阅读,更多相关《C++程序设计试题和答案.docx(18页珍藏版)》请在冰点文库上搜索。

C++程序设计试题和答案.docx

C++程序设计试题和答案

C++程序设计试题

一、单项选择题(本大题共20小题。

每小题1分。

共20分)

在每小题列出得四个备选项中只有一个就是符合题目要求得。

请将其代码填写在题后得括号内、错选、多选或未选均无分。

1、C++源程序文件扩展名为(A)

A。

cppB.。

hC。

1ibD。

obj

2。

在C++中使用流进行输入输出、其中专用于从键盘进行输入得流就是( B)

A。

cerrB.cin C。

coutﻩD.cfile

3、包含自定义头文件file。

h得预处理指令就是(D)

A.#define

h〉B、#include file。

h

C。

#definefile、h D、#include"file、h"

4、用于标识十六进制前缀或后缀就是(D )

A、元    B。

后缀L或e  

C、前缀零  D。

前缀0x

5、设存在整型变量intx、则下列句与其它三项含义不同得就是(A)

A、int*p=&x;B.int&p=x;  C。

int & p=x;D.int &p=x;

6、在定义类成员时.为产生封装性、则需使用哪个关键字(D)

A.public  B.publish C。

protectedﻩ D。

private

7、设函数voids。

int&)将交换两形参得值。

如两整型变量int a=10;int b=15;

则执行s)后。

a、b值分别为(C )

A.10.10 ﻩB。

10、15

C、15、10  D。

15.15

8.函数默认参数在函数原型中说明、默认参数必须放在参数序列得( C)

A、前部B。

中部 C、后部 D、两端

9、设存在函数intmin(int。

int)返回两参数中较小值、若求15。

26。

47三者中最小值、下列表达式中错误得就是(B)

A。

intm=min(min(15、26)、min(15.47));

B、intm=min(15。

26。

47);

C、intm=min(15.min(47。

26)); 

D.intm =min(min(47、26)。

16);

10。

下列函数不能与函数voidprint(char)构成重载得就是(C)

A。

intprint(int);

B.void print(char.char);

C、int print(char);

D.void print(int。

int);

11、在下列成对得表达式中。

运算结果类型相同得一对就是(D)

A、7/2与7、0/2。

0

B、7/2、0与7/2 

C。

7.0/2与7/2

D、7。

0/2。

0与7。

0/2 

l2、内联函数得特点就是(D)

A。

减少代码量。

加快访问速度B。

减少代码量.减缓访问速度

C、增加代码量、减缓访问速度  D.增加代码量。

加快访问速度

13。

类得私有成员可在何处被访问(A)

A.本类得成员函数中  

B.本类及子类得成员函数中

C.通过对象名在任何位置 

D。

不可访问

14、类得构造函数在以下什么情况下会被自动调用(B)

A.定义成员函数时 

B。

定义对象时

C。

定义数据成员时

D、定义友元函数时

15。

下列关于析构函数描述正确得就是(D)

A。

可以重载  B。

函数体中必须有delete语句

C。

返回类型必须就是void类型

D、不能指定返回类型 

16。

设有函数TSum(T x、Ty){returnx+y;}。

其中T为模板类型、则下列语句中对该函数错误得使用就是(D )

A。

Sum(1、2);

B.Sum(3。

0。

2。

2);

C、Sum(‘A'。

‘C’);

D.Sum("A"。

”C");

17。

下列哪个编译指令属于条件编译指令( C)

A、#include ﻩB。

#define  C、#else  D、#pragma

18。

关于类得静态成员函数描述错误得就是(A)

A。

在创建对象前不存在 

B.不能说明为虚函数

C。

不能直接访问非静态函数 

D、不就是对象得成员

l9。

如果类A被声明成类B得友元。

则(D)  

A。

类A得成员即类B得成员 B。

类B得成员即类A得成员

C。

类A得成员函数不得访问类B得成员 

D、类B不一定就是类A得友元

20、派生类得对象可以访问以下那种情况继承得基类成员(D) 

A、私有继承得私有成员ﻩ

B、公有继承得私有成员

C、私有继承得保护成员 

D。

公有继承得公有成员

二、填空题(本大题共20小题。

每小题1分。

共20分)

请在每小题得空格中填上正确答案。

错填、不填均无分。

21.若使用标准输出流把整型变量a得值输出到屏幕上、实现此操作得C++语句就是cout<<a 。

22。

C++将数据从一个对象流向另一个对象得流动抽象为“流”。

从流中获取数据得操作称为 提取操作 。

23。

执行下列代码

  intb=100;

 cout<〈”Hex:

"〈

 程序得输出结果就是Hex:

64。

24。

静态联编所支持得多态性称为编译时或编译得多态性。

25。

C++程序必须有且只有一个主函数.其函数名为main。

26。

写出声明一个复数对象得语句、并使该对象被初始化为2、2+1、3i.此声明语句就是complex〈float> num(2、2,1.3)或complex〈double>num(2.2,1.3)。

27、若有函数定义为:

 int add(intml=0。

intm2=2、int m3=4)

{returnml+m2+m3;}

  在主函数中有int s=add(1)+add(0。

1)+add(0.1。

2);

则执行此语句后s得值为1528。

28。

C++中使用inline关键字说明函数为内联函数、

29。

在源程序中有宏定义:

#definePI3.14。

则若不想使该宏定义影响到程序得其它地方、可以使用#undefPI删除该宏定义、

30。

类与其它数据类型不同得就是、组成这种类型得不仅可以有数据、还可以有对数据进行操作得函数或成员函数、

31。

有下列代码inta=0;doubleb=0;cin〉>a>>b;当用键盘输入1、25时、b=0。

25、

32.对于类Point而言、其析构函数得定义原型为Point:

:

~Point()或~Point( )、

33、对象成员构造函数得调用顺序取决于这些对象在类中说明得顺序、与它们在成员初始化列表中给出得顺序无关。

34、类得简单成员函数就是指声明中不含const、volatile、static关键字得函数、

35。

与操作对象得数据类型相互独立得算法称为泛型算法。

36.从一个或多个以前定义得类产生新类得过程称为派生。

37。

在vector类中向向量尾部插入一个对象得方法就是push_back(constT&)、

38、C++中用于动态创建对象.并返回该对象得指针得关键字就是new。

39。

C++得流类库预定义得与标准输出设备相联接得流就是cout、

40.执行下列代码

cout<

0;

程序输出结果就是123。

三、改错题(本大题共5小题、每小题2分。

共10分)

下面得类定义中有一处错误.请用下横线标出错误所在行并给出修改意见。

41.#include<iostream。

h〉

 classf{

 private:

floatx.y;

  public:

f(floata、float b){x=a;y=b;}

    floatmax(){return(x〈y)?

x:

y;}  //求最大值

 } ;

main(){

fa(1、5.3。

8);

  cout〈

}  

return(x<y)?

x:

y; 该语句求得就是最小值。

应改为return(x>y)?

x:

y;或return(x<y)?

y:

x;

42.#include〈iostream。

h〉

class test{

 private:

intx;

  public:

test(inta){x=a;}

  void set(inta){x=a;}

 voidget(){cout<

main(){

consttest a(3);

a、set(5);

a.get();

a、set(5);a就是常对象、不能被更新

或const testa(3);去掉const使a不再为常对象

43。

#include〈iostream.h>

 classpoint{

private:

floatx、y;

public:

f1(floata、floatb){x=a;y=b;}

 point(){x=0;y=0;}

 void getx(){cout<〈x<<endl;}

 voidgety(){cout〈<y<〈endl;}

  };

 voidprint(pointa){cout〈

    main(){

 pointa;

a、f1(3、0.5、0);

   print(a);

print(pointa){cout<<a。

x<

floatx,y;改为public:

floatx,y;或cour<〈a.x〈<endl;改为 a。

getx();

44、#include<iostream、h〉

class f{

  private:

int x。

y; 

 public:

fl(inta、intb){x=a;y=b;}

  voidprint(){cout〈〈x<〈y<〈endl;}

} ;

 main(){

  fa;

a.f1(1。

5。

1.8);

a.print();

a、f1(1.5,1.8);f1()调用时实参与形参类型不一致

45。

#include<iostream。

h>

main(){

 intx=6;

 constint*p=x;

 cout〈〈*p<

}

constint *p=x;变量给指针p赋值必须加上&

四、完成程序题(本大题共5小题。

每小题4分、共20分)

46、完成下面程序.使其输出l0.并在退出运行时正确释放分配给指针得存储空间、

#include 

using namespacestd;

voidmain()

int*a。

*p;

a=newint(10);

p=_a_;

cout<〈*p〈〈endl;

deletep;或deletea;

}

47.#include <iostream〉

   usingnamespacestd;

 classbase

 {

private:

intx;

 public:

base(inta){x=a;}

 int get(){returnx;}

  voidshowbase() {cout<〈"x=”〈〈x〈

};

  class Derived:

publicbase

 {private:

inty;

 public:

Derived(int a、intb):

base(a){y=b;}

voidshowderived()

   {cout<<"x=”<

  }; 

  void main()

  {

baseb(3);

Derivedd(6.7);

   b。

showbase();

   d、showderived();

b=d;

b。

showbase();

  baseb1=b;或base&b1=b;或baseb1(6);

b1。

showbase();

base*pb=&bl;

pb—>showbase();

ﻩd。

showderived();

ﻩb.showbase();

输出结果如下:

x=3

x=6.y=7

x=6

x=6

x=6

x=6.y=7

x=6

48、下面程序得运行结果如下:

 B:

:

display()

C:

:

display()

在下划线处填上缺少得部分。

源程序如下:

#include

usingnamespacestd;

classB

public:

 virtual voiddisplay( ){cout<〈 "B:

:

display()"<〈endl;}

};

 classC:

public B

 {

 public:

voiddisplay(){cout<<”C:

:

display()"〈〈endl;}

};

 voidfun(B*p)

{

p—>display();

  }

voidmain()

 {

Bb。

*pb;

 C c;

  pb=&b;

  fun(pb);

  pb=&c;

fun(pb);

 }

49。

下面程序得运行结果如下:

Thisisline1

 Thisisline2

 Thisisline3

在下划线处填上缺少得部分。

源程序如下:

#include〈iostream>

 #include〈fstream或”fstream” 

  usingnamespacestd;

   voidmain()

{

 fstream fin,fout;

 fout。

open("my、txt"、ios:

:

out);

if(!

fout、is_open())

  return;

  for(inti=0;i〈3;i=i+1)

 fout<〈"Thisis line"〈

 fout、close();

 fin.open("my。

txt"。

ios:

:

in);

 if(!

 fin。

is_open())

 return;

charstr[100];

 while(!

fin。

eof())

{

   fin。

getline(str。

100);

cout<<str<<endl;

fin、close();

 }

50、在下划线处填上缺少得部分。

源程序如下:

  #include<iostream>

usingnamespacestd;

template<class T>或template〈typename T〉

 Tfun(T x)

 Ty;

 y=x*x-T(5);

  return y;

  }

voidmain()

 float a=2;

 cout<<fun(a);

五、程序分析题(本大题共4小题。

每小题5分。

共20分)

51、请写出myTextl.txt文本文件中得内容

#include<iostream>

#include〈string>

usingnamespacestd;

#include<fstream>

voidmain()  

ofstream myFile1;

my(”myTextl.txt");

cout〈〈”Enterthe datainChineseformat(e.g。

 、2008。

May25):

"<<endl;

string Date(”2008。

January1”);

stringYear=Date、substr(0.4);

intk=Date、find(”、");

inti=Date.find(””);

stringMonth=Date、substr(k+l、i—k-1);

string Day=Date.substr(i+1。

2);

stringNewDate=Day+” "+Month+" "+Year;

myFilel<<"originaldate:

”〈〈Date〈

myFile1〈<"Converted date:

”<〈NewDate<〈endl;

my();

}

original date:

2008,January 1 

Converted date:

1January2008

52.给出下面程序得输出结果

#include<iostream〉  

using namespacestd;

classSimple

{

intx.y;

public:

Simple(){x=y=0;}

Simple(inti.intj){x=i;y=j;}

voidcopy(Simple&s);

void setxy(int i、intj){x=i;y=j;}

voidprint(){cout〈〈"x="<<x<〈"、y="〈<y<〈endl;}

};

void Simple:

:

copy(Simple&s)

{

x=s。

x;y=s.y;

void func(Simple s1、Simple&s2)

{

s1。

setxy(30,40);

s2。

setxy(70、80);

voidmain()

{

Simple obj1(1。

2)、obj2;

obj2、copy(obj1);

func(obj1。

obj2);

obj1。

print();

obj2。

print();

}

x=1,y=2

x=70,y=80

53。

给出下面程序得输出结果

#include”iostream.h”

 intmain()

 {

inti=17;

  while(i>=10)

 if(--i%4==3)continue;

else

 cout〈<"i=”<

 }

i=16 i=14 i=12 i=10

54.给出下面程序得输出结果

 #include<iostream〉

 using namespace std;

 void main()

 intnum=300;

int&ref=num;

 cout<<ref;

ref=ref-100;

  cout<<" "〈

num=num-50;

cout〈<”"<<ref<〈endl;

300200150

六、程序设计题(本大题共1小题、共10分)

55、定义堆栈类模板Stack(先进后出)、栈得大小由使用者确定。

要求该类模板对外提供

 如下二种基本操作:

 

(1)push入栈

(2)pop出栈。

用数组来实现

 #include<iostream>

 usingnamespacestd;

template

class Stack{

Tx[size];

intcurrent;

public:

Stack(){current=0;}

 。

、。

、push(、。

、.);

 、。

、.pop(、、、、);

 };

请写出两个函数得过程(如果需要形式参数。

请给出形参类型与数量、以及返回值类型)

voidSatck〈T,size>:

:

push(T t){

if(current==size){

cout<<“The Stack isfull!

"<<endl;exit(0);}//堆栈满则程序结束

else{x[current]=t;current++;}//新元素入栈并修改栈顶指针

}

TStack

:

pop(){

if(current= =0){

cout<<”Thereisnoobjectin the Stack!

”<

else{Ta=x[current—1];current--;returna;} //栈顶元素出栈并修改栈顶指针

}

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

当前位置:首页 > 自然科学 > 物理

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

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