C程序设计试题及答案 2文档格式.docx
《C程序设计试题及答案 2文档格式.docx》由会员分享,可在线阅读,更多相关《C程序设计试题及答案 2文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
index(Array,2)++后,Array中各元素值为
A.{0,1,2}B.{l,1,2}
C.{1,2,4}D.{0,2,3}
6.类构造函数定义的位置是
A.类体内或体外B.只是在类体内
C.只在类体外D.在类的成员函数中
7.设存在数组a,其长度为Len,则下列哪项泛型算法用于在a中寻找值Value的位置
A.reverse(a,a+Len,Value);
B.sort(a,a+Len,Value);
C.find(a,a+Len,Value);
D.copy(a,a+Len,Value);
8.关于对象的性质,下列描述错误的是:
A.同一类对象间可相互赋值B.可以使用对象数组
C.对象不可以用作函数参数D.一个对象可以用作另一个类的成员
9.声明一个没有初始化参数的对象,需调用
A.指定参数构造函数B.拷贝构造函数
C.初始化函数D.默认构造函数
10.下列运算符不能重载的是
A.!
B.sizeof
C.newD.delete
11.如P是一指针类型表达式,则下列表达式中不是左值表达式的是
A.PB.*P
C.&
PD.P+1
12.使用下列流格式控制符能输出一个换行符的是
A.decB.oct
C.hexD.endl
13.下列表达式,能将P声明为常量指针的是
A.constint*P;
B.int*constP;
C.constint*constPD.int*P
14.C++程序文件扩展名为
A..cppB..h
C..libD..obj
15.对C++中主函数描述正确的是
A.名称为main,可为多个B.名称不限,可为多个
C.名称为main,必须有且只能有一个D.名称不限,必须有且只能有一个
16.假定有char*P="
Hello"
;
,要输出这个字符串的地址值的正确写法是
A.cout<
<
*PB.cout<
P
C.cout<
&
PD.cout<
(void*)P
17.下列描述错误的是
A.在没创建对象前,静态成员不存在
B.静态成员是类的成员,不是对象成员
C.静态成员不能是虚函数
D.静态成员函数不能直接访问非静态成员
18.对于友元描述正确的是
A.友元是本类的成员函数B.友元不是本类的成员函数
C.友元不是函数D.以上皆不正确
19.一个函数功能不太复杂,但要求频繁使用,则该函数适合作为
A.内联函数B.重载函数
C.递归函数D.嵌套函数
20.下列默认参数的声明不正确的是
A.intmax(inta,intb,intc,intd=0);
B.intmax(inta,intb,intc=0,intd=0);
C.intmax(inta=0,intb,intc=0,intd=0);
D.intmax(inta,intb=0,intc=0,intd=0);
非选择题部分
注意事项:
用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。
二、填空题(本大题共20小题,每小题1分,共20分)
21.C++程序的编译是以___文件___为单位进行的。
22.默认参数是在__函数原型____中说明的,默认参数可以多于一个。
23.通过C++语言中的___派生___机制,可以从现存类中构建其子类。
24.拷贝构造函数使用___引用对象___作为参数初始化创建中的对象。
25.基类的公有成员在通过公有派生得到的子类中访问权限是___公有类型___。
26.要关闭一个输出流对象myFile,所用的C++语句是___myFile.close()___。
27.执行下列代码:
doublepi=3.1415926;
cout<
setprecision(5)<
pi;
程序的输出结果是___3.1416___。
28.对象作为函数参数,就是将实参对象的___值___传递给形参对象,这种传递是单向的。
29.建立一个对象时,对象的状态是不确定的。
为了使对象的状态确定,必须对其进行正确的__初始化____。
30.C++类中的___析构___函数在对象的生存期结束时被自动调用。
31.C++语言中的整数常量有四种:
十进制常量、长整型常量、八进制常量和___十六进制常量___。
32.UML中对象之间的静态关系是通过对象属性之间的连接反映的,称之为___实例连接___。
33.声明一个常成员函数Fun,返回类型为char,第一个参数类型为int,第二个参数类型为double,则该函数的声明原型是___charFun(int,double)const;
___。
34.在C++语言中,利用向量类模板定义一个具有20个int类型且初值为1的向量C,实现此操作的语句是___vector<
int>
C(20,1)___。
35.执行下列代码:
inta=123,b=321;
setw(3)<
a<
b<
endl;
程序输出结果是:
__123321____。
36.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的___地址值___。
37.vector类中用于返回向量中第一个对象的方法是___front()___。
38.C++语言中动态分配内存的关键字是__new____。
39.C++类成员的访问权限有___私有___、公有和保护三种。
40.写出声明一个复数对象num的语句,并使对象被初始化为单精度2.2+1.3i,此声明语句是__complex<
float>
num(2.2,1.3)____。
三、改错题(本大题共5小题,每小题4分,共20分)
下面的每题中有一处错误,请在答题纸上写出错误所在行并给出修改意见
41.#include<
iostream.h>
main(){
intx=5,y=6;
constint*p=&x;
*p=y;
指向常量的指针P不能进行左值操作
cout<
*p<
}
42.#include<
classf{
private:
Tx,y;
模板没有声明
public:
f1(Ta,Tb){x=a;
y=b;
}
Tmax(){return(x>
y)?
x:
y;
};
main(){
fa;
a.f1(1.5,3.8);
a.max()<
43.#include<
classpoint{
private:
floatx,y;
public:
point(floata,floatb){x=a;
f(){x=0;
y=0;
voidgetx(){cout<
x<
voidgety(){cout<
y<
pointa(3.5);
没有定义一个参数的构造函数
a.getx();
44.#include<
classf{
private:
floatget(){returnx+y;
f1(floata,floatb){x=a;
a.f1(1,3.8);
a.get()<
get()函数为私有类型
45.#include<
classtestl{
Intx;
testl(){x=2;
voidset(inta){x=a;
voidget(){cout<
classtest2{
intx;
test2(){x=3;
voidget(){cout<
classtest:
publictestl,publictest2.{
voidset(inta){x=a;
voidgettest(){cout<
testa;
a.get();
get()存在二义性,使用时需要指出使用哪个基类的函数。
例如:
a.test1:
:
get()
四、完成程序题(本大题共5小题,每小题4分,共20分)
46.完成下面类中的成员函数的定义。
classpoint
{
intm,n;
point(int,int);
point(point&);
point:
point(inta,intb)
m=a;
___n__=b;
point(___point&
t___)
m=t.m;
n=t.n;
47.#include<
iostream>
usingnamespacestd;
classbase
base(inta){x=a;
intget(){returnx;
voidshowbase(){cout<
"
x="
classDerived:
publicbase
{private:
inty;
Derived(inta,intb):
base(a){y=b;
voidshowderived()
{cout<
get()<
,y="
voidmain()
baseb(3);
Derivedd(6,7);
b.showbase();
d.showderived();
________b=d__________;
_______base&
b1=b___________;
b1.showbase();
base*pb=&b1;
’
pb->
showbase();
输出结果如下:
x=3
x=6,y=7
x=6
x=6
48.#include<
#include<
fstream>
classcomplex
intreal:
intimag;
complex(intr=0,inti=0)
real=r;
imag=i;
complexoperator+(____complex&
a______,complex&b)
intr=a.real+b.real:
inti=a.imag+b.imag;
return____complex(r,i)______:
voidmain()
complexx(1,2),y(3,4),z;
z=x+y;
z.real<
+"
z.imag<
i"
49.下面程序的运行结果如下:
Thisisline1
Thisisline2
Thisisline3
将下列程序补充完整,答案写在答题纸上。
源程序如下:
#include<
#include___<
___
fstreamfin,fout;
fout.open("
my.txt"
,ios:
out);
if(!
fout.is_open())
return;
for(inti=0;
i<
3;
i=i+1)
fout<
Thisisline"
i+1<
fout.close();
fin.open("
in);
fin.is_open())
charstr[100];
while(_!
fin.eof_____)
fin.getline(str,100);
str<
fin.close();
50.求两个浮点数之差的cha函数的原型声明、调用方法。
floata,b;
___floatcha(float,float)___;
∥函数cha的原型声明
a=12.5;
b=6.5;
floatc=____cha(a,b)______;
∥调用函数cha
c<
floatcha(floatx,floaty)
floatw;
w=x-y;
returnw;
五、程序分析题(本大题共2小题,每小题5分,共1O分)
51.#lnclude<
voidfunc();
for(inti=0;
6;
i++)
func();
voidfunc()
intx=0;
x++;
staticinty=0;
y++;
y="
答:
x=1;
y=1
y=2
y=3
y=4
y=5
y=6
52.#include<
lostream.h>
classA
A();
voidShow();
~A();
staticintc;
intA:
c=O;
A:
A()
constructor."
c+=10;
voidA:
Show()
c="
~A()
destrucator."
endl:
Aa,b;
a.Show();
b.Show();
constructor.
c=20
destrucator.
六、程序设计题(本大题共1小题,共10分)
53.在三角形类tri实现两个函数,功能是输入三个顶点坐标判断是否构成等边三角形
math.h>
classpoint{point
f(floata,floatb){x=a;
Voidset(floata,floatb){x=a;
floatgetx(){returnx;
noatgety(){returny;
classtri{
pointx,y,z;
floats1,s2,s3;
public....settri(....);
∥用于输入三个顶点坐标
....test(....);
∥用于判断是否构成等边三角形
请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)