1.已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是______
2.有如下类定义:
class Date{
public:
Date(int y=2014, int m=9, int d=9):year(y), month(m), day(d){}
______(ostream&stream, Date&ddd); //运算符<<的声明
private:
int year, month, day;
};
若要使语句序列
Date GoodDay;
cout<<GoodDay<<endl;
能够正常运行,横线处的内容应为______。
3.有如下程序:
#include
using namespace std;
class Power
{
public:
Power(int x) :val(x) {}
________
protected:
int val;
};
class Square :public Power
{
public:
Square(int x) :Power(x) {}
void Display() { cout << val << "的平方是" << val * val << endl; }
};
int main()
{
Power*p = new Square(3);
p->Display();
delete p;
return 0;
}
若运行时的输出结果为“3的平方是9”,则划线处缺失的语句可能是______。
4.语句cout << ((a = 2) && (b = -2)); 的输出结果是______
5.数据库管理系统是______。
6.下列函数中对调用它的函数没有起到任何作用的是
7.有如下程序:
#include
using namespace std;
int main()
{
int f, f1 = 0, f2 = 1;
for (int i = 3; i <= 6; i++)
{
f = f1 + f2;
f1 = f2; f2 = f;
}
cout << f << endl;
return 0;
}
运行时的输出结果是______。
8.在C++语言中函数返回值的类型是由______决定的。
9.有如下程序:
#include
using namespace std;
class TestClass
{
int n;
public:
TestClass(int k):n(k) {}
int get() { return n; }
int get() const { return n + 1; }
};
int main()
{
TestClass p(5);
const TestClass q(6);
cout<<p.get()<<q.get();
return 0;
}
执行后的输出结果是______。
10.有如下四个语句:
① cout << ‘A’<
② cout << setfill(’’) << left << setw(7) << ‘A’ << ‘B’ << endl;
③ cout << ‘A’ << setfill(‘‘) << right << setw(7) << ‘B’ << endl;
④ cout << setfill(’’) << right << setw(7) << ‘A’ << ‘B’ << endl;
其中能显示A******B的是______。
11.检查软件产品是否符合需求定义的过程称为______。
12.类模板template<class T>class x{…},其中友元函数f对特定类型T(如int),使函数f(x<int>}成为x<int>模板类的友元,则其说明为______。
13.有如下程序:
#include
using namespace std;
class Con
{
char ID;
public:
Con() :ID('A'){cout << 1;}
Con(char ID) :ID(ID) { cout << 2; }
Con(Con&c) :ID(c.getID()) { cout << 3; }
char getID()const { return ID; }
};
void show(Con c) { cout << c.getID(); }
int main()
{
Con c1;
show(c1);
Con c2('B');
show(c2);
return 0;
}
执行上面程序的输出结果是______。
14.有如下程序:
#include < iostream >
using namespace std;
class Basel
{
public:
Basel(int d) { cout << d; }
~Basel() {}
};
class Base2
{
public:
Base2(int d) { cout << d; }
~Base2() {}
};
class Derived : public Basel, Base2
{
public:
Derived(int a, int b, int c, int d) :Basel(b), Base2(a), b1(d), b2(c) {}
private:
int b1;
int b2;
};
int main()
{
Derived d(1, 2, 3, 4);
return 0;
}
执行这个程序的输出结果是______。
15.下列关于goto语句的描述中,正确的是______。
16.有如下类定义:
class AA
{
int a;
public:
int getRef() const {return &a;} //①
int getValue() const {return a;}//②
void set(int n)const{a=n; } //③
friend void show(AA aa)const {cout << a;} //④
};
其中四个函数的定义中正确的是______。
17.已知函数f的原型是void f(int *a, long &b); ,变量v1、v2的定义是:int v1; long v2;
下列调用语句中正确的是______。
18.下列关于虚函数的描述中正确的是______。
19.模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的______。
20.若有定义语句“double x[5]={1.0,2.0,3.0,4.0,5.0},* p=x”,则错误引用x数组元素的是______。
21.下列属于黑盒测试方法的是______。
22.数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的______。
23.若有如下程序:
#include
using namespace std;
int s = 0;
class sample
{
static int n;
public:
sample(int i)
{
n = i;
}
static void add()
{
s += n;
}
};
int sample::n = 0;
int main()
{
sample a(2), b(5);
sample::add();
cout << s << endl;
return 0;
}
程序运行后的输出结果是______。
24.下列关于this指针的描述中,正确的是______。
25.在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是______。
26.若有如下程序:
#include
using namespace std;
class TestClass
{
public:
void who() { cout << "TestClass" << endl; }
};
class TestClass1 :public TestClass
{
public:
void who() { cout << "TestClass1" << endl; }
};
int main()
{
TestClass *p;
TestClass1 obj1;
p = &obj1;
p -> who();
return 0;
}
则该程序运行后的输出结果是______。
27.以下C++语言中用于单行注释的是______
28.下列数据结构中,属于非线性结构的是______。
29.已知枚举类型声明语句为:
enum COLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};
则下列说法中错误的是______。
30.下列关于纯虚函数与抽象类的描述中,错误的是______。
31.下列选项中,不是一个算法的基本特征的是______。
32.有如下类声明:
class XA{
int x;
public:
XA(int n){x=n;}
};
class XB:public XA{
int y;
public:
XB(int a,int b);
};
在构造函数XB的下列定义中,正确的是______。
33.在深度为5的满二叉树中,叶子节点的个数为______。
34.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是______。
35.数据库管理系统是______。
36.有以下程序:
void fun(int a[], int i, int j)
{
int t;
if (i < j)
{
t = a[i];
a[i]=a[j];
a[j]=t;
fun(a, ++i, --j);
}
}
int main()
{
int a[] = { 1,2,3,4,5,6 }, i;
fun(a, 0, 5);
for (i=0; i<6; i++)
cout << (a[i]);
}
执行后输出结果是______。
A.6 5 4 3 2 1
B.4 3 2 1 5 6
C.4 5 6 1 2 3
D.1 2 3 4 5 6
37.有如下程序:
#include
using namespace std;
int main() {
char a;
cin >> a;
if (a == '*')cout << "**" << endl;
else cout << "###" << endl;
return 0;
}
输入字符+时,程序的运行结果是______。
38.若函数中有定义语句“int k;”,则______。
39.有如下程序:
#include
using namespace std;
int main() {
int i, s = 0;
for (i = 1; s < 20; i += 2)s += i * i;
cout << i << endl;
return 0;
}
运行这个程序的输出结果是______。
40.堆栈s进行下列操作:push(1);push(2);pop();pop();后,此时的栈顶元素为______。
1.请打开工程prog1,该工程中包含程序文件main.cpp,其中有Salary(“工资”)类和主函数main的定义。
程序中位于每个“// ERROR found”之后的一行语句行有错误,请加以改正。
改正后程序的输出结果应为:
应发合计:3500 应扣合计:67.5 实发工资:3432.5
注意:只修改每个“// ERROR found”下的那一行,不要改动程序中的其他内容。
#include
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 main() {
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;
}
请打开源程序文件2.cpp。阅读下列函数说明和代码。函数num(char *str)用于返回字符串中非数字的个数。
例如:abc123abc45
返回值为:6
将函数num补充完整。
注意:请勿改动主函数main。
试题程序:
#include
int num(char *str)
{
}
int main()
{
char str[1024];
cout<<"please input a string: "<<endl;
cin.getline(str,1024);
cout<<"char number is "<<num(str)<<endl;
return 0;
}
请打开工程proj3,其中声明的是一个人员信息类,补充编制程序,使其功能完整。在main函数中给出了一组测试数据,此种情况下程序的输出应该是:Zhang 20 Tsinghua。
注意:只能在函数address_change的“// 333”和“// 666”之间填入若干语句,不要改动程序中的其他内容。
程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
#include
#include
#include"proj3.h"
using namespace std;
void Person::name_change(char* _name)
{
strcpy(name, _name);
}
void Person::age_change(int _age)
{
age=_age;
}
void Person::address_change(char* _add)
{
if (address!=NULL) delete [] address;
//********333********
//********666********
}
void Person::info_display(){
cout<<name<<'\t'
<<age<<'\t';
if(address!=NULL)
cout<<address<<endl;
cout<<endl;
}
Person::~Person(){
if(address!=NULL)
delete[] address;
}
void main()
{
Person p1;
p1.name_change("Zhang");
p1.age_change(20);
p1.address_change("Tsinghua University");
p1.address_change("Tsinghua");
p1.info_display();
writeToFile("");
}
proj3.h
#include
#include
using namespace std;
class Person{
char name[20];
int age;
char* address;
public:
Person(){ age=0;address=0; }
void name_change(char *_name); //名字修改函数
void age_change(int _age); //年龄修改函数
void address_change(char* _add); //地址修改函数
void info_display(); //人员信息显示
~Person(); //析构函数
};
void writeToFile(const char *path);
1.A
[解析] +是二元运算符,重载不能改变这一点。所以为了保证+有两个参数,所以不允许有默认参数。
2.D
[解析] 本题考查的是输出运算符<<的重载首先函数的第一个形参类型为ostream&,所以返回值也应该是ostream&,以保证输出运算符可以链接使用,选项A、C错误;由于L/O操作符的第一个形参类型并不是Date类类型,所以不能作为成员函数,必须使用友元函数,声明前必须加关键字friend,选项B错误,选项D正确。
3.B
[解析] 由题意可知,基类指针p指向的是派生类的对象,当p调用Display()时,输出的结果是派生类中的Display(),可知Display()必为虚函数,这样才能满足动态联编。虚函数的定义是在声明前加关键字virtual,选项A不是虚函数,错误;选项C、D定义虚函数的格式不对,错误;答案为B选项。
4.D
[解析] 很明显,本题考查的是表达式的值作为结果输出。可以看出,本表达式是一个逻辑表达式,其结果为真或假,那么输出则对应1和0,故排除选项C。本题答案为D。
5.B
[解析] 系统软件主要包括如下几个方而:
(1)操作系统软件,这是软件的核心。
(2)各种语言的解释程序和编译程序。
(3)各种服务性程序。
(4)各种数据库管理系统。
6.C
[解析] 本题考核函数的调用和参数值的传递(形参、实参)。选项C中的函数D调用采用按值传递的方式,函数中对形参的修改没有影响到实参的值,而且函数G还没有返回值,所以函数耀对调用它的函数没有起到任何作用。选项A中的函数f1采用引用传递的方式影响实参的值,选项D中的函数f4通过返回值和指针调用来影响调用函数;选项B中的函数f2采用返回值的形式对其调用函数发生作用。
7.C
[解析] 循环3次,分别每次计算出f1,f2和f的值,该题比较简单,只需要细心即可。
8.C
[解析] C++中函数return语句中返回的类型应与函数定义指定的类型一致,即函数定义的类型即为函数应返回的类型。
9.B
[解析] C++中对常对象的成员函数调用,将自动调用其常成员函数,程序中调用原型为"int get()const;"的函数,对于非常对象将调用原型为"int get();"的函数。因为首先用5对对象p进行了初始化,所以执行p.get()时直接返回5,而对于常对象则以6对q进行初始化。在调用q.get()时,将调用原型为"int get()const;"的函数,该函数将返回n+1,第二个输出应为7,所以本题答案为57。
10.C
[解析] 本题考查C++流的使用。setfill()的作用是设置填充字符;left的作用是使输出数据在指定宽度内左对齐;right的作用是使输出数据在指定宽度内右对齐。(各选项运行结果见文章下方代码)
11.A
[解析] 确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求。
12.B
[解析] 声明一个函数模板的格式template<模板形参表声明>函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。
13.C
[解析] Con c1定义c1对象,调用Con的无参数构造函数,输出1,ID值变为A,执行show(c1)时会调用拷贝构造函数,将c1对象的值复制给show函数的形参,此时输出3,然后在show()中输出c1的ID值A,Con c2(‘B’)定义c2对象,调用Con(char ID)构造函数,输出2,c2的ID值为B,show(c2)执行时先调用拷贝构造函数输出3,然后输出B。因此程序输出结果为“13A23B”。
14.D
[解析] 本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义一个派生类对象时,分别调用基类的构造函数,所以分别输出21。
15.D
[解析] goto语句也可以跳出循环和switch语句,goto语句无条件地转移程序的执行控制。它总是与一标号相匹配,其形式为:goto标号;,标号是用户自定义的标识符,它可以处于goto语句的前面,也可以处于其后,但标号必须与goto语句处于同一个函数中。定义标号时,由一个标识符后面跟一个冒号组成。
16.B
[解析] 本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以本题答案为B。
……
详见:https://download.csdn.net/download/weixin_44785513/80252491
#include
#include
using namespace std;
class Salary {
public:
Salary(const char *id, double the_base, double the_bonus, double the_tax)
// ERROR **********found**********
: base(the_base), bonus(the_bonus), tax(the_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 main() {
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;
}
输出结果:
应发合计:3500 应扣合计:67.5 实发工资:3432.5
(1):base(the_base),bonus(the_bonus),tax(the_tax)
(2)~Salary() {delete[] staff_id;}
(3)cout << “实发工资:” << pay.getNetPay() << endl;
[考点] 本题考查的是Salary类,其中涉及动态数组、构造函数、析构函数和const函数。构造函数一般使用成员列表初始化,括号内应该为形参。析构函数使用delete语句释放指针,格式为:delete[]指针。
[解析] (1)主要考查考生对构造函数的掌握情况,构造函数的成员初始列表要把形参放在括号内。
……
详见:https://download.csdn.net/download/weixin_44785513/80252491