C考试样卷4讲解Word文档格式.docx
《C考试样卷4讲解Word文档格式.docx》由会员分享,可在线阅读,更多相关《C考试样卷4讲解Word文档格式.docx(18页珍藏版)》请在冰点文库上搜索。
11、#include<
iostream.h>
inta=3;
intf(int);
voidmain()
{inta=5;
f(a);
cout<
<
"
a="
<
a<
endl;
}
voidf(intb)
{
b=4;
a+=b;
程序的输出结果是[11]
A)3B)5C)7D)9
12、以下程序运行结果是[12]。
#include<
voidmain(){
intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;
break;
case1:
b++;
}
case2:
a++;
cout<
a<
”,”<
b;
A)2,1B)1,2C)1,1D)0,0
13、执行下列程序段时,输出[15]。
ints1=0,s2=0,s3=0,s4=0;
for(intt=1;
t<
=4;
t++)
switch(t)
case4:
s1++;
case3:
s2++;
case2:
s3++;
default:
s4++;
cout<
s1<
”,”<
s2<
s3<
s4<
A)语法出错B)1,1,1,2C)1,2,3,2D)1,1,2,2
14、下列说法正确的是:
[13]。
A)一个类的对象可以是另一个类的成员
B)一个类可以作为另一个类的派生类
C)
一个类定义在另一个类的说明中
D)
以上说法均正确
15、类MyClass的定义如下:
classMyClass
public:
MyClass(){value=0;
SetValue(inti){value=i;
private:
intvalue;
};
则对语句:
MyClass*p,my;
p=&
my;
正确的描述是[14]。
A)
语句p=&
是把对象my赋值给指针变量p;
B)
语句MyClass*p,my;
会调用两次类MyClass的构造函数
对语句*p.SetValue(5)的调用是正确的
语句p->
SetValue(5)与my.SetValue(5)等价
16、下列各类函数中,不是类的成员函数。
A)构造函数B)析构函数C)友元函数D)拷贝构造函数
17、派生类的对象对它的基类成员中是可以访问的。
A)公有继承的公有成员
B)公有继承的私有成员
C)公有继承的保护成员
D)私有继承的公有成员
18、有关析构函数的说法不正确的是。
A)析构函数有且只有一个
B)析构函数无任何函数类型
C)析构函数和构造函数一样可以有形参
D)析构函数的作用是在对象被撤销时收回先前分配的内存空间
19、通常拷贝构造函数的参数是。
A)某个对象名
B)某个对象的成员名
C)某个对象的引用名
D)某个对象的指针名
20、若类A和类B的定义如下:
classA
{inti,j;
voidget();
}
classB:
A
{intk;
voidmake();
voidB:
:
make()
{
k=i*j;
则上述定义中,是非法的表达式。
A)voidget();
B)intk;
C)voidmake();
D)k=i*j;
二、填空题(每空1分,共20分)
1、数学式子x2+y2写成C++语言表达式是[1]。
2、如果a=1,b=2,c=3,d=4,则条件表达式a<
b?
a:
c<
d?
c:
d的值为[2]。
3、设有函数定义:
intf1(void){return100,200;
},调用f1时,函数返回值为[3]。
4、C++使用cin和cout进行输入输出操作的程序必须包含头文件[4],其语句形式为[5]。
5、用C++表达式描述命题“a与b中有一个小于c”:
[6]。
6、函数调用语句fun(a+b,(x,y),fun(n+k,d,(a,b)))中实参的个数为[7]。
7、定义内联函数所用的关键字[8],定义友元所用的关键字为[9]。
8、执行常量定义语句constintsize=100*sizeof(int);
后,符号常量size的值为[10]。
9、设m=1,n=2,则表达式m++==n和++m==n的值分别为[11]和[12]。
10、任何类中允许有[13]、[14]、[15]三种类型的数据,数据和成员函数的默认类型为[16]。
11、C++支持面向对象程序设计的四个要素是:
封装性、继承和派生、[17]和[18]。
12、若Queue是一个类,aQueue是它的一个对象,而且该类中定义了一个静态成员函数show()则在类外对该成员的函数进行调用的方式可以为[19]和[20]。
三、阅读程序,写出程序运行结果(第[3]、[10]空为3分,其余每空1分,共20分)
1、写出下列程序的运行结果
classCSample
{public:
CSample();
voidDisplay();
private:
inti;
staticintk;
};
Csmaple:
CSample()
{i=0;
k++;
voidCSample:
Display()
{cout<
”i=”<
i<
”k=”<
k<
intCSample:
k=0;
voidmain()
{CSamplea,b;
a.Display();
b.Display();
程序的输出结果为[1]
[2]。
2、#include<
voidsplitfloat(floatx,int*p1,float*p2)
*p1=(int)x;
*p2=x-*p1;
intn;
floatx,f;
cin>
>
x;
splitfloat(x,&
n,&
f);
cout<
”n=”<
n<
”f=”<
f<
输入3.1415,输出结果为________[3]________
3、#include<
intnextStudentID=0;
classStudentID
{public:
StudentID(intid=0)
{value=id;
“Assigningstudentid:
”<
value<
~StudentID()
{--nextStudentID;
“DestructingID:
}
protected:
classstudent
student(char*pName=“noname”,intssID=0):
id(ssID)
{cout<
“Constructingstudent:
pname<
StudentIDid;
{students(“Randy”,9818);
studentt(“Jenny”,9819);
输出结果为____[4]___________
[5]
[6]
[7]
[8]
[9]。
4、#include<
classB
B(){};
B(inti,intj);
voidprintb();
inta,b;
classA
A(){};
A(inti,intj);
voidprinta();
Bc;
A:
A(inti,intj):
c(i,j)
{};
voidA:
printa()
{c.printb();
B:
B(inti,intj)
{a=i;
b=j;
voidB:
printb()
{cout<
”a=”<
”b=”<
b<
Am(7,8);
m.printa();
输出结果为_____[10]__________
5、#include<
B();
B(inti);
~B();
voidPrint();
intb;
B()
{b=0;
"
B'
sdefaultconstructorcalled."
B(inti)
{b=i;
sconstructorcalled."
~B()
sdestructorcalled."
Print()
classC:
publicB
C();
C(inti,intj);
~C();
intc;
C:
C()
{c=0;
C'
C(inti,intj):
B(i)
{c=j;
~C()
voidC:
Print()
{B:
Print();
{Cobj(5,6);
obj.Print();
输出结果为_____[11]__________
[12]
[13]
[14]
[15]
[16]
四、改错题:
指出下列程序的错误,并说明原因(每错2分,共10分)
1、#include<
classA{
public:
voidA(inti=0){m=i;
voidshow(){cout<
m;
void~A(){}
intm;
Aa(5);
a.m+=10;
a.show();
________[1]________________[2]________________[3]________
2、#include<
voidsetA(int);
voidshowA();
inta;
voidsetB(int);
voidshowB();
classC:
publicA,privateB
voidsetC(int,int,int);
voidshowC();
setA(intx)
{a=x;
setB(intx)
{b=x;
setC(intx,inty,intz)
{SetA(x);
SetB(y);
c=z;
intmain()
{Cobj;
obj.setA(5);
obj.showA();
obj.setC(6,7,9);
obj.showC();
obj.setB(6);
obj.showB();
return0;
________[4]________________[5]________
五、程序填空:
(每空2分,共10分)
1、下面程序的功能是:
从键盘上输入若干个整数按升序排序后输出;
#include“iostream.h”
voidsort(inta[],intn)
{for(inti=0;
n-1;
i++)
for(intj=i+1;
j<
n;
j++)
if([1]){intt=a[i];
a[i]=a[j];
a[j]=t;
voidInput(int*p,intn)
“输入”<
”个整数。
for(inti=0;
i++)cin>
[2];
voidOutput(int*p,intn)
i++)cout<
[3]<
’/t’;
voidmain(void)
{intx[200],intnum;
”输入安排序数的个数:
”;
cin>
num;
Input(x,num);
Sort(x,num);
Output(x,num);
2、下列程序的功能是:
从堆中获取一个整数数组,赋值并打印。
alloc.h>
{intarraysize;
//定义元素个数
int*array;
“pleaseinputanumberofarray:
arraysize;
if(array=[4])==Null)
“Can’tallocatemorememory!
exit
(1);
for(intcount=0;
count<
count++)
array[count]=count*2;
array[count]<
“”;
[5];
六、编写下面问题的C++程序(每题10分,共20分)
1、
建立一个ARRAY类,求一维数组中各元素的最大值、最小值和平均值。
要求如下:
(1)
私有成员:
●
intdata[10]:
数组名称
intmax:
元素的最大值
intmin:
元素的最小值
floataverage:
各元素的平均值
(2)
公有成员:
构造函数ARRAY(inta[10]):
初始化成员数组
voidprocess():
求data数组中的最大值、最小值和平均值
voidprint():
输出数组中元素的最大值、最小值和平均值
(3)
在主程序中进行该类的测试。
2、编写一个学生和教师数据输入和显示程序,学生数据要求有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。
要求将编号、姓名的输入和显示设计成一个类person,并作为学生数据操作类student和教师数据操作类teacher的基类,学生数据中的班号和成绩的输入和显示在student类中实现,教师数据中的职称和部门的输入和显示在teacher类中实现。
最后在主函数中进行该类的测试。
下面给出了基类person的主要成员:
intno;
编号
charname[10];
姓名
voidinput();
编号和姓名的输入
voiddisplay();
编号和姓名的显示