齐大C++试题3.docx
《齐大C++试题3.docx》由会员分享,可在线阅读,更多相关《齐大C++试题3.docx(18页珍藏版)》请在冰豆网上搜索。
齐大C++试题3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
试卷编号:
8744所属语言:
C++所属方案:
C++期末考试-批次1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
〖第1题〗『判断』(1分)(题号:
703)
调用系统函数时,要先将该系统函数的原型说明所在的头文件包含进去.
答案:
Y
〖第2题〗『判断』(1分)(题号:
661)
运算符重载的形式有两种:
成员函数形式和友元形式.
答案:
Y
〖第3题〗『判断』(1分)(题号:
642)
设置和清除格式标志字的成员函数需要通过对象来引用它们,输出显示格式的对象通常是cout.
答案:
Y
〖第4题〗『判断』(1分)(题号:
663)
具有纯虚函数的类是抽象类,它的特点是不可以定义对象.
答案:
Y
〖第5题〗『判断』(1分)(题号:
600)
对象成员的表示与结构变量成员的表示相同,使用运算符.或->.
答案:
Y
〖第1题〗『单项选择』(1分)(题号:
1382)
关于虚函数的描述中,()是正确的.
A:
虚函数是一个静态类型的成员
B:
虚函数是一个非成员函数
C:
基类中说明了虚函数之后,派生类中将其对应的函数可不必说明为虚函数
D:
派生类的虚函数与基类的虚函数具有不同的参数个数和类型
答案:
C
〖第2题〗『单项选择』(1分)(题号:
378)
下列关于运算符重载的描述中,()是正确的.
A:
运算符重载可以改变操作符的个数
B:
运算符重载可以改变优先级
C:
运算符重载可以改变结合性
D:
运算符重载不可以改变语法结构
答案:
D
〖第3题〗『单项选择』(1分)(题号:
1448)
下列的标识符中,()是文件级作用域的.
A:
函数形参
B:
语句标号
C:
外部静态类标识符
D:
自动类标识符
答案:
C
〖第4题〗『单项选择』(1分)(题号:
1456)
下列有关对函数模板参数的描述,错误的是().
A:
模板参数可以是一个或多个
B:
通常每个模板参数前必须加class
C:
模板参数是一个算术表达式
D:
模板参数是参数化的类型
答案:
C
〖第5题〗『单项选择』(1分)(题号:
711)
下列关于面向对象语言的基本要素的描述中,正确的是().
A:
封装性和重载性
B:
多态性和继承性
C:
继承性和聚合性
D:
封装性和继承性
答案:
D
〖第6题〗『单项选择』(1分)(题号:
1442)
在函数的返回值类型与返回值表达式的类型的描述中,()是错误的.
A:
函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的
B:
函数返回值的类型就是返回值表达式的类型
C:
函数返回值表达式类型与函数返回值类型不同时,表达式类型应转换成函数返回值类型
D:
函数返回值类型决定了返回值表达式的类型
答案:
B
〖第7题〗『单项选择』(1分)(题号:
1402)
关于子类型的描述中,()是错误的.
A:
子类型就是指派生类是基类的子类型
B:
一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型
C:
在公有继承下,派生类是基类的子类型
D:
子类型关系是不可逆的
答案:
A
〖第8题〗『单项选择』(1分)(题号:
1387)
已知:
inta,*pa=&a;输出指针pa十进制的地址值的方法是().
A:
cout<B:
cout<<*pa;
C:
cout<<&pa;
D:
cout<答案:
D
〖第9题〗『单项选择』(1分)(题号:
1419)
已知:
p是一个指向类A数据成员m的指针,A1是类A的一个对象.如果要给m赋值为5,()是正确的.
A:
A1.p=5
B:
A1->p=5
C:
A1.*p=5
D:
*A1.p=5
答案:
C
〖第10题〗『单项选择』(1分)(题号:
729)
在inta=3,*p=&a;中,*p的值是().
A:
变量a的地址值
B:
无意义
C:
变量p的地址值
D:
3
答案:
D
〖第11题〗『单项选择』(1分)(题号:
1440)
当一个函数无返回值时,定义它时函数的类型应是().
A:
void
B:
任意
C:
int
D:
无
答案:
A
〖第12题〗『单项选择』(1分)(题号:
1446)
在C++语言中,关于下列设置参数默认值的描述中,()是正确的.
A:
不允许设置参数的默认值
B:
设置参数默认值只能在定义函数时设置
C:
设置参数默认值时,应该是先设置右边的再设置左边的
D:
设置参数默认值时,应该全部参数都设置
答案:
C
〖第13题〗『单项选择』(1分)(题号:
739)
下列表达式中,()是非法的.已知:
inta=5;floatb=5.5;
A:
a%3+b
B:
b*b&&++a
C:
(a>b)+(int(b)%2)
D:
---a+b
答案:
D
〖第14题〗『单项选择』(1分)(题号:
1437)
下述关于break语句的描述中,()是不正确的.
A:
break语句可用于循环体内,它将退出该重循环
B:
break语句可用于开关语句中,它将退出开关语句
C:
break语句可用于if体内,它将退出if语句
D:
break语句在一个循环体内可以出现多次
答案:
C
〖第15题〗『单项选择』(1分)(题号:
1450)
下列标识符中,()不是局部变量.
A:
register类
B:
外部static类
C:
auto类
D:
函数形参
答案:
B
〖第16题〗『单项选择』(1分)(题号:
728)
在对字符数组进行初始化时,()是正确的.
A:
chars1[]="abcd";
B:
chars2[3]="xyz";
C:
chars3[][3]={'a','x','y'};
D:
chars4[2][3]={"xyz","mnp"}
答案:
A
〖第17题〗『单项选择』(1分)(题号:
1406)
在带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化().
A:
与虚基类下面的派生类个数有关
B:
多次
C:
二次
D:
一次
答案:
D
〖第18题〗『单项选择』(1分)(题号:
1432)
下列do-while已知:
循环的循环次数为().已知
inti(5);
do
{cout<i--;
}while(i!
=0);
A:
0
B:
1
C:
5
D:
无限
答案:
D
〖第19题〗『单项选择』(1分)(题号:
714)
下面关于对象概念的描述中,()是错误的.
A:
对象就是C语言中的结构变量
B:
对象代表着正在创建的系统中的一个实体
C:
对象是一个状态和操作(或方法)的封装体
D:
对象之间的信息传递是通过消息进行的
答案:
A
〖第20题〗『单项选择』(1分)(题号:
1433)
下列for循环的循环体执行次数为().
for(inti(0),j(10);i=j=10;i++,j--)
A:
0
B:
1
C:
10
D:
无限
答案:
D
〖第1题〗『WINDOWS操作』(15分)(题号:
9)
---------------------------------------------------------------------
请在打开的窗口中,进行下列操作,完成所有操作后,请关闭窗口。
---------------------------------------------------------------------
1:
将文件夹“tk”剪切到文件夹“tw”内。
2:
将文件夹“tk”改名为“tkk”。
3:
将文件夹“tr”复制到文件夹“tw”内。
4:
在文件夹“tw”文件夹内新建一个名为“lh”的Word文档,并把Word文档
“lh”复制到此目录下的文件夹“tr”内。
〖第1题〗『程序填空』(10分)(题号:
48)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:
设置Area()函数是虚函数,实现动态联编。
-------------------------------------------------------*/
#include
classPoint
{
public:
Point(doublei,doublej){x=i;y=j;}
/***********SPACE***********/
【】doubleArea()const{return0.0;}
private:
doublex,y;
};
/***********SPACE***********/
classRectangle:
【】
{
public:
Rectangle(doublei,doublej,doublek,doublel);
doubleArea()const{returnw*h;}
private:
doublew,h;
};
/***********SPACE***********/
Rectangle:
:
Rectangle(doublei,doublej,doublek,doublel):
【】
{
w=k;h=l;
}
/***********SPACE***********/
voidfun(Point【】)
{
cout<}
voidmain()
{
Rectanglerec(3.0,5.2,15.0,25.0);
fun(rec);
}
答案:
1).virtual
2).publicPoint
3).Point(i,j)
4).&s
〖第2题〗『程序填空』(10分)(题号:
332)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:
以下程序的功能是产生并输出杨辉三角的前七行。
1
11
121
1331
14641
15101051
1615201561
-------------------------------------------------------*/
#include
voidmain()
{
/***********SPACE***********/
【】;
inti,j,k;
for(i=0;i<7;i++)
/***********SPACE***********/
{a[i][0]=1;【】;}
for(i=2;i<7;i++)
for(j=1;j
/***********SPACE***********/
a[i][j]=【】;
for(i=0;i<7;i++)
{
/***********SPACE***********/
for(j=0;【】;j++)
cout<cout<}
}
答案:
1).inta[7][7]或inta[10][10]或inta[8][8]或inta[9][9]
2).a[i][i]=1
3).a[i-1][j-1]+a[i-1][j]或a[i-1][j]+a[i-1][j-1]
4).j<=i或i>=j或jj
〖第1题〗『程序改错』(10分)(题号:
61)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
题目:
利用友元函数,将运算符"+"重载为类的成员函数,实现类
的两个对象的相加运算。
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/
#include
classsample
{
private:
intx;
public:
sample(){}
sample(inta)
{
x=a;
}
voiddisp()
{
cout<<"x="<}
/***********FOUND***********/
friendsampleoperator+(sample&s);
};
/***********FOUND***********/
samplesample:
:
operator+(sample&s1,sample&s2)
{
/***********FOUND***********/
return(s1+s2);
}
voidmain()
{
sampleobj1(10);
sampleobj2(20);
sampleobj3;
obj3=obj1+obj2;
/***********FOUND***********/
disp();
}
答案:
1).friendsampleoperator+(sample&s1,sample&s2);
2).sampleoperator+(sample&s1,sample&s2)
3).return(s1.x+s2.x);
4).obj3.disp();
〖第2题〗『程序改错』(10分)(题号:
85)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
题目:
定义一个基类A,又定义两个公有继承的派生类D1和D2,定
义一个普通函数print_info()形参为指向对象的指针,它
们的调用都采用动态联编,将A类中的print()定义为虚函
数,并有如下输出:
TheAversionA
TheD1info:
4version1
TheD2info:
100versionA
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/
#include
classA
{
public:
A(){ver='A';}
/**********FOUND**********/
voidprint()
{
cout<<"TheAversion"<}
protected:
charver;
};
/**********FOUND**********/
classD1
{
public:
D1(intnumber){info=number;ver='1';}
voidprint()
{cout<<"TheD1info:
"<private:
intinfo;
};
classD2:
publicA
{
public:
D2(intnumber){info=number;}
voidprint()
{cout<<"TheD2info:
"<private:
intinfo;
};
/**********FOUND**********/
voidprint_info(Ap)
{
p->print();
}
voidmain()
{
Aa;
D1d1(4);
D2d2(100);
/**********FOUND**********/
print_info(a);
print_info(&d1);
print_info(&d2);
}
答案:
1).virtualvoidprint()
2).classD1:
publicA
3).voidprint_info(A*p)
4).print_info(&a);
〖第3题〗『程序改错』(10分)(题号:
69)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
题目:
利用插入法将20个数排列成降序,并计算排序后的序列中第10个
数到第20个数的和.
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/
#include
voidmain()
{floats,a[21]={1,3,5,7,9,2,4,6,8,10,13,65,76,34,23,15,64,33,234,66};
/***********FOUND***********/
inti,j;
for(j=2;j<=20;j++)
{k=j-1;
a[0]=a[j];
/***********FOUND***********/
while(k>=0&&a[k]>a[0])
{
/***********FOUND***********/
a[k]=a[k+1];
k--;}
/***********FOUND***********/
a[k]=a[0];
}
for(i=1;i<=20;i++)
cout<s=0.0;
for(j=10;j<=20;j++)
s=s+a[j];
cout<
}
答案:
1).int★i★,★j★,★k★;
2).while(k>=0&&a[k]3).a[k+1]=a[k];
4).a[k+1]=a[0];
〖第1题〗『程序设计』(10分)(题号:
259)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
题目:
将10个数按降序排列。
--------------------------------------------------
注意:
部分源程序给出如下。
请勿改动主函数main和其它
函数中的任何内容,仅在函数的花括号中填入所编
写的若干语句。
------------------------------------------------*/
#include
#include
#include
voidwriteinfile(intn[])
{
intk;
fstreammyfile;
myfile.open("f.txt",ios:
:
out);
for(k=0;k<10;k++)
myfile<myfile.close();
}
voidmain()
{
intn[10]={5,6,4,2,3,7,8,5,6,7},i,j,k;
/**********Program**********/
/**********End**********/
writeinfile(n);
}
答案:
----------------------
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(n[i]{k=n[j];n[j]=n[i];n[i]=k;}
----------------------