二级C++语言程序设计模拟试题及答案解析(8)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二级C++语言程序设计模拟试题及答案解析(8)
(1/40)单项选择题
第1题
下面叙述中错误的是______。
A.软件测试的目的是发现错误并改正错误
B.对被调试的程序进行“错误定位”是程序调试的必要步骤
C.程序调试通常也称为Debug
D.软件测试应严格执行测试计划,排除测试的随意性
下一题
(2/40)单项选择题
第2题
下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是______。
A.cout<<internal<<32345;
B.cout<<left<<12345;
C.cout<<right<<12345;
D.cout<<setw(6)<<12345;
上一题下一题
(3/40)单项选择题
第3题
有如下程序:
#include<iostream>
using namespace std;
class test{
private:
int a;
public:
test(){cout<<"constructor"<<endl;}
test(int a){cout<<a<<endl;}
test(const test &_test){
a=_test.a;
cout<<"copy constructor"<<endl;
}
~test(){cout<<"destructor"<<endl;}
};
int main(){
test A(3);
return 0;
}
执行这个程序的输出结果是______。
A.3
B.constructor
destructor
C.copy constructor
destructor
D.3
destructor
上一题下一题
(4/40)单项选择题
第4题
索引属于
A.模式
B.内模式
C.外模式
D.概念模式
上一题下一题
(5/40)单项选择题
第5题
C++模板包括。
A.类模板和函数模板
B.模板类和模板函数
C.类和函数
D.对象和函数
上一题下一题
(6/40)单项选择题
第6题
有如下程序:
#include<iostream>
using namespace std;
class Base{
protected:
Base(){cout<<'Base';}
Base(char c){cout<<c;}
};
class Derived:public Base{
public:
Derived(char c){cout<<c;}
};
int main(){
Derived d('Derived');
return 0;
}
执行这个程序屏幕上将显示输出。
A.Derived
B.DerivedBase
C.BaseDerived
D.DerivedDerived
上一题下一题
(7/40)单项选择题
第7题
下列函数的运行结果是______。
#include<iostream.h>
int f(int a,int b)
{ int c;
if(a>b)c=1;
else if(a==b)c=0;
else c=-1;
return(c);}
void main()
{ int i=2,j=3;
int p=f(i,j);
cout<<p;}
A.-1
B.1
C.2
D.编译出错,无法运行
上一题下一题
(8/40)单项选择题
第8题
下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是______。
A.cout<<intemal<<12345;
B.cout<<left<<12345;
C.cout<<right<<12345;
D.cout<<setw(6)<<12345;
上一题下一题
(9/40)单项选择题
第9题
对虚函数的调用。
A.一定使用动态联编
B.必须使用动态联编
C.一定使用静态联编
D.不一定使用动态联编
上一题下一题
(10/40)单项选择题
第10题
若执行下面的程序时,从键盘上输入5和2,则输出结果是______。
# include<iostream.h>
void main()
{ int a,b,k;
cin>>a>>b;
k=a;
k=a%b;
else
k=b%a;
cout<<k<<endl;}
A.5
B.3
C.2
D.0
上一题下一题
(11/40)单项选择题
第11题
下面对静态数据成员的描述中,正确的是。
A.静态数据成员可以在类体内进行初始化
B.静态数据成员不可以通过类的对象调用
C.静态数据成员不能受private(私有)控制符的作用
D.静态数据成员可以直接通过类名调用
上一题下一题
(12/40)单项选择题
第12题
有如下程序:
# include <ioslreclm>
Using namespace std;
class Base{
public:
Base(int x=0):valB(x){cout<<valB;}
~Base(){cout<<valB;}
Private:
int valB;
};
class, Derived: public Base{
public:
Dcrived(int x=0,int y=0):Base(x),valD(y)
{cout<<valD;}
~Derived(){cout<<valD;}
private:
int valD;
};
int main(){
Derived obj12(2,3);
return 0;
}
运行时的输出结果是,
A.2332
C.3232
D.3223
上一题下一题
(13/40)单项选择题
第13题
最简单的交换排序方法是
A.快速排序
B.选择排序
C.堆排序
D.冒泡排序
上一题下一题
(14/40)单项选择题
第14题
有下列程序:
#include <stdio.h>
int b=2;
int fun(int*k)
{ b=*k+b;return(b);}
void main()
{ int a[10]={1,2,3,4,5,6,7,8},i;
for(i=2;i<4;i++)(b=fun(&a[i])+b;printf
("%d",b);}
printf("\n"};
}
程序运行后的输出结果是______。
A.10 12
B.8 10
C.10 28
D.10 16
上一题下一题
(15/40)单项选择题
第15题
在一个派生类的成员函数中,试图调用其基类的成员函数“void f();”,但无法通过编译。
这说明______。
A.f()是基类的私有成员
B.f()是基类的保护成员
C.派生类的继承方式为私有
D.派生类的继承方式为保护
上一题下一题
(16/40)单项选择题
第16题
对于类定义
class A {
virtual void funcl(){}
void func2(){}
};
class D:public A{
public:
void funcl(){cout<<"class B rune 1"<<end1;}
virtual void func2(){cout<<"class B func 2"<<end1;}
};
下面正确的叙述是______。
A.A::func2()和B::funcl()都是虚函数
B.A::func2()和B::funcl()都不是虚函数
C.B::func1()是虚函数,而A::func2()不是虚函数
D.B::func1()不是虚函数,而A::func2()是虚函数
上一题下一题
(17/40)单项选择题
第17题
要利用C++流实现输入/输出的各种格式控制中,必须在持续中包含的头文件是______。
A.fstream
B.istream
C.ostream
D.iomanip
上一题下一题
(18/40)单项选择题
第18题
有如下程序:
#include<iostream>
using namespace std;
class A{
public:
A(int i):rl(i){}
void print(){cout<<'E'<<r1<<'-';}
void print()const{cout<<'C'<<r1*r1<<'-';}
private:
int rl;
};
int main(){
A al(2); const A a2(4);
a1.print(); a2.print();
return 0;
}
运行时的输出结果是______。
A.运行时出错
B.E2-C16-
D.E2-E4-
上一题下一题
(19/40)单项选择题
第19题
. 有如下程序:
#include<iostream>
using namespace std;
class test {
private:
int a;
public:
test() {cout<<"constructor"<<endl;}
test(int a) {cout<<a<<endl;}
test(const test&_test) {
a=_test. a;
cout<<"copy constructor"<<endl;
}
~test() {cout<<"destructor"<<endl;}
};
int main() {
test A(3);
return 0;
}
执行这个程序的输出结果是______。
A.3
B.图片C.
图片D.图片
A.A
B.B
C.C
D.D
上一题下一题
(20/40)单项选择题
第20题
如果算符函数调用格式的表达式:x.operator-(operator++(y,0)中的“—”是作为成员函数重载的,“++”是作为友元函数重载的,那么该表达式还可以表示为:()
A.x-y++
B.x-(++y)
C.(x++)-y
D.++x-y
上一题下一题
(21/40)单项选择题
第21题
下面关于对象概念的描述中,是错误的。
A.对象就是C语言中的结构体变量
B.对象代表着正在创建的系统中的一个实体
C.对象是一个状态和操作(或方法)的封装体
D.对象之间的信息传递是通过消息进行的
上一题下一题
(22/40)单项选择题
第22题
有以下程序:
#include<iostream>
using namespace std;
class A{
public:
A(){cout<<"A";}
};
classB{public:B(){cout<<"B";}};
classC:public A{
B b:
public:
C(){cout<<"C";}
};
int main(){ C obj; return 0;}
执行后的输出结果是______。
A.CBA
B.BAC
C.ACB
D.ABC
上一题下一题
(23/40)单项选择题
第23题
下列字符串中,不可以用做C++标识符的是______。
A.y_2006
B._TEST_H
C.Return
D.switch
上一题下一题
(24/40)单项选择题
第24题
已知类IMS中两个成员函数的声明为“void listen()const;”与“void speak();”,另有两个对象的定义为“IMS obj1;”与“const IMS obj2;”,则下列语句中,产生编译错误的是______。
A.obj1.listen();
B.obj1.speak();
C.obj2.listen();
D.obj2.speak();
上一题下一题
(25/40)单项选择题
第25题
以下定义语句中正确的是______。
A.int a=b=0;
B.char A=65+1,b='b';
C.float a=1,"b=&a,"c=&b;
D.double a=0.0;b=1.1;
上一题下一题
(26/40)单项选择题
第26题
类模板的使用实际上是将类模板实例化成一个具体的。
A.类
B.对象
C.函数
D.模板类
上一题下一题
(27/40)单项选择题
第27题
有如下类定义:
class B{
public:
void fun1(){}
private:
void fun2(){}
protected:
void fun3(){}
};
class D:public B{
protected:
void fun4(){}
};
若obj是类D的对象,则下列语句中不违反访问控制权限的是______。
A.obj.fun1();
B.obj.fun2();
C.obj.fun3();
D.obj.fun4();
上一题下一题
(28/40)单项选择题
第28题
下列语句分别是不同程序中的第一个输入输出语句。
若去掉其中的“<<left”,输出效果将发生变化的是
A.cout<<left<<setfill('*')<<357;
B.cout<<left<<setw(5)<<357;
C.cout<<left<<setw(5)<<"ABCDE";
D.cout<<left<<"ABCDE";
上一题下一题
(29/40)单项选择题
第29题
下列有关类继承的叙述中,错误的是______。
A.继承可以实现软件复用
B.虚基类可以解决由多继承产生的二义性问题
C.派生类构造函数要负责调用基类的构造函数
D.派生类没有继承基类的私有成员
上一题下一题
(30/40)单项选择题
第30题
有如下程序:
#include<iostream>
using namespace std;
void fl(int8,.x,tnt8>-y) {int z=x;x=y;y=z;}
void f2(int x,int y) {int z=x;x=y;y=z;}
int main(){
int x=10,y= 26;
f1(x,y);
f2(x,y);
cout<<y<<endl;
return 0;
}
运行时的输出结果是______。
A.10
B.16
C.26
D.36
上一题下一题
(31/40)单项选择题
第31题
有如下程序:
#include<iostream>
using namespace std;
class Test
{
public:
Test() {n+=2;}
~Test() {n-=3;}
static int getNum(){return n;}
private:
static int n;
};
int Test::n=1;
int main()
{
Test* p=new Test;
delete p;
cout<<"n="<<Test::getNum()<<endl; return 0;
}
执行该程序的输出结果是______。
A.n=0
B.n=1
C.n=2
D.n=3
上一题下一题
(32/40)单项选择题
第32题
有如下程序:
#include <iostream>
using namespace std;
class AA {
public:
virtual void f(){cout<<"AA";}
};
class BB:public AA{
public:
BB(){cout<<"BB";}
};
class CC:public BB{
public:
virtual void f() {BB::f(); cout<<"CC";}
};
int main(){
AA aa, *p;
BB bb;
CC cc;
p=&cc;
p->f();
return 0;
}
执行上面的程序将输出______。
A.BBAACC
B.AABBCC
C.BBAABBCC
D.BBBBAACC
上一题下一题
(33/40)单项选择题
第33题
有如下程序:
#include<iostream>
using namespace std;
class Book{
public:
Book(char*t=" "){strcpy(title, t); }
______
private:
char title[40];
};
class Novel:public Book{
public:
Novel(char*t=" "):Book(t){}
char*Category()const{return "文学" ; }
};
int main(){
Book*pb;
pb=new Novel();
cout<<pb->Category();
delete pb;
return 0;
}
若程序运行时输出结果是“文学”,则横线处缺失的语句是______。
A.char*Category();
B.char*Category()const;
C.virtual char*Category()const;
D.virtual char*Category()const=0;
上一题下一题
(34/40)单项选择题
第34题
以下不能正确定义二维数组的选项是。
A.int a[2][2]={{1},{2}};
B.int a[][2]={1,2,3,4);
C.int a[2][2]={{1},2,3};
D.int a[2][]={{1,2},{3,4}};
上一题下一题
(35/40)单项选择题
第35题
一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为______。
A.16
B.10
C.6
D.4
上一题下一题
(36/40)单项选择题
第36题
下列有关类的表述中。
正确的是______。
A.含有虚函数的类不能被实例化
B.派生类不能访问基类的保护成员
C.派生类只能隐含调用基类的构造函数
D.纯虚函数没有函数体
上一题下一题
(37/40)单项选择题
第37题
C++源程序文件的扩展名为。
A..CPP
B..C
C..DLL
D..EXE
上一题下一题
(38/40)单项选择题
第38题
字面常量42、4.2、42L的数据类型分别是______。
A.long、double、int
B.long、float、int
C.int、double、long
D.int、float、long
上一题下一题
(39/40)单项选择题
第39题
下列关于宏的叙述中正确的是______。
A.宏名必须用大写字母表示
B.宏定义必须位于源程序中所有语句之前
C.宏替换没有数据类型限制
D.宏调用比函数调用耗费时间
上一题下一题
(40/40)单项选择题
第40题
下列函数模板的定义中,合法的是______。
A.template <typename T>T abs(T x) {return x<0? -x:x;}
B.template class <T>T abs(T x) {return x<0? -x:x;}
C.template T <class T>abs(T x){return x<0? -x:x;}
D.template T abs(T x){return x<0? -x:x;}
上一题下一题
(1/1)基本操作题
第41题
考生文件夹
请打开考生文件夹下的解决方案文件proj1,该工程中包含程序文件main.cpp,其中有Salary(“工资”)类和主函数main的定义。
程序中位于每个“//ERROR****found****”之后的一行语句行有错误,请加以改正。
改正后程序的输出结果应为:
应发合计:3500 应扣合计:67.5 实发工资:3432.5
注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。
#include<iostream>
using namespace std;
class Salary{
public:
Salary(const char*id, double the_base, double the_bonus, double the_tax)
//ERROR*******found*******
:the_base(base), the_bonus(bonus), the_tax(tax)
{
staff id=new char[strlen(id)+1];
strcpy(staff_id, id);
}
//ERROR *******found*******
~Salary(){delete*staff_id;}
double getGrossPay()const{return base+bonus;} //返回应发项合计
double getNetPay()const{return getGrossPay()-tax;}//返回实发工资额
private:
char*staff id; //职工号
double base; //基本工资
double bonus; //奖金
double tax; //代扣个人所得税
};
int msin(){
Salary pay("888888", 3000.0, 500.0, 67.50);
cout<<"应发合计:"<<pay.getGrosSPay()<<"";
cout<<"应扣合计:"<<pay.getGrossPay()-pay.getNetPay()<<"";
//ERROR*******found*******
cout<<"实发工资:"<<pay::getNetPay()<<endl;
return 0;
}
上一题下一题
(1/1)简单应用题
第42题
考生文件夹
请打开考生文件夹下的解决方案文件proj2,此工程中包含一个程序文件main.cpp,其中有“部门”类Department和“职工”类Staff的定义,还有主函数main的定义。
在主函数中定义了两个“职工”对象,他们属于同一部门。
程序展示,当该部门改换办公室后,这两个
人的办公室也同时得到改变。
请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。
此程序的正确输出结果应为:
改换办公室前:
职工号:0789 姓名:张三部门:人事处办公室:521
职工号:0513 姓名:李四部门:人事处办公室:521
改换办公室后:
职工号:0789 姓名:张三部门:人事处办公室:311
职工号:0513 姓名:李四部门:人事处办公室:311
注意:只在横线处填写适当的代码,不要改动程序中的其他内容。
#include<iostream>
using namespace std;
class Department{//“部门”类
public:
Department(const char *name, const char*Office){
Strcpy(this->name, name);
//**********found**********
______
}
const char*getName()const{return name;} //返回部门名称
//**********found**********
const char * getOffice()const{______} //返回办公室房号
void changeOfficeTo (const char*office){//改换为指定房号的另一个办公室
strcpy(this->office, office);
}
private:
char name[20];//部门名称
char office[20];//部门所在办公室房号
};
class Staff{ //“职工”类
public:
//**********found**********
Staff(const char*my_id, const char*my_name, Department&my_dept): ______{
strcpy(this->staff_id, my_id);
strcpy(this->name, my_name);
}
const char*getID()const{return staff_id;}
const char * getName()const{return name;}
Department getDepartment()const{return dept;}
private:
char staff id[10];//职工号
char name[20]; //姓名
Department &dept; //所在部门
};
void showStaff(Staff&staff){
cout<<"职工号:"<<staff.getID()<<"";
cout<<"姓名:"<<staff.getName()<<"";
cout<<"部门:"<<staff.getDepartment().getName()<<"";
cout<<"办公室:"<<staff.getDepartment().getOffice()<<endl;
}
int main(){
Department dept("人事处", "521");
Staff Zhang("0789", "张三", dept), Li("0513", "李四", dept);
cout<<"改换办公室前:"<<endl;
showStaff(Zhang);
showStaff(Li);
//人事处办公室由521搬到311
//**********found**********
______
cout<<"改换办公室后:"<<endl;
showStaff(Zhang);
showStaff(Li);
return 0;
}
上一题下一题
(1/1)综合应用题
第43题
考生文件夹
请打开考生文件夹下的解决方案文件proj3,其中包含了类TaxCalculator(“个税计算器”)和主函数main的定义。
创建“个税计算器”需要接收税率表信息和起征额信息。
在main函数中,通过两个数组创建了如下的税率表:
下标适用收入段下限
(lower_limits) 适用税率
(rates) 说明:
适用的收入段为
0 0 5 大于0小于等于500
1 500 10 大于500小于等于2000
2 2000 15 大于2000小于等于5000
3 5000 20 大于5000小于等于20000
4 20000 2
5 大于20000小于等于40000
5 40000 30 大于40000小于等于60000
6 60000 35 大于60000小于等于80000
7 80000 40 大于80000小于等于100000
8 100000 45 大于100000
利用这个税率表创建“个税计算器”时,假定起征额为2000元(即不超过2000元的所得不征收个人所得税)。
请补充完成计算应纳个人所得税额的成员函数getTaxPayable,其中的参数income为月收入。
此程序的正确输出结果应为:
月收入为800元时应缴纳个人所得税0元
月收入为1800元时应缴纳个人所得税0元
月收入为2800元时应缴纳个人所得税55元
月收入为3800元时应缴纳个人所得税155元
月收入为4800元时应缴纳个人所得税295元
月收入为5800元时应缴纳个人所得税455元
注意:只能在函数getTaxPayable中的“//********333********”和“//********666********”之间填入若干语句,不要改动程序中的其他内容。
//TaxCalculator.h
#include<iostream>
#include<iomanip>
using namespace std;
class TaxCalculator{
public:
TaxCalculator(double the_limits[], double the_rates[], int the_length, double the_threshoid)
:lower_1imits(new double[the_length]), rates(new double[the_length]),
list_len(the_length), threshold(the_threshold){
for(int i=0; i<list_len; i++){
lower_limits[i]=the_limits[i];
rates[i]=the_rates[i];
}
}
~TaxCalculator(){delete[] lower_limits; delete []rates;}
double getTaxPayable(double income)const;//返回指定月收入的应纳个人所得税额
void showTaxPayable(double income)const;//显示指定月收入的应纳个人所得税额
private:
double*lower_limits; //适用收入段下限
double*rates; //适用税率
int list_len;//税率表项数
double threshold; //起征额
};
void writeToFile(const char*path);//TaxCalcnlator.cpp
#include"TaxCalculator.h"
double TaxCalculator::getTaxPayable(double income)const{
double taxable=income-threshold;
//应纳税工资额
double tax_payable=0.0;
//应纳个人所得税额
int i=list_len-1;
//从税率表的最高适用段开始计算
while(i>=0){
//********333********
//********666********
--i;
}
return tax_payable;
}
void TaxCalculator::showTaxPayable(double income)const {
cout<<"月收入为"<<setw(6)<<income<<"元时应缴纳个人所得税"
<<setw(4)<<getTaxPayable (income)<<"元"<<endl;
}//main.cpp
#include"TaxCalculator.h"
int main(){
double limits[]={0.0, 500.0, 2000.0, 5000.0, 20000.0, 40000.0, 60000.0, 80000.0, 100000.0}; double rates[]={0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45};
TaxCalculator calc(limits, rates, 9, 2000.0);
calc.showTaxPayable(800.0);
calc.showTaxPayable(1800.0);
calc.showTaxPayable(2800.0);
calc.showTaxPayable(3800.0);
calc.showTaxPayable(4800.0);
calc.showTaxPayable(5800.0);
writeToFile("");
return 0;
}
上一题交卷
交卷
答题卡
答案及解析
(1/40)单项选择题
第1题
下面叙述中错误的是______。
A.软件测试的目的是发现错误并改正错误
B.对被调试的程序进行“错误定位”是程序调试的必要步骤
C.程序调试通常也称为Debug
D.软件测试应严格执行测试计划,排除测试的随意性
参考答案: A 您的答案:未作答
答案解析:[解析] 软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A错误。
程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。
程序调试通常称为Debug,即排错。
软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。
下一题
(2/40)单项选择题
第2题
下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是______。
A.cout<<internal<<32345;
B.cout<<left<<12345;
C.cout<<right<<12345;
D.cout<<setw(6)<<12345;
参考答案: C 您的答案:未作答
答案解析:[解析] 本题考查的知识点是输出对齐方式的控制。
left:在设定的宽度内左对齐输出,右端以设定的字符填充。
right:(默认设置)在设定的宽度内右对齐输出。
internal:在设定的宽度内右对齐输出;但若有符号(-或+),符号置于最左端。
上一题下一题
(3/40)单项选择题
第3题
有如下程序:
#include<iostream>
using namespace std;
class test{
private:
int a;
public:
test(){cout<<"constructor"<<endl;}
test(int a){cout<<a<<endl;}
test(const test &_test){
a=_test.a;
cout<<"copy constructor"<<endl;
}
~test(){cout<<"destructor"<<endl;}
};
int main(){
test A(3);
return 0;
}
执行这个程序的输出结果是______。
A.3
B.constructor
destructor
C.copy constructor
destructor
D.3
destructor
参考答案: D 您的答案:未作答
答案解析:[解析] 本题考查默认构造函数和带参数的构造函数以及析构函数,本题中定义了一个对象A(3),对象带着参数,所以执行带参数的构造函数,输出3,然后执行析构函数,输出destructor。
所以本题答案为D。
上一题下一题
(4/40)单项选择题
第4题
索引属于
A.模式
B.内模式
C.外模式
D.概念模式
参考答案: B 您的答案:未作答
答案解析:[解析] 内模式(Internal Schema)又称物理模式(Physical Schema),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径。
上一题下一题
(5/40)单项选择题
第5题
C++模板包括。
A.类模板和函数模板
B.模板类和模板函数
C.类和函数
D.对象和函数
参考答案: A 您的答案:未作答
答案解析:[解析] C++模板包括类模板和函数模板。
上一题下一题
(6/40)单项选择题
第6题
有如下程序:
#include<iostream>
using namespace std;
class Base{
protected:
Base(){cout<<'Base';}
Base(char c){cout<<c;}
};
class Derived:public Base{
public:
Derived(char c){cout<<c;}
};
int main(){
Derived d('Derived');
return 0;
}
执行这个程序屏幕上将显示输出。
A.Derived
B.DerivedBase
C.BaseDerived
D.DerivedDerived
参考答案: C 您的答案:未作答
答案解析:[解析] 派生类Derived由基类Base公有派生,在派生类构造函数声明时系统会自动调用基类的缺省构造函数。
调用Derived d('Derived');后,执行类Derived构造函数的
Derived(char c),系统自动调用基类的缺省构造函数Base(),输出字母Base;再执行派生类的构造函数Derived(char c),输出字母Derived。
上一题下一题
(7/40)单项选择题
第7题
下列函数的运行结果是______。
#include<iostream.h>
int f(int a,int b)
{ int c;
if(a>b)c=1;
else if(a==b)c=0;
else c=-1;
return(c);}
void main()
{ int i=2,j=3;
int p=f(i,j);
cout<<p;}
A.-1
B.1
C.2
D.编译出错,无法运行
参考答案: A 您的答案:未作答
答案解析:[解析] 本题的函数是根据a和b的值来给c赋值。
上一题下一题
(8/40)单项选择题
第8题
下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是______。
A.cout<<intemal<<12345;
B.cout<<left<<12345;
C.cout<<right<<12345;
D.cout<<setw(6)<<12345;
参考答案: D 您的答案:未作答
答案解析:[解析] 本题考查控制输出格式,A、B、C选项都会输出“12345”,只有D选项输出“12345”,所以本题答案为D。
上一题下一题
(9/40)单项选择题
第9题
对虚函数的调用。
A.一定使用动态联编
B.必须使用动态联编
C.一定使用静态联编
D.不一定使用动态联编
参考答案: D 您的答案:未作答
答案解析:
上一题下一题
(10/40)单项选择题
第10题
若执行下面的程序时,从键盘上输入5和2,则输出结果是______。
# include<iostream.h>
void main()
{ int a,b,k;
cin>>a>>b;
k=a;
if(a<b)
k=a%b;
else
k=b%a;
cout<<k<<endl;}
A.5
B.3
C.2
D.0
参考答案: C 您的答案:未作答
答案解析:[解析] 本题考查简单的if...else语句。
先执行条件if(a<b),显然不成立,则执行else语句。
上一题下一题
(11/40)单项选择题
第11题
下面对静态数据成员的描述中,正确的是。
A.静态数据成员可以在类体内进行初始化
B.静态数据成员不可以通过类的对象调用
C.静态数据成员不能受private(私有)控制符的作用
D.静态数据成员可以直接通过类名调用
参考答案: D 您的答案:未作答
答案解析:[解析] 对于选项A,C++规定对静态数据成员的初始化应该在类体外进行初始化。
所以选项A是错误的。
对于B选项,C++规定静态数据成员可由任意访问权限许可的函数或对象访问,所以选项B 是错误的。
对于选项C,在C++中,静态数据成员也可以定义为私有的静态数据成员,所以选项C的描述是错误的。
对于选项D,在C++中,静态数据成员是类的所有对象共享的成员,即可以通过类名访问,也可以通过对象访问。
但通过类名访问更方便、更高效。
所以选项D的描述是正确的。
上一题下一题
(12/40)单项选择题
第12题
有如下程序:
# include <ioslreclm>
Using namespace std;
class Base{
public:
Base(int x=0):valB(x){cout<<valB;}
~Base(){cout<<valB;}
Private:
int valB;
};
class, Derived: public Base{
public:
Dcrived(int x=0,int y=0):Base(x),valD(y)
{cout<<valD;}
~Derived(){cout<<valD;}
private:
int valD;
};
int main(){
Derived obj12(2,3);
return 0;
}
运行时的输出结果是,
A.2332
B.2323
C.3232
D.3223
参考答案: A 您的答案:未作答
答案解析:[解析] 本题使用析构函数。
上一题下一题
(13/40)单项选择题
第13题
最简单的交换排序方法是
A.快速排序
B.选择排序
C.堆排序
D.冒泡排序
参考答案: D 您的答案:未作答
答案解析:[解析] 让考生加深对各种排序方法特点的了解。
[解题要点] 冒泡排序是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序。
[错解分析] 交换排序方法有冒泡排序和快速排序,显然选项B 和选项C 错误,冒泡排序比较简单,其算法也容易理解,但快速排序本身较为复杂,且采用了递归调用,其算法理解也稍难。
[考点链接] 插入排序、选择排序、归并排序、基数排序等排序方法的特点。
上一题下一题
(14/40)单项选择题
第14题
有下列程序:
#include <stdio.h>
int b=2;
int fun(int*k)
{ b=*k+b;return(b);}
void main()
{ int a[10]={1,2,3,4,5,6,7,8},i;
for(i=2;i<4;i++)(b=fun(&a[i])+b;printf
("%d",b);}
printf("\n"};
}
程序运行后的输出结果是______。
A.10 12
B.8 10
C.10 28
D.10 16
参考答案: C 您的答案:未作答
答案解析:[解析] 在程序中子函数fun(int*k)的作用是给静态全局变量加上形参*k的值。
在主函数中进行第一次for循环执行时,fun(&a[2])的返回值为5,所以5+5=10,因而输出结果为10,第二次for循环执行时,fun(&a[3])的返回值为14,所以14+14=28。
上一题下一题
(15/40)单项选择题
第15题
在一个派生类的成员函数中,试图调用其基类的成员函数“void f();”,但无法通过编译。
这说明______。
A.f()是基类的私有成员
B.f()是基类的保护成员
C.派生类的继承方式为私有
D.派生类的继承方式为保护
参考答案: A 您的答案:未作答
答案解析:[解析] 在派生类对基类的三种继承形式中,都无法对基类的私有成员访问A 正确。
在B中,三种继承方式都能访问基类的保护成员,故B不正确。
C选项的情况在f()是基类私有成员情况下是对的,但是还有别的可能,并不一定正确。
同样D也不一定正确。
上一题下一题
(16/40)单项选择题
第16题
对于类定义
class A {
public:
virtual void funcl(){}
void func2(){}
};
class D:public A{
public:
void funcl(){cout<<"class B rune 1"<<end1;}
virtual void func2(){cout<<"class B func 2"<<end1;}
};
下面正确的叙述是______。
A.A::func2()和B::funcl()都是虚函数
B.A::func2()和B::funcl()都不是虚函数
C.B::func1()是虚函数,而A::func2()不是虚函数
D.B::func1()不是虚函数,而A::func2()是虚函数
参考答案: C 您的答案:未作答
答案解析:
上一题下一题
(17/40)单项选择题
第17题
要利用C++流实现输入/输出的各种格式控制中,必须在持续中包含的头文件是______。
A.fstream
B.istream
C.ostream
D.iomanip
参考答案: D 您的答案:未作答
答案解析:[解析] 该题考查的是预定义流对象,iostream:使用cin、cout的预定义流对象进行针对标准设备的I/O操作,必须包含此头文件。
iomanlp:使用setw、fixed等大多数操作符,必须包含此头文件。
因此选项D是正确的。
上一题下一题
(18/40)单项选择题
第18题
有如下程序:
#include<iostream>
using namespace std;
class A{
public:
A(int i):rl(i){}
void print(){cout<<'E'<<r1<<'-';}
void print()const{cout<<'C'<<r1*r1<<'-';}
private:
int rl;
};
int main(){
A al(2); const A a2(4);
a1.print(); a2.print();
return 0;
}
运行时的输出结果是______。
A.运行时出错
B.E2-C16-
C.C4-C16-
D.E2-E4-
参考答案: B 您的答案:未作答
答案解析:
上一题下一题
(19/40)单项选择题
第19题
. 有如下程序:
#include<iostream>
using namespace std;
class test {
private:
int a;
public:
test() {cout<<"constructor"<<endl;}
test(int a) {cout<<a<<endl;}
test(const test&_test) {
a=_test. a;
cout<<"copy constructor"<<endl;
}
~test() {cout<<"destructor"<<endl;}
};
int main() {
test A(3);
return 0;
}
执行这个程序的输出结果是______。
A.3
B.图片C.
图片D.图片
A.A
B.B
C.C
D.D
参考答案: D 您的答案:未作答
答案解析:[解析] 本题考查默认构造函数和带参数的构造函数以及析构函数,本题中定义了一个对象A(3),对象带着参数,所以执行带参数的构造函数,输出3,然后执行析构函数,输出destructor。
所以本题答案为D。
上一题下一题
(20/40)单项选择题
第20题
如果算符函数调用格式的表达式:x.operator-(operator++(y,0)中的“—”是作为成员函数重
载的,“++”是作为友元函数重载的,那么该表达式还可以表示为:()
A.x-y++
B.x-(++y)
C.(x++)-y
D.++x-y
参考答案: A 您的答案:未作答
答案解析:[解析] 本题考核运算符的重载。
假定已经作为某个类的成员函数重载了二元运算符+,且c1、c2都是该类的对象,则c1. operator+(c2)与c1+c2含义相同。
如果+作为该类的非成员函数重载,则operator+(c1,c2)与c1+c2含义相同。
同时一元运算符“++”重载函数调用中采用了虚拟参数,说明++为后缀的,所以其等价的表达式为“x-y++”。
上一题下一题
(21/40)单项选择题
第21题
下面关于对象概念的描述中,是错误的。
A.对象就是C语言中的结构体变量
B.对象代表着正在创建的系统中的一个实体
C.对象是一个状态和操作(或方法)的封装体
D.对象之间的信息传递是通过消息进行的
参考答案: A 您的答案:未作答
答案解析:
上一题下一题
(22/40)单项选择题
第22题
有以下程序:
#include<iostream>
using namespace std;
class A{
public:
A(){cout<<"A";}
};
classB{public:B(){cout<<"B";}};
classC:public A{
B b:
public:
C(){cout<<"C";}
};
int main(){ C obj; return 0;}
执行后的输出结果是______。
A.CBA
B.BAC
C.ACB
D.ABC
参考答案: D 您的答案:未作答
答案解析:[解析] 本题考查的是类的继承和派生。
系统首先要通过派生类的构造函数调
用基类的构造函数,对基类成员初始化,然后对派生类中的新增成员初始化。
上一题下一题
(23/40)单项选择题
第23题
下列字符串中,不可以用做C++标识符的是______。
A.y_2006
B._TEST_H
C.Return
D.switch
参考答案: D 您的答案:未作答
答案解析:[解析] 本题考查C++标识符的命名规则,其规则有如下几点:①所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;②所有标识符不能使用C++已有的关键字;③大、小写字母表示不同意义,即代表不同的标识符。
选项C中虽然return 是关键字,但因首字母大、小写不同,也可用于标识符,但不建议使用。
故答案为D。
上一题下一题
(24/40)单项选择题
第24题
已知类IMS中两个成员函数的声明为“void listen()const;”与“void speak();”,另有两个对象的定义为“IMS obj1;”与“const IMS obj2;”,则下列语句中,产生编译错误的是______。
A.obj1.listen();
B.obj1.speak();
C.obj2.listen();
D.obj2.speak();
参考答案: D 您的答案:未作答
答案解析:[解析] 引用,其实就是给某个变量起个别名,这个别名代表的还是那个变量,如果用这个别名使用这个变量,那么使用的就是变量的本身。
如果对这个别名的内容进行修改,那么修改的就是被绑定别名的变量的本身。
如果对引用加上const限定,那么,别名就不能在修改变量本身。
上一题下一题
(25/40)单项选择题
第25题
以下定义语句中正确的是______。
A.int a=b=0;
B.char A=65+1,b='b';
C.float a=1,"b=&a,"c=&b;
D.double a=0.0;b=1.1;
参考答案: B 您的答案:未作答
答案解析:[解析] 本题考查数据类型的定义。
选项A中是要定义变量并且赋初值,但方式不对,必须单独定义其类型。
选项C给实型变量赋值时不用双引号,也不能将地址赋予实型变量,在选项D中,C语言允许在一个类型说明符后说明多个相同类型的变量,各变量之间要用逗号隔开,而不是用分号隔开,选项B正确。
上一题下一题
(26/40)单项选择题
第26题。