hello hell

以下四个程序中,完全正确的是( )。

(2分)
A.
#include
int mian()
{
std::cout << “programming!\n”;
return 0;
}

B.
include
void main()
{
std::cout << “programming!\n”;
return 0;
}

C.
#include
int main();
{
std::cout << “programming!\n”;
return 0;
}

D.
#include
int main()
{
std::cout << “programming!\n”;
return 0;
}

我的答案:
D
题目得分 2
参考答案:
D
在C++语言中,main函数返回一个( )类型的值。

(2分)
A. char
B. int
C. double
D. void
我的答案:
B
题目得分 2
参考答案:
B
一般编写并执行C++程序的过程,第一步应该是( )。

(2分)
A. 使用文本编辑程序,录入源程序,保存文件
B. 使用链接程序进行链接,把.obj文件以及需要的库函数连接到一起,生成可执行的机器语言程序
C. 使用C++编译程序编译C++源程序文件,生成.obj文件
D. 执行程序,得到运行结果
我的答案:
A
题目得分 2
参考答案:
A
以下正确的常量定义是( )。

(2分)
A. const int S = 24
B. const int S 24;
C. const int S = 24;
D. const S = 24;
我的答案:
A
题目得分 0
参考答案:
C
执行下列语句:int x = 5, y = 10; cout << x << y; 则显示器将显示( )。

(2分)
A. 10,5
B. 510
C. 5,10
D. 5 10
我的答案:
B
题目得分 2
参考答案:
B
C++程序中,cout << endl; 的作用是( )。

(2分)
A. 表示程序结束
B. 表示语句结束
C. 表示换行(输出换行符)
D. 表示输出结束
我的答案:
C
题目得分 2
参考答案:
C
C++中,cin、cout是( )。

(2分)
A. 语句
B. 类
C. 函数
D. 对象
我的答案:
D
题目得分 2
参考答案:
D
C++程序编译时,程序中的注释部分( )。

(2分)
A. 参加编译,并会出现在目标程序中
B. 不参加编译,也不会出现在目标程序中
C. 不参加编译,但会出现在目标程序中
D. 参加编译,但不会出现在目标程序中
我的答案:
B
题目得分 2
参考答案:
B
设整型变量a,b,c已经声明,下列( )语句的顺序是正确的?

(2分)
A.
cin >> a >> b;
c = a + b;
cout << c;

B.
cout << c;
c = a + b;
cin >> a >> b;

C.
c = a + b;
cin >> a >> b;
cout << c;

D.
c = a + b;
cout << c;
cin >> a >> b;

我的答案:
A
题目得分 2
参考答案:
A
已知摄氏温度(℃)与华氏温度(℉)的转换关系是:

如何填写________处才使该程序完成从摄氏温度(c)到华氏温度(f)数值的正确转换。

#include

using namespace std;
int main() {
double c, f;
cout << "请输入摄氏温度: ";
cin >> c;
f= ________ / 5 * c + 32;
cout << f << endl;
return 0;
}

(2分)
A. -9
B. +9
C. 9
D. 9.0
我的答案:
D
题目得分 2
参考答案:
D
接收用户从键盘输入的数据并存放到变量m中,下列( )语句是正确的?

(2分)
A. cin >> m;
B. CIN >> m;
C. cin << m;
D. cin << M;
我的答案:
A
题目得分 2
参考答案:
A
一个用C++语言编写的可执行程序,总是从( )开始执行。

(2分)
A. 程序中的第一个函数
B. 程序中第一条可执行语句
C. 第一个包含文件(#include)的第一个函数
D. 程序中唯一的main函数
我的答案:
D
题目得分 2
参考答案:
D
一个用C++语言编写的可执行程序必须有的一个函数是( )。

(2分)
A. 主调函数
B. main函数
C. 被调函数
D. 子函数
我的答案:
B
题目得分 2
参考答案:
B
算法是一个计算过程,是程序设计的基础和精髓。一个有效的算法应该具有如下特点,其中错误的是( )。

(2分)
A. 零个或多个输入及一个或多个输出
B. 无穷性
C. 可行性
D. 确定性
我的答案:
B
题目得分 2
参考答案:
B
以下叙述中,正确的是( )。

(2分)
A. C++程序中注释部分可以出现在程序中任意合适的地方
B. 构成C++程序的基本单位是函数,所有函数名都可以由用户命名
C. 花括号"{“和”}"只能作为函数体的定界符
D. 分号是C++语句之间的分隔符,不是语句的一部分
我的答案:
D
题目得分 0
参考答案:
A
二、填空题(共5小题,10分)
题型得分 6
在C++语言中,表示语句结束的符号是________。

(2分)
我的答案:

题目得分 0
参考答案:
;、分号
以下代码段的输出结果是________。

int a = 5, b = 4;
double c = 3, d;
d = a / b;
cout << d << “#”;
d = c / b;
cout << d << endl;

(2分)
我的答案:
1#0.75
题目得分 2
参考答案:
1#0.75
在C++程序中,如果要使用数学函数,如sinx、lnx等,需要在程序中包含________ 头文件。

(2分)
我的答案:
math.h
题目得分 0
参考答案:
cmath、
C++程序中,为了使用cin、cout等,需要包含________头文件。

(2分)
我的答案:
iostream
题目得分 2
参考答案:
iostream、
C++语言源程序文件的扩展名通常为________ 。

(2分)
我的答案:
cpp
题目得分 2
参考答案:
cpp、.cpp

下面程序的运行结果是( )。

#include
using namespace std;
int main() {
int a = 1, b = 2, c = 3;
if(a == 1 && b == 2)
if(b !=2 || c!=3)
cout << a<< “,” <<b << “,” << c << endl;
else
cout << a<< “,” <<b << “,” << c << endl;
else
cout << a<< “,” <<b << “,” << c << endl;
return 0;
}

(2分)
A. 1,3,3
B. 1,3,2
C. 1,2,3
D. 3,2,1
我的答案:
C
题目得分 2
参考答案:
C
下面代码段的输出结果是( )。

int main() {
int a = 3, b = 5;
int &r = a;
r = b;
b = 7;
cout << a << endl;
return 0;
}

(2分)
A. 7
B. 3
C. 5
我的答案:
C
题目得分 2
参考答案:
C
若有变量声明:int m = 10;

以下选项正确的是( )。

(2分)
A. int &x = m;
B. int &x = 10;
C. int &x;
D. int &x = &m;
我的答案:
A
题目得分 2
参考答案:
A
在while( !e )中,!e等价于( )。

(2分)
A. e == 0
B. e != 0
C. e == 1
D. e != 1
我的答案:
A
题目得分 2
参考答案:
A
若有声明语句:int x = 10, y = 4, f; double m; 则执行表达式:f = m = x / y后,f、m的值分别是( )。

(2分)
A. 2,2.5
B. 3,2.5
C. 2.5,2.5
D. 2,2.0
我的答案:
D
题目得分 2
参考答案:
D
以下表达式:x&&1,和( )是等价的。

(2分)
A. x == 0
B. x != 1
C. x
D. x == 1
我的答案:
D
题目得分 0
参考答案:
C
若有以下代码段:

int a = 0, b = 2, c = 3;
if(c = a)
cout << c << endl;
else
cout << b << endl;

执行后,输出结果是( )。

(2分)
A. 1
B. 2
C. 3
D. 编译有错
我的答案:
C
题目得分 0
参考答案:
B
若x、y均为整型变量,则不能实现以下分段函数的代码段是( )。

(2分)
A.
if(x <0)
y = -1;
else if(x== 0)
y = 0;
else
y = 1;

B.
y = -1;
if(x !=0)
if(x > 0)
y = 1;
else
y = 0;

C.
y = 0;
if(x>= 0) {
if(x > 0)
y = 1;
}
else
y = -1;

D.
if(x>= 0)
if(x > 0)
y = 1;
else
y = 0;
else
y = -1;

我的答案:
D
题目得分 0
参考答案:
B
语句:char ch=’\65’;则变量ch的值为( )。

(2分)
A. 空
B. 2个字符
C. 3个字符
D. 1个字符
我的答案:
D
题目得分 2
参考答案:
D
下列数学式中,变量x和y为double类型,而变量a和b为int类型,对应该数学式的正确表达式是( )。

(2分)
A. 6/7ab/x/y
B. 6/xab/7/y
C. 6ab/7/x/y
D. 6ab/7xy
我的答案:
C
题目得分 0
参考答案:
B
若有变量声明:int x, y = 5, *p = &x;

则能完成x = y功能的选项是( )。

(2分)
A. *p = y;
B. *p = &y;
C. x = *p;
D. x = &y;
我的答案:
A
题目得分 2
参考答案:
A
设a为整型变量,不能正确表达数学关系:0≤a<5的表达式是( )。

(2分)
A. 0<=a<5
B. a0 || a1 || a2 || a3 || a==4
C. a>=0 && a<5
D. !(a<0 || a>=5)
我的答案:
A
题目得分 2
参考答案:
A
如果i是变量,而p是指向i的指针,则下列( )表达式可以代替i。

(2分)
A. *&p
B. &i
C. &*i
D. *&i
我的答案:
D
题目得分 2
参考答案:
D
设整型变量x的当前值为3,执行以下循环语句后,输出结果是( )。

do {
cout << (x -= 2) << " ";
} while(!(–x));

(2分)
A. 0
B. 1 -2
C. 3 0
D. 死循环,输出很多值
我的答案:
B
题目得分 2
参考答案:
B
若有以下代码段:

int k = 0;
while(k = 1)
k++;

while循环执行的次数是( )。

(2分)
A. 无限次
B. 有语法错,不能执行
C. 一次也不执行
D. 执行一次
我的答案:
A
题目得分 2
参考答案:
A
循环语句:

for(<表达式1>; <条件>; <表达式3>)
<循环体>

<循环体>的执行情况是( )。

(2分)
A. 至少执行一次
B. 至少执行两次
C. 可能执行,也可能不执行
D. 不执行
我的答案:
C
题目得分 2
参考答案:
C
阅读以下代码段,s 的值是( )。

int a = 1, b = 2, c = 6, s;
if(a <= b || c < 0 || b < c)
s = b + c;
else
s = a + b + c;

(2分)
A. 10
B. 8
C. 11
D. 9
我的答案:
B
题目得分 2
参考答案:
B
以下对枚举类型的声明中,正确的是( )。

(2分)
A. enum a = {one, two, three};
B. enum a {one = 9, two = -1, three};
C. enum a = {“one”, “two”,“three”};
D. enum a {“one”, “two”, “three”};
我的答案:
B
题目得分 2
参考答案:
B
若有以下代码段:

int s1 =0, s2 = 0, s3 = 0, s4 = 0, t;
for(t = 1; t <= 4; ++t)
switch(t) {
case t >= 4:
s1++;
break;
case t >= 3:
s2++;
break;
case t >= 2:
s3++;
default:
s4++;
}
cout << s1 << “,” << s2 << “,” << s3 << “,” << s4 << endl;

执行后,输出结果是( )。

(2分)
A. 1,1,2,2
B. 1,1,1,2
C. 1,2,3,2
D. 语法错,编译通不过
我的答案:
B
题目得分 0
参考答案:
D
若有变量声明:int k;

下面代码编译运行的情况是( )。

for(k = 1; k; k++)
cout << k << endl;

(2分)
A. 编译错误
B. 能运行,正常结束
C. 以上说法都不对
D. 能运行,是死循环
我的答案:
A
题目得分 0
参考答案:
B
关于引用,下列说法中错误的是( )。

(2分)
A. 引用是给被引用的变量取一个别名
B. 引用主要是用来作函数的形参和函数的返回值
C. 在声明引用时,需要另外开辟内存单元来存放引用的值
D. 在声明引用时,必须对其进行初始化
我的答案:
C
题目得分 2
参考答案:
C
若有变量声明:

int a = 3, b = 4, c = 5; 下列表达式中,值为0的是( )。

(2分)
A. ‘a’ && ‘b’
B. a <= b
C. a || b + c && b - c
D. !(a < b && c < b || b)
我的答案:
D
题目得分 2
参考答案:
D
在循环语句的循环体中使用break语句的作用是( )。

(2分)
A. 结束本次循环
B. 终止当前整个循环的执行
C. 结束switch语句
D. 结束程序的执行
我的答案:
B
题目得分 2
参考答案:
B
若a1、a2、a3和a4均为整型变量,则以下正确的表达式是( )。

(2分)
A. a1 = 25 % 3.3;
B. a2 = a1 + a3 = 3 * 5
C. a3 = 078
D. a4 = 0xa2
我的答案:
D
题目得分 2
参考答案:
D
若有如下代码段

int *p, a = 10, b = 1;
p = &a;
a = *p + b;

执行该代码段后,a的值为( )。

(2分)
A. 12
B. 出错
C. 10
D. 11
我的答案:
D
题目得分 2
参考答案:
D
下列说法中,错误的是( )。

(2分)
A. C++语言中的关键字必须小写
B. C++语言中的标识符必须全部由字母组成
C. C++语言不提供输入输出语句
D. C++语言中的注释行可以出现在程序的任何位置
我的答案:
C
题目得分 0
参考答案:
B
如果i是整型变量,且p和q都是指向i的指针,那么下列( )赋值是有效的。

(2分)
A. *p = q
B. p = i
C. &p = q
D. p = &*q
我的答案:
D
题目得分 2
参考答案:
D
位运算符中,运算符~的功能是( )。

(2分)
A. 按位取反
B. 按位与
C. 按位或
D. 按位异或
我的答案:
A
题目得分 2
参考答案:
A
for(i = 1; i < 10; ++i);结束后,i的值是( )。

(2分)
A. 11
B. 12
C. 9
D. 10
我的答案:
D
题目得分 2
参考答案:
D
若有变量声明:

int a, b;

执行语句:b = (a = 3* 5, a * 4), a + 15; 后,b的值为( )。

(2分)
A. 15
B. 30
C. 60
D. 90
我的答案:
C
题目得分 2
参考答案:
C
对for(表达式1; ;表达式3)

可理解为( )。

(2分)
A. for(表达式1; 1; 表达式3)
B. for(表达式1; 表达式3; 表达式3)
C. for(表达式1; 表达式1; 表达式3)
D. for(表达式1; 0; 表达式3)
我的答案:
A
题目得分 2
参考答案:
A
若有变量声明:

int x = 5, y = 7, z = 8; 执行表达式:z += x++|| y++ || ++z后,x、y、z的值分别是( )。

(2分)
A. 6,7,9
B. 6,8,10
C. 6,8,8
D. 6,8,1
我的答案:
B
题目得分 0
参考答案:
A
循环语句

while(x % 3)
a++;

中的表达式x % 3等价于( )。

(2分)
A. x % 3 == 1
B. x % 3 != 0
C. x % 3 == 2
D. x % 3 == 0
我的答案:
A
题目得分 0
参考答案:
B
以下代码段中与语句:k = a > b ? (b > c ? 1 : 0) : 0; 功能等价的是( )。

(2分)
A.
if((a> b) && (b > c))
k = 1;
else
k = 0;

B.
if((a> b) || (b > c))
k = 1;
else
k = 0;

C.
if(a<= b)
k = 0;
else if(b<= c)
k = 1;

D.
if(a >b)
k = 1;
else if(b> c)
k = 1;
else
k = 0;

我的答案:
A
题目得分 2
参考答案:
A
若有变量声明:int a = 512, *p = &a;

则*p的值为( )。

(2分)
A. 变量a的地址
B. 512
C. 0
D. 无确定值
我的答案:
A
题目得分 0
参考答案:
B
两个指针变量,所指的类型相同,则它们之间不能进行的运算是( )。

(2分)
A. <
B. -
C. +
D. ==
我的答案:
A
题目得分 0
参考答案:
C
下列常量中,错误的是( )。

(2分)
A. 0x2a
B. 015
C. 2.8e9
D. 123.6e0.4
我的答案:
B
题目得分 0
参考答案:
D
要使下面程序输出10个整数,则在划线处________填入正确的数是( )。

for(i = 0; i <= ________ ; )
cout << (i += 2) << endl;

(2分)
A. 18
B. 20
C. 9
D. 10
我的答案:
B
题目得分 0
参考答案:
A
下列标识符中,正确的是( )。

(2分)
A. 5abc
B. if
C. -abc
D. _abc
我的答案:
D
题目得分 2
参考答案:
D
阅读以下代码段,设变量c的值是68,运行结果是( )。提示:小写字母a的ASCII码是97, 大写字母A的ASCII码是65。

char c;
if(c >= ‘A’ && c <= ‘Z’)
cout << static_cast(c+32) << endl;
else
cout << c << endl;

(2分)
A. D
B. 100
C. d
D. 68
我的答案:
C
题目得分 2
参考答案:
C
二、填空题(共10小题,20分)
题型得分 18
在程序中________处填上恰当的成分,完成题目要求的功能。注意不需要任何空格。

从键盘输入20个整数,输出它们的和。

#include
using namespace std;
int main() {
int a, sum = 0;
for(int i = 1; i <= 20; ++i) {
cin >> a;
sum=________;
}
cout << “sum=” << sum<< endl;
return 0;
}

(2分)
我的答案:
sum+a
题目得分 2
参考答案:
sum+a
如果从键盘上输入15292<回车>,以下代码段的输出是________。

int number, right_digit;
cin >> number;
if(number == 0 ) {
cout << “0”;
}
else
while(number != 0 ) {
right_digit = number % 10;
cout << right_digit;
number /= 10;
}
cout << endl;

(2分)
我的答案:
29251
题目得分 2
参考答案:
29251
以下程序的输出结果是________。

#include
using namespace std;
int main() {
int a = 5, *b, **c;
c = &b;
b = &a;
cout << **c << endl;
return 0;
}

(2分)
我的答案:
5
题目得分 2
参考答案:
5
以下程序的输出是________ 。

#include
using namespace std;
int main() {
int x = 15;
while(x > 10 && x < 50) {
++x;
if(x / 3) {
++x;
break;
}
else
continue;
}
cout << x << endl;
return 0;
}

(2分)
我的答案:
6
题目得分 0
参考答案:
17
在程序中________处填上恰当的成分,完成题目要求的功能。注意不需要任何空格。

输入10个整数,找出最大数。

#include
using namespace std;
int main() {
int k, x, max;
cin >> x;
max = x;
for(k = 2; k <= 10; ++k) {
cin >> x;
if(________)
max = x;
}
cout << “max=” << max<< endl;
return 0;
}

(2分)
我的答案:
x>max
题目得分 2
参考答案:
max<x、x>max
下面程序运行时,如果从键盘上输入3 5<回车>,程序输出的结果是( )。

#include
using namespace std;
int main() {
int a, b, *pa, *pb;
pa = &a;
pb = &b;
cin >> *pa >> *pb;
*pa = a + b;
*pb = a + b;
cout << “a=” << a << “,b=” << b << endl;
return 0;
}

(2分)
我的答案:
a=8,b=13
题目得分 2
参考答案:
a=8,b=13
在程序中________处填上恰当的成分,完成题目要求的功能。注意不需要任何空格。

输出1000以内能被3整除且个位数为6的所有整数。

#include
using namespace std;
int main() {
int i, j;
for(i = 0; ________; ++i) {
j = i * 10 + 6;
if(j % 3 == 0)
cout << j << " ";
}
cout << endl;
return 0;
}

(2分)
我的答案:
i<=99
题目得分 2
参考答案:
i<100、i<=99
以下代码段的输出结果是________。

bool b1 = true;
bool b2= 0;
cout << b1 << “#”;
cout << boolalpha << b2 << endl;

(2分)
我的答案:
1#false
题目得分 2
参考答案:
1#false
有以下代码段:

int *p, *q, u, v;
p = &u;
q = &v;
u = 3;
v = 5;

则表达式*p + *q的结果是________。

(2分)
我的答案:
8
题目得分 2
参考答案:
8
以下程序的输出是________。

#include
using namespace std;
int main() {
int a, b, k = 4, m = 6, *p1 = &k, *p2 = &m;
a = p1 == &m;
b = (*p1) / (*p2) + 7;
cout << a << “#” << b <<endl;
return 0;
}

(2分)
我的答案:
0#7
题目得分 2
参考答案:
0#7

函数返回类型是void,下列说法正确的是( )。

(2分)
A. 函数的返回值是0
B. 如果函数内部没有return语句,则执行到函数体结束处的右花括号时返回
C. 如果使用return语句返回,则 return 后面必须有一个整型表达式
D. 函数仅可以通过return 语句返回
我的答案:
B
题目得分 2
参考答案:
B
某函数原型为:float fun(int, int = 0);

以下的同名函数中,( )不能与该函数构成重载。

(2分)
A. float fun(int, double);
B. int fun(float);
C. void fun(float, int = 1);
D. int fun(int, int &);
我的答案:
D
题目得分 2
参考答案:
D
以下函数定义,能正确编译的是( )。

(2分)
A.
double fun(int x, y) {
int z = x + y;
return z;
}

B.
double fun(int x, int y) {
int x, y;
double z;
z = x + y;
return z;
}

C.
double fun(int x, int y) {
z = x + y;
return z;
}

D.
double fun(int x, int y) {
double z;
z = x + y;
return z;
}

我的答案:
A
题目得分 0
参考答案:
D
考虑下面的函数原型:

void testDefaulParam(int a, double b = 7, char z = ‘*’);

下面函数调用中不合法的是( )。

(2分)
A. testDefaulParam(5);
B. testDefaulParam(5, 8);
C. testDefaulParam(5, ‘#’);
D. testDefaulParam(0, 0, ‘*’);
我的答案:
C
题目得分 2
参考答案:
C
函数f定义如下,执行语句:sum =f(5) + f(3); 后,sum的值应为( )。

int f(int m) {
static int i = 0;
int s = 0;
for(; i <= m; i++) s += i;
return s;
}

(2分)
A. 21
B. 16
C. 15
D. 8
我的答案:
B
题目得分 0
参考答案:
C
给定函数原型:int f(int x, int y); 则下列函数调用正确的是( )。

(2分)
A.
int n, a = 0, b = 1;
n = f(int a, int b);

B.
int n, a = 0, b = 1;
n = int f(x, y);

C.
int n = 1 ,a = 0, b = 1;
n = f(a, n);

D.
int n;
n = f();

我的答案:
C
题目得分 2
参考答案:
C
以下函数原型,错误的是( )。

(2分)
A. int f(int i);
B. int f(i);
C. int f(int);
D. int f(void);
我的答案:
B
题目得分 2
参考答案:
B
以下正确的函数头是( )。

(2分)
A. double fun(int x, int y)
B. double fun(int x; int y)
C. double fun(int x, y)
D. double fun(int x, y);
我的答案:
A
题目得分 2
参考答案:
A
以下( )函数定义是错误的。

(2分)
A.
void f() { }

B.
int f() {
return 0;
}

C.
void f(int i) {
return i;
}

D.
int f(void) {
return 0;
}

我的答案:
C
题目得分 2
参考答案:
C
给定函数原型:void f(double d); 和变量声明:double a;

下列( )函数调用是错误的。

(2分)
A. f(1.0f);
B. f(1);
C. f(&a);
D. f(sizeof(a));
我的答案:
D
题目得分 0
参考答案:
C
在调用函数时,如果实参是普通变量,它与对应形参之间的传递方式是( )。

(2分)
A. 地址传递
B. 值传递
C. 由实参传递给形参,再有形参传递给实参
D. 传递方式由用户指定
我的答案:
D
题目得分 2
参考答案:
D
若有:

float (*p)(int, int);

该语句的作用是( )。

(2分)
A. 函数原型声明
B. p为指向函数的指针变量
C. 函数定义
D. p为指向整数的指针变量
我的答案:
A
题目得分 0
参考答案:
B
函数返回类型是由( )决定的。

(2分)
A. return语句中的表达式类型
B. 调用函数的主调函数类型
C. 调用函数时临时
D. 定义函数时所指定的函数类型
我的答案:
D
题目得分 2
参考答案:
D
若有以下函数:

void fun(…) {
static int a = 1;

}

则下列说法中错误的是( )。

(2分)
A. 每次调用fun函数时,变量a的值是上次调用结束时a的值
B. 在fun函数外,可以用变量名a直接引用a的值
C. 在其它函数中,可以出现变量声明:double a = 2.5;
D. fun函数的形式参数不能取名为a
我的答案:
B
题目得分 2
参考答案:
B
以下( )说法是正确的。

(2分)
A. 所有自定义函数都需有相应的函数声明
B. 一个C++程序中可以有多个main函数
C. 所有函数都必须有返回结果
D. C++程序由一个或多个函数组成
我的答案:
D
题目得分 2
参考答案:
D
函数重载是指( )。

(2分)
A. 函数名相同,但函数的参数个数不同或参数的类型不同
B. 函数名相同,但函数的参数个数不同或函数的返回值类型不同
C. 函数名不同,但函数的参数个数和参数的类型相同
D. 函数名相同,且函数的参数类型相同或函数的返回值类型相同
我的答案:
A
题目得分 2
参考答案:
A
已知函数f的定义如下:

void f(void) {
cout << “That’s great”;
}

则调用函数f的正确形式是( )。

(2分)
A. f;
B. f();
C. f(void);
D. f(1);
我的答案:
B
题目得分 2
参考答案:
B
下列描述不正确的是( )。

(2分)
A. 静态局部变量分配在全局变量所在的地方
B. 全局变量定义在函数外部
C. 局部变量定义在函数内部
D. 全局变量定义在函数内部
我的答案:
D
题目得分 2
参考答案:
D
函数Fun的功能是比较形参变量x和y所指的内存单元中的数据大小,将两者中的最小值返回。以下程序执行后输出结果是7,8,7。按要求在________处填写适当的表达式或语句,使程序完整并符合题目要求。

  1. #include
  2. using namespace std;
  3. int Fun(int *x, int *y)
  4. {
  5. if________)  // 若x所指的内存单元中的数据小于y所指的内存单元中的数据,返回该最小值
    
  6.     return *x;
    
  7. else
    
  8.     return *y;
    
  9. }
  10. int main()
  11. {
  12. int a=7, b=8, ________, r;
    
  13. p = &a;
    
  14. q = &b;
    
  15. r = ________;  // 调用函数Fun,返回变量a和b中的最小值,将其存放到变量r中
    
  16. cout << *p << "," << *q << "," << r << endl;
    
  17. return 0;
    
  18. }

(2分)
A.
第5行: x<y
第12行: *p,*q
第15行: Fun(*p,*q)

B.
第5行: *x<*y
第12行: p,q
第15行: Fun(&p,&q)

C.
第5行: *x<*y
第12行: *p,*q
第15行: Fun(p,q)

D.
第5行: x<y
第12行: *p,*q
第15行: Fun(a,b)

我的答案:
C
题目得分 2
参考答案:
C
下列是关于函数模板的程序,则下列说法中正确的有( )。

#include
using namespace std;
template void f(T &i) {
cout << “1”;
}
template<> void f(const int &i) {
cout << “2”;
}
int main() {
int i = 42;
f(i);
return 0;
}
(a) 程序输出1
(b) 程序输出2
© template <>void f(const int &i) 显式实例化void f(const int &)
(d) f(i)隐式实例化函数void f(int &)

(2分)
A. ad
B. bc
C. acd
D. bcd
我的答案:
D
题目得分 0
参考答案:
C
下面代码段执行后,输出结果是( )。

int i = 0;
if(i == 0) {
int i = 3;
}
cout << i << endl;

(2分)
A. 0
B. 2
C. 4
D. 1
我的答案:
A
题目得分 2
参考答案:
A
在函数体中,( )是正确的。

(2分)
A. 可以定义和调用其它函数
B. 可以调用但不能定义其它函数
C. 不可调用但可以定义其它函数
D. 不可调用也不可定义其它函数
我的答案:
B
题目得分 2
参考答案:
B
在一个函数内使用 return 会( )。

(2分)
A. 跳出该函数
B. 跳到该函数的起点
C. 跳到该函数的下一个 return
D. 跳出目前所在的循环
我的答案:
A
题目得分 2
参考答案:
A
在________处填写适当内容完成程序,本程序当输入字符是数字时输出字符串“number”,否则输出“none”

#include
using namespace std;
bool check_number(char x) {
if ((x >= ‘0’) && (x <= ‘9’))
return true;
else
return false;
}
int main() {
char ch;
while(true) {
cin >> ch;
if(ch==’#’)
break;
if(________)
cout << “number\n”;
else
cout << “none\n”;
}
return 0;
}

(2分)
A. check_number(!ch)
B. check_number(ch+1)
C. !check_number(ch)
D. check_number(ch)
我的答案:
C
题目得分 0
参考答案:
D
以下叙述中不正确的是( )。

(2分)
A. 在不同的函数中可以使用相同名字的变量
B. 函数中的形式参数是局部变量
C. 在一个函数内定义的变量只在本函数范围内有效
D. 在一个函数内的复合语句中定义的变量在本函数范围内有效
我的答案:
D
题目得分 2
参考答案:
D
若有如下程序:

#include
using namespace std;
int func(int a, int b) {
return (a + b);
}
int main() {
int x = 2, y = 5, z = 8, r;
r = func(func(x, y), z);
cout << r << endl;
return 0;
}

该程序的输出结果是( )。

(2分)
A. 12
B. 13
C. 14
D. 15
我的答案:
D
题目得分 2
参考答案:
D
下列函数模板中定义正确的是( )。

(2分)
A.
template
T fun(Ta) {
return T + a;
}

B.
tempmlate <typename T1, typename T2>
T1 fun(T1, T2) {
return T1 + T2;
}

C.
template <typename T1, typename T2>
T1 fun(T1, T2) {
return T1 + T2;
}

D.
template
T fun(Ta, T b) {
return a + b;
}

我的答案:
D
题目得分 2
参考答案:
D
以下叙述中正确的是( )。

(2分)
A. C++程序函数之间既允许直接递归调用也允许间接递归调用
B. C++程序函数之间允许直接递归调用但不允许间接递归调用
C. C++程序函数之间不允许直接递归调用但允许间接递归调用
D. C++程序函数之间既不允许直接递归调用也不允许间接递归调用
我的答案:
A
题目得分 2
参考答案:
A
要求通过函数来实现一种不太复杂的功能,并且要加快执行速度,选用( )。

(2分)
A. 内联函数
B. 重载函数
C. 递归函数
D. 嵌套函数
我的答案:
A
题目得分 2
参考答案:
A
若有:

float fun(char *, int &);
char str[200];
int x;

以下对函数fun的调用中,正确的调用格式是( )。

(2分)
A. fun(str, &x)
B. fun(str, x)
C. fun(str[100], x)
D. fun(str[100], &x);
我的答案:
B
题目得分 2
参考答案:
B
关于函数声明 float fun(int a, int b) throw,下列叙述正确的是( )。

(2分)
A. 表明函数抛出 float 类型异常
B. 表明函数抛出任何类型异常
C. 表明函数不抛出任何类型异常
D. 语法错误
我的答案:
D
题目得分 0
参考答案:
C
函数调用表达式fun((exp1,exp2), (exp3,exp4,exp5))中的参数个数是( )。

(2分)
A. 1
B. 2
C. 3
D. 5
我的答案:
B
题目得分 2
参考答案:
B
二、填空题(共20小题,40分)
题型得分 28
以下程序的输出结果是________。

#include
using namespace std;
void fun(int x, int y) {
x = x + y;
y = x - y;
x = x - y;
}
int main() {
int x = 2, y = 3;
fun(x, y);
cout << x << “#” << y << endl;
return 0;
}

(2分)
我的答案:
2#3
题目得分 2
参考答案:
2#3
如果从键盘上输入48<回车>,以下代码段的输出结果是________。
#include
using namespace std;
int main() {
double temperature;
cin >> temperature;
try {
if(temperature > 35)
throw temperature;
cout << temperature << endl;
}
catch(double e) {
cout << e << endl;
}
return 0;
}

(2分)
我的答案:
48
题目得分 2
参考答案:
48
若有以下函数调用语句:

fun(a + b, (y = 10, y), fun(n, k, d));

则在此函数调用语句中实参的个数是________。

(2分)
我的答案:
3
题目得分 2
参考答案:
3、三
以下代码段的输出结果是________。

int x =42;
auto f =[x] {
return x;
};
x = 0;
auto y =f();
cout<< y << endl;

(2分)
我的答案:
42
题目得分 2
参考答案:
42
以下程序的输出结果是________。

#include
using namespace std;
int f(int n) {
if(n == 1)
return 1;
else
return n + f(n - 1);
}
int main() {
cout << f(5) << endl;
return 0;
}

(2分)
我的答案:
15
题目得分 2
参考答案:
15
以下程序的输出结果是________。

#include
using namespace std;
int f(int);
int any_function(int (*pf)(int));
int main() {
cout << any_function(f) << endl;
return 0;
}
int f(int i) {
return i * i + i - 12;
}
int any_function(int (*pf)(int)) {
int n = 0;
while(pf(n))
++n;
return n;
}

(2分)
我的答案:
3
题目得分 2
参考答案:
3
以下代码段的输出结果是________。

int x =42;
auto f = [&x] {
return x;
};
x = 0;
auto y = f();
cout<< y << endl;

(2分)
我的答案:
0
题目得分 2
参考答案:
0
下列数学式对应的正确表达式是________。注意不需要任何空格。

(2分)
我的答案:
sqrt(fabs(sin(x)))
题目得分 2
参考答案:
sqrt(fabs(sin(x)))
以下程序的输出结果是________。

#include
using namespace std;
void swap(int &a, int &b) {
int t;
t = a;
a = b;
b = t;
}
int main() {
int x = 3, y = 5;
swap(x, y);
cout << x << “#” << y << endl;
return 0;
}

(2分)
我的答案:
5#3
题目得分 2
参考答案:
5#3
以下程序的输出结果是________。

#include
using namespace std;
int x, y, z, w;
void p(int &y, int x) {
static int w;
y++;
x++;
w = x + --y;
cout << x << “#” << y << “#” << z <<"#" << w << “#”;
}
int main() {
int x, y, z, w;
x = y = z = w = 1;
do {
static int x;
p(x, y);
cout << x << “#” << y << “#” << z <<"#" << w << endl;
} while(false);
return 0;
}

(2分)
我的答案:
2#1#0#3#1#1#1#1
题目得分 0
参考答案:
2#0#0#2#0#1#1#1
如果 maxValue 函数定义如下:

template <typename T1, typename T2>
T1 maxValue(T1 value1, T2 value2) {
if (value1 > value2)
return value1;
else
return value2;
}

调用 maxValue(1,2.5)会返回值________ 。

(2分)
我的答案:
2.5
题目得分 0
参考答案:
2
利用随机数函数产生10~50(含)范围内随机数的表达式是________。注意不需要任何空格。

(2分)
我的答案:
rand()*40+10
题目得分 0
参考答案:
10+rand()%41、rand()%41+10
以下程序的输出结果是________ 。

#include
using namespace std;
void f(int x, int &y, int *z) {
++x;
++y;
++(*z);
}
int main() {
int i = 1 , j = 1, k = 1;
f(i, j, &k);
cout << i << “#” << j <<"#" << k << endl;
return 0;
}

(2分)
我的答案:
1#2#2
题目得分 2
参考答案:
1#2#2
若有以下程序,函数factorial计算阶乘, 程序调用factorial函数求组合数。

求组合数的公式为:

1 #include
2 using namespace std;
3 double factorial(int number);
4 int main() {
5 int n, k;
6 double c;
7 do {
8 cout<< “Please input n, k:”;
9 cin>> n >> k;
10 } while(n <k);
11 c = factorial(n) /(factorial(k) factorial(n - k));
12 cout <<“c=” << c << endl;
13 }
14 double factorial(int x) {
15 int i;
16 double result;
17 for(i = 2; i <= x;++i)
18 result
= i;
19 return result;
20 }

程序中存在的错误在第________行。

(2分)
我的答案:
18
题目得分 0
参考答案:
16
以下代码段的输出结果是________。

int x =42;
auto f = x mutable {
return ++x;
};
x = 0;
auto y = f();
cout << y << endl;

(2分)
我的答案:
1
题目得分 0
参考答案:
43
以下程序的输出结果是________。

#include
using namespace std;
int a = 3;
int main() {
int s = 0;
{
int a = 5;
s += a++;
}
s += a++;
cout << s << endl;
return 0;
}

(2分)
我的答案:
12
题目得分 0
参考答案:
8
以下程序的输出结果是________。

#include
using namespace std;
int x = 1;
int f(intx) {
if(x == 3) {
int x = 2;
return x;
}
else
return x;
}
int main() {
int y;
y = f(3);
cout << x << “#” << y << endl;
return 0;
}

(2分)
我的答案:
1#2
题目得分 2
参考答案:
1#2
使用关键字________指定函数为内联函数。

(2分)
我的答案:
inline
题目得分 2
参考答案:
inline
以下程序的输出结果是________。

#include
using namespace std;
int total(int (*f)(int), int x, int y) {
int sum = 0;
sum += f(x) + f(y);
return sum;
}
int f1(int x) {
return x += 2;
}
int f2(int x) {
return x -= 2;
}
int main() {
cout << total(f1, 1, 2) + total(f2, 1, 2) << endl;
return 0;
}

(2分)
我的答案:
6
题目得分 2
参考答案:
6
以下程序的输出是________。注意不要有任何多余的空格。

#include
using namespace std;
int b = 40;
void p() {
int a = 5;
static int b = 5;
++a;
++b;
cout << a << “#” << b << “”;
}
int main(void) {
p();
p();
return 0;
}

(2分)
我的答案:
6#66#7
题目得分 2
参考答案:
6#6 6#7

以下说法错误的是( )。

(2分)
A. 在一个结构内不能包含另一个不同类型的结构作为其成员
B. 用指向结构变量的指针做函数参数,是将结构变量的地址传给被调函数,因此在被调函数中对结构内容的修改会影响原结构变量
C. 和整型、实型、字符型一样,布尔类型也是一种基本数据类型
D. 结构在内存中所占的字节数不仅与所定义的结构类型有关,还与计算机系统本身有关
我的答案:
A
题目得分 2
参考答案:
A
下面关于内存泄漏问题的描述错误的是( )。

(2分)
A. 需长期稳定运行的服务程序,以及需要频繁对内存操作且消耗空间较大的程序,通常对内存泄漏比较敏感
B. 出现内存泄露并不是一定会导致系统发生异常,因为实际中内存耗尽的情况非常罕见,内存泄露问题的严重程度取决于每次函数调用时遗留内存垃圾的多少和函数被调用的次数。
C. 指针变量所占的内存被释放了,也就意味着它所指向的动态内存也会被自动释放
D. 内存泄漏问题通常需要运行相当一段时间后才能发现
我的答案:
C
题目得分 2
参考答案:
C
若函数的参数是数组,则传递给这个参数的值是( )。

(2分)
A. 整个数组被拷贝过去
B. 数组的第一个元素的地址
C. 数组第一个元素的值
D. 数组元素的个数
我的答案:
B
题目得分 2
参考答案:
B
若二维数组a有m列,则在a[i][j]之前的元素个数是( )。

(2分)
A. j * m + i
B. j * m + i - 1
C. i * m + j
D. i * m + j - 1
我的答案:
C
题目得分 2
参考答案:
C
若有:int a[] = {0,1, 2, 3, 4, 5, 6, 7, 8, 9}, *p = &a[0], i; 其中0≤i≤9,则对a数组元素不正确的引用是( )。

(2分)
A. p[i]
B. *p
C. a[10]
D. *(&a[i])
我的答案:
B
题目得分 0
参考答案:
C
观察程序

#include
using namespace std;
int main() {
int *first, *second;
first = new int[5];
second = first;
delete[] second;
delete[] first;
return 0;
}

该程序是否正确,原因是什么 ?

(2分)
A. 正确,因为first和second都是独立的指针变量
B. 不正确,因为first和second是相关而非独立的指针变量
C. 正确,second会拷贝first的内容
D. 不正确,second和first指向相同的内容
我的答案:
B
题目得分 0
参考答案:
D
以下数组初始化错误的是( )。

(2分)
A. int a[][3] = {1,2,3,4,5,6};
B. int b[][3] = {{1,2},{0}};
C. int d[2][3] = {{1,2},{3,4},{5,6}};
D. int a[2][3] = {0};
我的答案:
B
题目得分 0
参考答案:
C
若有如下语句:

struct {
int a;
float b;
} data,*p;

若有p = &data;则对data中的成员a的正确引用是( )。

(2分)
A. (*p).data.a
B. *p.a
C. p->a
D. p.data.a
我的答案:
B
题目得分 0
参考答案:
C
下面程序的输出结果是( )。

#include
using namespace std;
int main() {
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
cout << a[a[7] / a[1]] << endl;
return 0;
}

(2分)
A. 2
B. 3
C. 5
D. 4
我的答案:
C
题目得分 2
参考答案:
C
要使语句:p = new int[10]; 能够正常执行,p应定义为( )。

(2分)
A. int p;
B. int p[10];
C. int *p;
D. int (*p)[10];
我的答案:
C
题目得分 2
参考答案:
C
若有如下数组定义:

int a[10]= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

则数值不是6的表达式是( )。

(2分)
A. a[6]
B. a[9] - a[3]
C. a[7]
D. a[10 - 4]
我的答案:
C
题目得分 2
参考答案:
C
若有以下语句,则输出结构变量a的age成员的语句为( )。

struct Person {
string name;
int age;
char sex;
} a = {“Li ning”, 20 , ‘M’} ;

(2分)
A. cout << age;
B. cout << person.age;
C. cout << a.age;
D. cout << person.a.age;
我的答案:
C
题目得分 2
参考答案:
C
关于数组,说法错误的是( )。

(2分)
A. 数组中的所有元素都是同一个类型
B. 数组中元素的下标是从1开始的
C. 数组声明时,“[ ]”里面的内容说明数组长度
D. 对数组的操作必须通过对数组内元素的操作实现
我的答案:
B
题目得分 2
参考答案:
B
以下对有10个元素的一维数组a进行正确初始化的是( )。

(2分)
A. int a[10] = (0, 0, 0, 0, 0);
B. int a[10] = {1, 23};
C. int a[10] = ();
D. int a[] = {0}
我的答案:
A
题目得分 0
参考答案:
B
char
a = new char[32]; 对应的释放内存的语句是( )。

(2分)
A. free a;
B. delete *a;
C. delete a[];
D. delete[] a;
我的答案:
D
题目得分 2
参考答案:
D
如下程序运行时,从键盘上输入由数字组成的字符串,该程序的功能是( )。

#include
using namespace std;
int main() {
string str;
cout << “Enter a numeral string\n”;
cin >> str;
int s = 0;
for(int i = 0; i < str.size(); ++i)
s= 10 * s + str[i] - ‘0’;
cout << s << endl;
return 0;
}

(2分)
A. 将数字字符串str转换成十进制数
B. 将字符串中的大写字母转换成小写
C. 求字符串长度
D. 将字符串中的数字转换成对应的字母
我的答案:
A
题目得分 2
参考答案:
A
若有以下语句,描述正确的是( )。

typedef struct S {
int g;
char h;
} T;

(2分)
A. 不可用S声明结构变量
B. 可用T声明结构变量
C. S是结构类型的变量
D. T是结构类型的变量
我的答案:
C
题目得分 0
参考答案:
B
某学生的记录描述如下,能将其正确定义并将变量中的“出生日期”赋值为1984年11月11日的是( )。

(2分)
A.
struct student {
int number;
char name[20];
char sex;
int year;
int month;
int day;
} s;
year = 1984;
month = 11;
day = 11;

B.
struct student {
int number;
char name[20];
char sex;
struct {
int year;
int month;
int day;
} birth;
} s;
s.year = 1984;
s.month = 11;
s.day = 11;

C.
struct student {
int number;
char name[20];
char sex;
} s;
struct {
int year;
int month;
int day;
} birth;
birth.year = 1984;
birth.month = 11;
birth.day = 11;

D.
struct student {
int number;
char name[20];
char sex;
struct {
int year;
int month;
int day;
} birth;
} s;
s.birth.year = 1984;
s.birth.month = 11;
s.birth.day = 11;

我的答案:
C
题目得分 0
参考答案:
D
在定义int a[5][5]; 后,数组a中的第10个元素是( )。设a[0][0]为第一个元素。

(2分)
A. a[1][4]
B. a[2][4]
C. a[2][5]
D. a[1][5]
我的答案:
A
题目得分 2
参考答案:
A
若有如下语句:

struct {
int a;
double b;
} data[2],*p;
p = data;

则以下对data[0]中成员a的引用中,错误的是( )。

(2分)
A. data[0]->a
B. data->a
C. p->a
D. (*p).a
我的答案:
D
题目得分 0
参考答案:
A
使用new向系统动态申请内存时,正确的是( )。

(2分)
A. 分配的内存空间只能使用一个特定的指针访问
B. 总是能获得一个指向所需内存空间首地址的指针
C. 分配的内存空间不用时系统会自动收回
D. 有可能获得空指针
我的答案:
A
题目得分 0
参考答案:
D
以下正确定义一维数组a的是( )。

(2分)
A. int n=5, a[n]
B. double n; cin>> n; int a[n];
C. int a(5)
D. const int SIZE = 5; int a[SIZE];
我的答案:
D
题目得分 2
参考答案:
D
结构变量在其生命期里,( )。

(2分)
A. 所有成员一直驻留在内存中
B. 只有一个成员驻留在内存中
C. 部分成员驻留在内存中
D. 没有成员驻留在内存中
我的答案:
A
题目得分 2
参考答案:
A
下列程序的输出结果是( )。

#include
using namespace std;
int main() {
int a, b[5];
a=1;
b[0]=4;
cout << b[0]<< “,” <<b[1] << endl;
return 0;
}

(2分)
A. 0,4
B. 4,0
C. 4,不定值
D. 4 0
我的答案:
B
题目得分 0
参考答案:
C
若有如下语句:

struct {
int k;
string s;
} a[5] = {1, “ABC”, 2, “abc”}, *p = a;

那么表达式(p++)->s的值是( )。

(2分)
A. ‘A’
B. ‘B’
C. “ABC”
D. “abc”
我的答案:
C
题目得分 2
参考答案:
C
在以下程序段中的________处填写适当的表达式或语句,使程序能正确引用c数组。

#include
#include
using namespace std;
int main() {
int c[4][5], (*p)[5], d = 0;
for(int i = 0; i < 4; ++i) {
for(int j = 0; j < 5; ++j) {
c[i][j] = d;
++d;
cout<< setw(4) << c[i][j];
}
cout<< endl;
}
p = c;
cout << ________ << “,” << ________ << endl;
return 0;
}

(2分)
A. *(p+3)和c[0][3]
B. *(p[0]+2)和c[0][2]
C. p+1和c[0][1]
D. *(p+1)+3和c[1][3]
我的答案:
A
题目得分 0
参考答案:
B
若有如下语句:

struct Person {
int num;
string name;
char sex;
struct {
int myClass;
string prof;
} in;
} a = {20, “LiNing”, ‘M’, {5,“computer”}}, *p = &a;

下列语句中,正确的是( )。

(2分)
A. cout << a->name;
B. cout << p->in.prof;
C. cout << *p.name;
D. cout << p->in->prof;
我的答案:
B
题目得分 2
参考答案:
B
下面程序的功能是( )。

#include
using namespace std;
int main() {
string a = “programming”;
int k = a.size();
for(int i = 0; i <= k - 1; i++) {
for(int j = i + 1; j < k; j++) {
if(a[i]< a[j]) {
chart = a[i];
a[i]= a[j];
a[j]= t;
}
}
}
cout << a << endl;
return0;
}

(2分)
A. 将字符串a中的元素从小到大排序
B. 求字符串a中的最小元素
C. 将字符串a中的元素从大到小排序
D. 求字符串a中的最大元素
我的答案:
C
题目得分 2
参考答案:
C
设某大学有下列登记表,下面( )选项采用了最佳方式对它进行类型定义。

(2分)
A.
#include
using namespace std;
int main() {
string name; // 姓名
char sex; // 性别
string college; // 所在学院
string professionalTitle; // 职称
string duty; // 职务
int year; // 年
int month; // 月
int day; // 日
// …
return 0;
}

B.
#include
using namespace std;
struct date{ // 日期结构类型
int year; // 年
int month; // 月
int day; // 日
};
int main() {
string name; // 姓名
char sex; // 性别
date birthday; // 出生日期
string college; // 所在学院
string professionalTitle; // 职称
string duty; // 职务
// …
return 0;
}

C.
#include
using namespace std;
struct date { // 日期结构类型
int year; // 年
int month; // 月
int day; // 日
};
struct professionalState { // 职业结构类型
string college; // 所在学院
string professionalTitle;// 职称
string duty; // 职务
};
int main() {
string name; // 姓名
char sex; // 性别
date birthday; // 出生日期
professionalState occupation; // 职业状况
// …
return 0;
}

D.
#include
using namespace std;
struct date { // 日期结构类型
int year; // 年
int month; // 月
int day; // 日
};
struct professionalState { // 职业结构类型
string college; // 所在学院
string professionalTitle; // 职称
string duty; // 职务
};
struct person { // 职工个人信息结构类型
string name; // 姓名
char sex; // 性别
date birthday; // 出生日期
professionalState occupation; // 职业状况
};
int main() {
// …
return 0;
}

我的答案:
D
题目得分 2
参考答案:
D
动态分配包含20个元素的int型数组,下列语句中正确的是( )。

(2分)
A. int p = new int[20];
B. int *p = new int[20];
C. int *p = new int(20);
D. int *p = new [20];
我的答案:
B
题目得分 2
参考答案:
B
二、填空题(共18小题,40分)
题型得分 24
以下程序的输出结果是________。

#include
using namespace std;
void fun(int a[][3], int m, int n, int &x, int &y, int &z) {
x = a[0][0];
for(int i = 0; i < m; ++i) {
for(int j = 0; j < n; ++j) {
if(a[i][j] < x) {
x = a[i][j];
y = i;
z = j;
}
}
}
}
int main() {
int min, row, col;
int a[3][3] = {50, -30, 90, 35, 45, -85, -17, 57, 97};
fun(a, 3, 3, min, row, col);
cout << min << “,” << row <<"," << col <<endl;
return 0;
}

(2分)
我的答案:
-85,1,2
题目得分 0
参考答案:
-85,1,2
下列程序从输入的10个字符串中找出最长的那个串及长度。请填空。注意不需要任何空格。

#include
#include
using namespace std;
int main() {
string str[10], s;
for(int i = 0; i < 10; ++i)
getline(cin,str[i]);
s= str[0] ;
for(int i = 1; i < 10; ++i)
if(s.size()< str[i].size())
________;
cout << “输出最长的那个串:” << ________<< endl;
cout << “输出最长的那个串的长度:” << ________ << endl;
return 0;
}

(6分)
我的答案:
s=str[i],s,s.size
题目得分 4
参考答案:
s=str[i],s,s.size()
以下程序的输出结果是________。

#include
using namespace std;
int main() {
int a[] = {1, 2, 3, 4, 5, 6}, *p = a;
*(p + 3) += 2;
cout << *p<< “#” << *(p + 3) << endl;
return 0;
}

(2分)
我的答案:
1#6
题目得分 2
参考答案:
1#6
执行如下程序从键盘输入字符串“abcdefg”,则程序输出________。

#include
#include
using namespace std;
void strchange(string &str) {
int n =str.size();
if(n ==0 || n == 1)
return;
else {
for(int i = 0, j = n - 1; i <= n / 2 - 1; i++, j–) {
char tmp;
tmp = str[i];
str[i] = str[j];
str[j] = tmp;
}
}
}
int main() {
string str;
cin >> str;
strchange(str);
cout << str<< endl;
return 0;
}

(2分)
我的答案:
gfedcba
题目得分 2
参考答案:
gfedcba
若有:int a[10], *p;

则使指针p指向a数组的赋值语句是________。注意不需要任何空格。

(2分)
我的答案:
*p=&a
题目得分 0
参考答案:
p=a;、p=&a[0];
若有:

int a[10]= {1, 2, 3, 4, 5, 6, 7};
int *p =a;

则表达式*++p的值为________。

(2分)
我的答案:
2
题目得分 2
参考答案:
2
以下程序的输出结果是________。

#include
#include
using namespace std;
int main() {
string s, sp = “HELLO”;
s = sp;
s[0] = ‘h’;
s[5] = ‘!’;
cout << s << endl;
return 0;
}

(2分)
我的答案:
hELLO!
题目得分 0
参考答案:
hELLO
假设sizeof(int)的值为4,对于数组:int a[3][6];

sizeof(a[0])的值为________。

(2分)
我的答案:
4
题目得分 0
参考答案:
24
以下程序的输出结果是________。

#include
using namespace std;
struct STU {
char name[10];
int num;
};
void Fun1(STU c) {
STUb = {“LiGuo”, 2042};
c = b;
};
void Fun2(STU *c) {
STUb = {“SunDan”, 2044};
*c = b;、
};
int main() {
STU a = {“YangHan”, 2041}, b = {“WangYi”, 2043};
Fun1(a);
Fun2(&b);
cout << a.num << “#” << b.num << endl;
return 0;
}

(2分)
我的答案:
2041#2044
题目得分 2
参考答案:
2041#2044
以下程序的输出结果是________。

#include
using namespace std;
int main() {
int a[3][3] = {9, 7, 5, 3, 1, 2, 4, 6, 8};
int s1 = 0, s2 = 0;
for(int i = 0; i < 3; ++i) {
for(int j = 0; j < 3; ++j) {
if(i == j)
s1 += a[i][j];
if(i + j == 2)
s2 += a[i][j];
}
}
cout << s1 << “#” << s2 << endl;
return 0;
}

(2分)
我的答案:
18#10
题目得分 2
参考答案:
18#10
若有int a[3][2]={10,20,30,40,50,60},(p)[2]; p=a; 则(*(p+2)+1)的值为________。

(2分)
我的答案:
60
题目得分 2
参考答案:
60
若有:

struct wc {
int a;
int *b;
};
int x[] = {11,12}, y[] = {31, 32};
struct wc z[] = {100, x, 300, y}, *p=z;

则表达式++p->a的值为________。

(2分)
我的答案:
11
题目得分 0
参考答案:
101
以下程序的输出结果是________。

#include
using namespace std;
void m(int x, int y[]) {
x = 3;
y[0] = 3;
}
int main() {
int x = 0;
int y[1] = {0};
m(x, y);
cout << x << “#” << y[0] << endl;
return 0;
}

(2分)
我的答案:
0#3
题目得分 2
参考答案:
0#3
若有:

struct {
int x;
int y;
} s[2] = {{1,2}, {3,4}}, *p=s;

则表达式(++p)->x的值为________。

(2分)
我的答案:
3
题目得分 2
参考答案:
3
下列代码段的功能是: 统计子字符串substr在字符串str中出现的次数。

例如:若字符串为"aaas lkaaas",子字符串为"as",则应输出2。若字符串为"asasasa",子字符串为"asa",则应输出3。

写出在程序划线处应填写的表达式。

int fun(string substr, string str) {
int i, j, k, num = 0;
for(int i = 0; i < str.size(); ++i) {
for(int j = i, k = 0; substr[k] == str[j]; ++j, ++k) {
if(k + 1 == substr.size()) {
num++;
________;
}
}
}
return num;
}

(2分)
我的答案:
j=i
题目得分 0
参考答案:
break
在划线处填写适当内容(注意不需要任何空格)完成程序,本程序当输入字符是数字时输出字符串“number”,否则输出“none”。

#include
using namespace std;
bool check_number(char x) {
if((x >= ‘0’) && (x <= ‘9’))
return true;
else
return false;
}
int main() {
char ch;
while(true) {
cin >> ch;
if(ch == ‘#’)
break;
if(________)
cout<< “number\n”;
else
cout<< “none\n”;
}
return 0;
}

(2分)
我的答案:
ch>=“0”&&ch<=“9”
题目得分 0
参考答案:
check_number(ch)
以下程序的输出结果是________。

#include
using namespace std;
int main() {
int a[3][3], *p;
p = &a[0][0];
for(int i = 0; i < 9; ++i) {
p[i] = i + 1;
}
cout << a[1][2] << endl;
return 0;
}

(2分)
我的答案:
6
题目得分 2
参考答案:
6
以下程序的输出结果是________。

#include
using namespace std;
int main() {
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p = &a[3], b;
b = p[5];
cout << b << endl;
return 0;
}

(2分)
我的答案:
9
题目得分 2
参考答案:
9

有如下两个类定义:

class AA { };
class BB {
AA v1, *v2;
BB v3;
int v4;
};

其中有一个成员变量的定义是错误的,这个变量是( )。

(2分)
A. v1
B. v2
C. v4
D. v3
我的答案:
D
题目得分 2
在类的外部如何访问该类对象的私有成员?

(2分)
A. 不可能的任务
B. 通过调用公有的成员函数能间接访问到私有成员
C. 通过强制类型转换将私有成员转换为公有成员
我的答案:
B
题目得分 2
以下说法错误的是( )。

(2分)
A. 成员函数可以定义在类外
B. 成员函数内可以访问类的所有数据成员
C. 必须通过对象调用非静态成员函数
D. 只有成员函数才能访问类的数据成员
我的答案:
D
题目得分 2
不属于构造函数特征的是( )。

(2分)
A. 构造函数的函数名与类名同名
B. 构造函数可以重载
C. 构造函数可以设置缺省(默认)参数
D. 构造函数必须指定返回类型说明
我的答案:
D
题目得分 2
C++中实现对象抽象与封装性的基本单位是( )。

(2分)
A. 类
B. 枚举
C. 数组
D. 函数
我的答案:
A
题目得分 2
以下( )说法不是构造函数的特征。

(2分)
A. 构造函数的函数名与类名相同
B. 构造函数不能重载
C. 构造函数可以设置默认参数
D. 构造函数没有返回值类型
我的答案:
B
题目得分 2
以下程序的输出结果是( )。

#include
using namespace std;
class A {
private:
int val;=
public:
A(int x) : val(x) { }
void print() const { cout << “const:val=” <<val << " “; }
void print() { cout << “val=” << val <<” "; }
};
int main() {
A a1(1);
const A a2(2);
a1.print();
a2.print();
return 0;
}

(2分)
A. val=1 const:val=2
B. const:val=1 const:val=2
C. const:val=1 val=2
D. val=1 val=1
我的答案:
A
题目得分 2
对于通过new运算符生成的对象,( )。

(2分)
A. 在包含该new语句的函数返回时自动析构
B. 在程序结束时自动析构
C. 在执行delete操作时会析构,如果没有执行delete操作,则在程序结束时自动析构
D. 执行delete操作时才能析构
我的答案:
D
题目得分 2
假定一个类的成员均为公有成员,构造函数为“A(int aa = 1, int bb = 0) { a = aa; b = bb; }”,则执行“A x(4);”语句后,x.a和x.b的值分别为( )。

(2分)
A. 0和4
B. 4和0
C. 1和4
D. 4和1
我的答案:
B
题目得分 2
以目前所学内容来看,以下( )说法是不对的。

(2分)
A. 成员变量每个对象有各自的一份,互相不影响
B. 程序运行期间,一个对象的存储空间内部包含了成员函数的指令
C. 类的成员函数内部可以访问同类的成员变量
我的答案:
B
题目得分 2
( )是面向对象的程序设计方法相对结构化程序设计方法的好处。

(2分)
A. 程序代码更短
B. 程序更容易调试、修改和扩充
C. 程序运行速度更快
我的答案:
B
题目得分 2
属于析构函数特征的是( )。

(2分)
A. 一个类中只能定义一个析构函数
B. 析构函数名是~
C. 析构函数只能定义在类的体内
D. 析构函数可以有一个或多个参数
我的答案:
A
题目得分 2
若有如下类A:

class A {
public:
A();
A(int x);

};

执行语句:A a(4),b[3], *p[2]; 则自动调用类A构造函数的次数是( )。

(2分)
A. 6
B. 4
C. 3
D. 1
我的答案:
A
题目得分 0
有类A如下定义:

class A {
int v;
public:
A(int n) { v = n; }
};

下面哪条语句是编译不会出错的?

(2分)
A. A a1(3);
B. A a2;
C. A *p = new A();
我的答案:
A
题目得分 2
以下说法正确的是( )。

(2分)
A. 类和对象没有区别
B. 要为类和对象分配存储空间
C. 对象是类的实例,为对象分配存储空间而不为类分配存储空间
D. 类是对象的实例,为类分配存储空间而不为对象分配存储空间
我的答案:
C
题目得分 2
有如下程序段,编译运行结果为( )。

#include
using namespace std;
class A {
public:
static int a;
A() { ++a; }
};
int A::a = 0;
int main() {
cout << A::a << " ";
A b;
cout << A::a << endl;
return 0;
}

(2分)
A. 编译通过,输出 0 0
B. 编译通过,输出 0 1
C. 编译错误
D. 编译通过,输出 1 1
我的答案:
B
题目得分 2
对于类的常量成员函数的描述正确的是( )。

(2分)
A. 常量成员函数只能由常量对象调用
B. 常量成员函数不可以对类的静态数据成员进行修改
C. 常量成员函数不改变对象的状态
D. 常量成员函数不能访问类的数据成员
我的答案:
C
题目得分 2
下列( ),不会调用对象的析构函数。

(2分)
A. 将对象指针强行赋值为NULL时
B. 当对象变量脱离其作用域时
C. 函数中定义的动态对象变量当函数执行结束时
D. 用delete删除对象指针时
我的答案:
A
题目得分 2
以下说法正确的是( )。

(2分)
A. 每个对象内部都有成员函数的实现代码
B. 一个类的私有成员函数内部不能访问本类的私有成员变量
C. 类的成员函数之间可以互相调用
D. 编写一个类时,至少要写一个成员函数
我的答案:
C
题目得分 2
以下关于类和对象的说法错误的说法是( )。

(2分)
A. 类是一种类型,它封装了数据和对数据的操作
B. 对象是类的实例
C. 一个类的对象只有一个
D. 一个对象必属于某个类
我的答案:
C
题目得分 2
以下代码段,( )是不正确的。

(2分)
A.
int main() {
class A {
int v;
};
A a;
a.v = 3;
return 0;
}

B.
int main() {
class A {
public:
int v;
A *p;
};
A a;
a.p = new A;
delete a.p;
return 0;
}

C.
int main() {
class A {
public:
int v;
A *p;
};
A a;
a.p = &a;
return 0;
}

D.
int main() {
class A {
public:
int v;
};
A *p = new A;
p->v = 4;
delete p;
return 0;
}

我的答案:
A
题目得分 2
以下有关构造函数的说法正确的是( )。

(2分)
A. 任一个类必定有构造函数
B. 可定义没有构造函数的类
C. 构造函数不能重载
D. 任一个类必定有缺省的构造函数
我的答案:
A
题目得分 2
以下说法中正确的是( )。

(2分)
A. 一个类只能定义一个构造函数,但可以定义多个析构函数
B. 一个类只能定义一个析构函数,但可以定义多个构造函数
C. 构造函数的返回值类型是void
D. 一个类一定会有无参构造函数
我的答案:
B
题目得分 2
以下有关类的说法正确的是( )。

(2分)
A. 不能指定其成员的权限
B. 不能包含成员函数
C. 其成员的默认访问权限为私有的
D. 不能包含对象成员
我的答案:
C
题目得分 2
关于类的静态成员,说法错误的是( )。

(2分)
A. 类的静态成员变量由该类的全部对象共有
B. 在类的静态成员函数中,可以访问该类的静态成员变量
C. 不需要创建类的对象,就可以访问类的静态成员
D. 在类的非静态成员函数中,不可以访问该类的静态成员变量
我的答案:
D
题目得分 2
关于类的对象,说法错误的是( )。

(2分)
A. 对象的成员变量可以是其他类的对象
B. 同类的对象间,可以互相赋值
C. 在成员函数中,只能访问成员函数所作用的对象的private成员
D. 释放对象时,相应类的析构函数被自动执行
我的答案:
C
题目得分 2
面向对象程序设计将数据与( )放在一起,作为一个相互依存、不可分割的整体来处理。

(2分)
A. 对数据的操作
B. 信息
C. 数据隐藏
D. 数据抽象
我的答案:
A
题目得分 2
假设A是一个类的名字,下面的语句生成了几个类A的对象?

A *arr[4] = { new A(), NULL,new A() };

(2分)
A. 1
B. 4
C. 2
我的答案:
C
题目得分 2
以下对类A的定义,( )是正确的。

(2分)
A.
class A {
int v;
public:
void Func();
};
A::void Func() { }

B.
class A {
private:
int v;
public:
void Func() { }
}

C.
class A {
int v;
public:
A next;
void Func() { }
};

D.
class A {
int v;
A *next;
void Func() { }
};

我的答案:
D
题目得分 2
下面有一段程序,该段程序的输出结果为( )。

#include
using namespace std;
class A {
public:
A() { cout << “1” << " "; }
~A() { cout << “2” << " "; }
};
int main() {
cout << “3” << " ";
A a;
cout << “4” << " ";
return 0;
}

(2分)
A. 1 2 3 4
B. 3 1 2 4
C. 3 1 4 2
D. 3 1 4
我的答案:
C
题目得分 2
二、填空题(共8小题,16分)
题型得分 16
下面是一个类A的定义,请在________处填写合适的内容(如果必要,标识符间只留一个空格,不必要的不留空格)。

class A {
private:
int x;
public:
A(int x0);
};
________ { //类A的构造函数的函数头
x = x0; //类A的构造函数的函数体
}

(2分)
我的答案:
A::A(int x0)
题目得分 2
以下程序的输出结果是________。

#include
using namespace std;
class A {
public:
A(int a1, int a2):a1(a1), a2(a2) { }
void print();
void print() const;
private:
int a1, a2;
};
void A::print() {
cout << a1 << " ";
}
void A::print() const {
cout << a2 << " ";
}
int main() {
A a(1, 2);
const A b(1, 2);
a.print();
b.print();
return 0;
}

(2分)
我的答案:
1 2
题目得分 2
下列程序的输出结果是________。

#include
using namespace std;
class A {
public:
A();
~A();
void display();
private:
int x;
};
A::A() {
cout << “constructor” << “#”;
x = 0;
}
A::~A() {
cout << “destructor” << endl;
}
void A::display() {
cout << x << “#”;
}
int main() {
A a;
a.display();
return 0;
}

(2分)
我的答案:
constructor#0#destructor
题目得分 2
下列程序的输出结果是________。

#include
using namespace std;
class Count {
public:
Count() {
count = 1;
}
Count(int c) {
count = c;
}
int count;
};
void increment(Count &c, int &times) {
c.count++;
times++;
}
int main() {
Count myCount;
int times = 0;
for(int i = 0; i < 100; ++i)
increment(myCount, times);
cout << myCount.count << “#” << times << endl;
return 0;
}

(2分)
我的答案:
101#100
题目得分 2
下列程序的输出结果是________。

#include
using namespace std;
class C {
public:
void setX(int i) {
x= i;
}
int getX() {
return x;
}
private:
int x;
};
int main() {
C *p;
C a[3];
a[0].setX(5);
a[1].setX(6);
a[2].setX(7);
for(int i = 0; i < 3; ++i) {
p = &a[i];
cout << p->getX();
}
cout << endl;
return 0;
}

(2分)
我的答案:
567
题目得分 2
下列程序的输出结果是________。

#include
using namespace std;
class C {
public:
void func() {
static int x = 0;
cout << ++x;
}
};
int main() {
C c1, c2;
c1.func();
c2.func();
c1.func();
return 0;
}

(2分)
我的答案:
123
题目得分 2
如果从键盘上输入120<回车>,下列程序的输出结果是________。

#include
#include
using namespace std;
int main() {
double temperature;
cin>> temperature;
try {
if(temperature> 95)
throw runtime_error(“Exceptional temperature”);
cout << temperature << endl;
}
catch(runtime_error &ex) {
cout << ex.what() << endl;
}
return0;
}

(2分)
我的答案:
Exceptional temperature
题目得分 2
对于如下代码,请指出错误的代码行号是________。

1 class A {
2 public:
3 A(int a = 0) {
4 x = a;
5 }
6 static void f1() {
7 x++;
8 }
9 private:
10 int x;
11 static int y;
12 };

(2分)
我的答案:
7
题目得分 2

以下关于类的友元函数的说法中正确的是( )。

(2分)
A. 允许在类外访问类中除私有成员以外的任何成员
B. 允许在类外访问类中的任何成员
C. 友元函数也是该类的成员
D. 友元函数的定义必须放在该类的公共(public)部分
我的答案:
B
题目得分 2
参考答案:
B
若要对类AB定义“+”运算符重载成员函数,实现两个类AB对象的加法并返回相加结果,则该成员函数的声明语句为( )。

(2分)
A. AB operator+(AB &a, AB &b);
B. AB operator+(AB &a);
C. operator+(AB a);
D. AB &operator+();
我的答案:
B
题目得分 2
参考答案:
B
假定AB为一个类,则该类的拷贝(复制)构造函数的声明语句为( )。

(2分)
A. AB&(AB x);
B. AB(AB x);
C. AB(AB *x);
D. AB(AB &);
我的答案:
D
题目得分 2
参考答案:
D
关于运算符重载,下列说法中正确的是( )。

(2分)
A. 在类中,一个运算符可以对应多个不同的重载函数
B. 运算符函数的返回类型不能声明为基本数据类型
C. C++已有的任何运算符都可以重载
D. 可以通过运算符重载来创建C++中原来没有的运算符
我的答案:
A
题目得分 2
参考答案:
A
如果某函数的返回值是个对象,则该函数被调用时,返回的对象( )。

(2分)
A. 是通过无参数的构造函数初始化的
B. 是通过拷贝(复制)构造函数初始化的
C. 用哪个构造函数初始化取决于函数中return语句是怎么写的
D. 不需要初始化
我的答案:
B
题目得分 2
参考答案:
B
类C1和类C2都是类模板CT的模板类,下列说法正确的是( )。

(2分)
A. C1的成员函数中,可以访问C2的私有成员
B. C1的对象,可以赋值给C2类型的变量
C. C1的友元函数中,可以访问C2的私有成员
D. 程序中,C1的静态成员变量和C2的静态成员变量拥有不同的存储空间
我的答案:
D
题目得分 2
参考答案:
D
对于以下程序,说法正确的是( )。
class B {
public:
class A {
int functionA(int a) {
return functionB(a);
}
};
public:
int functionB(int a) {
return a;
}
};

(2分)
A. 编译正确
B. 编译错误。修正错误,可将functionA函数体内部改为return this.functionB(a);
C. 编译错误。修正错误,可将functionA函数体内部改为return this->functionB(a);
D. 编译错误。修正错误,可在functionB函数头前添加static关键字
我的答案:
D
题目得分 2
参考答案:
D
以下关于this指针的说法中错误的是( )。

(2分)
A. this指针必须显式声明
B. 当创建一个对象后,this指针就指向该对象
C. 成员函数拥有this指针
D. 静态成员函数不拥有this指针
我的答案:
B
题目得分 0
参考答案:
A
下列类模板中定义正确的是( )。

(2分)
A.
template<typename T1, typename T2>
class A {
T2 b;
T1 fun(double a) {
b = (T2)a;
return (T1)a;
}
};

B.
template<typename T1, typename T2>
class A {
int T2;
T1 fun(T2 a) {
return a + T2;
}
};

C.
template<typename T1, typename T2>
class A {
public:
T2 b;
T1 a;
A() { }
T1 fun() {
return a;
}
};

D.
template<typename T1, typename T2>
class A : {
T1 ;
int fun(int a) {
return T1+T2;
}
};

我的答案:
A
题目得分 2
参考答案:
A
假设Complex是一个复数类,下面( )情况将不会引起拷贝(复制)构造函数的调用。

(2分)
A.
Complex c1(5), c2;
c2 = c1;

B.
Complex c1(5);
Complex c2[2] = { c1, 2 };

C.
Complex c1(5);
Complex c2(c1);

D.
Complex c1(5);
Complex c2 = c1;

我的答案:
A
题目得分 2
参考答案:
A
以下关于 this 指针的说法中错误的是( )。

(2分)
A. 在构造函数内部可以使用this指针
B. const成员函数内部不可以使用this 指针
C. 在析构函数内部可以使用 this 指针
D. 成员函数内的this 指针,指向成员函数所作用的对象
我的答案:
B
题目得分 2
参考答案:
B
假设有以下类A:

class A {
public:
int func(int a) {
return a * a;
}
};

以下代码段,( )是不正确的。

(2分)
A.
A a,b;
if( a != b)
a.func(5);

B.
A a;
a.func(5);

C.
A *p = new A;
p->func(5);

D.
A a;
A &r = a;
r.func(5);

我的答案:
A
题目得分 2
参考答案:
A
如果将运算符“* ”重载为某个类的成员运算符(也即成员函数),则该成员函数的参数个数是( )。

(2分)
A. 1个
B. 0个
C. 0个1个均可
D. 2个
我的答案:
C
题目得分 2
参考答案:
C
以下说法错误的是( )。(2分)
A. 成员函数可以定义在类外
B. 成员函数内可以访问类的所有数据成员
C. 必须通过对象调用非静态成员函数
D. 只有成员函数才能访问类的数据成员
我的答案:
D
题目得分 2
参考答案:
D
关于运算符重载,下列说法错误的是( )。

(2分)
A. 运算符成员重载函数的参数的个数等于该运算符的操作数的个数减一
B. 同一个运算符可以被重载多次
C. 运算符“++”只能被重载为成员函数
D. 运算符“::”是不能被重载的
我的答案:
C
题目得分 2
参考答案:
C
以下关于类的友元函数的说法中错误的是( )。

(2分)
A. 友元函数不是成员函数
B. 友元函数只能在类的公共(public)部分声明
C. 友元函数需要在类内声明
D. 友元函数可以直接访问类的私有成员
我的答案:
B
题目得分 2
参考答案:
B
二、填空题(共7小题,14分)
题型得分 14
有如下程序:

#include
using namespace std;
class A {
private:
int a;
public:
A(int a = 0):a(a) {
cout << “1”;
}
A(A &x) {
a = x.a;
cout << “2”;
}
~A() {
cout << a;
}
int get_a() {
return a;
}
};
int main() {
A d1(5), d2(d1);
A *pd = new A(8);
cout << pd->get_a();
delete pd;
return 0;
}

程序运行时的输出结果是________。

(2分)
我的答案:
1218855
题目得分 2
参考答案:
1218855
下列程序的输出结果是________。

#include
using namespace std;
class MyClass {
public:
MyClass(int i = 0) {
cout<< i;
}
MyClass(const MyClass &x) {
cout<< 2;
}
MyClass &operator=(const MyClass &x) {
cout<< 3;
return *this;
}
~MyClass() {
cout<< 4;
}
};
int main() {
MyClass obj1(1), obj2(2);
MyClass obj3 = obj1;
return 0;
}

(2分)
我的答案:
122444
题目得分 2
参考答案:
122444
下列程序的输出结果是________。

#include
using namespace std;
class Point {
public:
Point() {
x = y = 0;
}
Point(int x, int y) {
this->x = x;
this->y = y;
}
Point(Point &p) {
x = 2 * p.x;
y = 2 * p.y;
}
void show() {
cout << x << “#” << y << endl;
}
private:
intx, y;
};
int main() {
Point p1(100, 200);
Point p2(p1);
p2.show();
return 0;
}

(2分)
我的答案:
200#400
题目得分 2
参考答案:
200#400
下列程序的输出结果是________。

#include
using namespace std;
class A {
public:
A(int val) {
x = val;
}
A operator++() {
x++;
return *this;
}
A operator++(int) {
A old = *this;
++(*this);
return old;
}
int getX() const {
return x;
}
private:
int x;
};
int main() {
A a(10);
cout << (++a).getX();
cout << a++.getX();
return 0;
}

(2分)
我的答案:
1111
题目得分 2
参考答案:
1111
指出下列程序的错误在第________行。

1 #include
2 using namespace std;
3 class A {
4 public:
5 A(int x) {
6 value = x;
7 }
8 private:
9 int value;
10 };
11 template
12 class B {
13 public:
14 B(T value1, Tvalue2) {
15 value = value1>= value2;
16 }
17 private:
18 bool value;
19 };
20 int main() {
21 A a1(8), a2(12);
22 B b(a1, a2);
23 return 0;
24 }

(2分)
我的答案:
15
题目得分 2
参考答案:
15
下列程序的输出结果是________。

#include
using namespace std;
class A {
public:
A(int a, int b) {
x = a;
y = b;
}
void show() {
cout << x << “#” << y << “#”;
}
private:
int x, y;
};
class B {
public:
B(int a, int b) {
length = a;
width = b;
}
void show() {
cout << length << “#” << width << “#”;
}
private:
int length, width;
};
class C {
public:
C(int a, int b, int c, int d) : bb(300, 400), aa(c, d) {
radius = a;
height = b;
}
void show() {
aa.show();
bb.show();
cout << radius << “#” << height;
}
private:
int radius, height;
A aa;
B bb;
};
int main() {
C cc(100, 200, 500, 600);
cc.show();
return 0;
}

(2分)
我的答案:
500#600#300#400#100#200
题目得分 2
参考答案:
500#600#300#400#100#200
下列程序的输出结果是________。

#include
using namespace std;
class A {
public:
A(int x) {
a = x;
}
void fun1(double x) {
b = a * x;
}
static void setC(int x) {
c = x;
}
int fun2() {
return a + b + c;
}
friend void fun3(A &x);
private:
int a, b;
static int c;
};
int A::c = 10;
void fun3(A &x) {
x.c += 10;
}
int main() {
A a1(10), a2(20);
a1.fun1(0.2);
a2.fun1(0.5);
A::setC(4);
fun3(a1);
cout << a1.fun2() << “#” << a2.fun2() << endl;
return 0;
}

(2分)
我的答案:
26#44
题目得分 2
参考答案:
26#44

以下说法中正确的是( )。

(2分)
A. 用 new 运算符动态创建对象时,用于初始化该对象的一定是无参数的构造函数
B. 通过赋值号“=”用一个对象对另一个对象进行赋值,就会引发拷贝(复制)构造函数的调用
C. 构造函数和析构函数都可以是虚函数
D. 构造函数中可以调用本类的静态成员函数
我的答案:
D
题目得分
参考答案:
D
以下说法中正确的是( )。

(2分)
A. 抽象类的成员函数都是纯虚函数
B. 析构函数可以是虚函数
C. const成员函数中不可以使用this 指针
D. 在虚函数中不能使用this指针
我的答案:
B
题目得分
参考答案:
B
若类B是从类A派生而来,而语句 p.Do(); 在被多次执行时,有的时候调用的是类A的Do成员函数,有的时候调用的是类B的Do成员函数,那么p的类型可以是( )。

(2分)
A. B
B. A &
C. A
D. A *
我的答案:
B
题目得分
参考答案:
B
下列关于类继承的说法中,( )是错误的。

(2分)
A. 派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
B. 派生类也是基类,但基类不一定具有派生类的全部属性和方法
C. 继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
D. 一个基类可以有多个派生类,一个派生类可以有多个基类
我的答案:
A
题目得分
参考答案:
A
当一个派生类保护继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( )。

(2分)
A. public成员
B. private成员
C. protected成员
D. 友元
我的答案:
C
题目得分
参考答案:
C
不论派生类以何种方法继承基类,都不能使用基类的( )。

(2分)
A. public成员
B. private成员
C. protected成员
D. public成员和protected成员
我的答案:
B
题目得分
参考答案:
B
设类B是基类A的公有派生类,并有语句:A a1, *pa=&a; B b1, *pb=&b1; 则下列语句中正确的是( )。

(2分)
A. pb = pa;
B. b1 = a1;
C. a1 = b1;
D. *pb = *pa;
我的答案:
D
题目得分
参考答案:
C
在创建派生类对象时,构造函数的执行顺序是( )。

(2分)
A. 对象成员构造函数、基类构造函数、派生类本身的构造函数
B. 派生类本身的构造函数、基类构造函数、对象成员构造函数
C. 基类构造函数、派生类本身的构造函数、对象成员构造函数
D. 基类构造函数、对象成员构造函数、派生类本身的构造函数
我的答案:
D
题目得分
参考答案:
D
假设A为抽象类,下列声明( )是正确的。

(2分)
A. A fun(int);
B. A *p;
C. int fun(A);
D. A Obj;
我的答案:
B
题目得分
参考答案:
B
以下说法错误的是( )。假设在公有继承情况下。

(2分)
A. 可以将派生类对象的地址赋值给基类指针
B. 可以将派生类对象赋值给基类对象
C. 可以将派生类对象赋值给基类的引用
D. 可以将基类对象赋值给派生类对象
我的答案:
D
题目得分
参考答案:
D
类C2是类C1的派生类,下列说法错误的是( )。

(2分)
A. 若函数f是C1的友元,则f也是C2的友元
B. C1类型的指针可以指向C2的对象
C. 若函数f是C1的虚函数,则f也是C2的成员函数
D. C2的对象可以赋值给C1类型的变量
我的答案:
A
题目得分
参考答案:
A
下列说法正确的是( )。

#include
using namespace std;
class A {
public:
virtual void f() { cout <<“A” << endl; }
};
class B: public A {
private:
void f() { cout << “B”<< endl; }
};
void g(A &a) { a.f(); }
int main() {
B b;
g(b);
}

(2分)
A. 编译正确,输出 A
B. 编译正确,输出 B
C. 编译错误
我的答案:
B
题目得分
参考答案:
B
以下关于抽象类的说法正确的是( )。

(2分)
A. 抽象类至少含有一个静态成员函数
B. 抽象类的成员函数中,不能出现对本类纯虚函数进行调用的语句
C. 抽象类至少含有一个纯虚函数
D. 可以定义抽象类的对象
我的答案:
C
题目得分
参考答案:
C
假设class Y : public X,即类 Y 是类 X 的派生类,则说明一个 Y 类的对象时和删除 Y 类对象时 ,调用构造函数和析构函数的次序分别为( )。

(2分)
A. X,Y; Y,X
B. X,Y; X,Y
C. Y,X; X,Y
D. Y,X; Y,X
我的答案:
A
题目得分
参考答案:
A
当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( )。

(2分)
A. public成员
B. private成员
C. protected成员
D. 友元
我的答案:
A
题目得分
参考答案:
A
在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的( )。

(2分)
A. 私有成员
B. 公有成员
C. 保护成员
D. 保护成员或私有成员
我的答案:
A
题目得分
参考答案:
A
当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( )。

(2分)
A. public成员
B. private成员
C. protected成员
D. 友元
我的答案:
B
题目得分
参考答案:
B
在派生类中,重定义一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值( )。

(2分)
A. 不同
B. 相同
C. 相容
D. 部分相同
我的答案:
B
题目得分
参考答案:
B
二、填空题(共10小题,20分)
题型得分 0
下列程序的输出结果是________。

#include
using namespace std;
class A {
public:
int x;
A(int x = 100) {
this->x = x;
}
void show() {
cout << x << “#”;
}
};
class B {
public:
int y;
B(int y = 300) {
this->y = y;
}
void show() {
cout << y << “#”;
}
};
class C:public A, public B {
public:
int y;
C(int a, int b, int c):A(a), B(b) {
y = c;
}
void show() {
cout << y << endl;
}
};
int main() {
C c(400, 500, 600);
c.y = 200;
c.A::show();
c.B::show();
c.show();
return 0;
}

(2分)
我的答案:
400#500#200
题目得分
参考答案:
400#500#200
下列程序的输出结果是________。

#include
using namespace std;
class Base {
public:
Base(int a) {
x = a;
y = 2 * x;
}
int getY() {
return y;
}
protected:
int x;
private:
int y;
};
class A:public Base {
public:
A(int a):Base(a) { }
int getX() {
return x;
}
};
class B:public Base {
public:
B(int a):Base(a) { }
int getX() {
return x;
}
};
class C:public B, public A {
public:
C(int a):A(a + 30), B(a + 100) { }
};
int main() {
C c(100);
cout << c.A::getX() << “#” <<c.B::getX() << “#” << c.A::getY() << “#” << c.B::getY() << endl;
return 0;
}

(2分)
我的答案:
130#200#260#400
题目得分
参考答案:
130#200#260#400
下列程序的输出结果是________。

#include
using namespace std;
class A {
public:
A(int x = 0) {
this->x = x;
}
virtual void fun() {
cout << x << endl;
}
private:
int x;
};
class B:public A {
public:
B(int y) : A(100) {
this->y = y;
}
void fun() {
cout << y << endl;
}
private:
int y;
};
int main() {
B b(10);
A *pa = &b;
pa->fun();
return 0;
}

(2分)
我的答案:
10
题目得分
参考答案:
10
指出下面代码片段中对象obj拥有________个数据成员。

class A {
private:
int x;
};
classB:public A {
private:
int y;
};
B obj;

(2分)
我的答案:
2
题目得分
参考答案:
2、二、两
下列程序的输出结果是________。

#include
using namespace std;
class A {
public:
void fun() {
cout << “A”;
}
};
class B:public A {
public:
void fun() {
cout << “B”;
}
};
int main() {
B b;
B *pb = &b;
A *pa = &b;
pb->fun();
pa->fun();
return 0;
}

(2分)
我的答案:
BA
题目得分
参考答案:
BA
下列程序的输出结果是________。

#include
using namespace std;
class A {
public:
void setX(int x) {
this->x = x;
}
int getX() {
return x;
}
private:
int x;
};
class B:virtual public A { };
class C:virtual public A { };
class D:public B, public C { };
int main() {
D d;
d.B::setX(3);
cout << d.A::getX() << d.B::getX() << d.C::getX() <<d.getX();
d.C::setX(4);
cout << d.A::getX() << d.B::getX() << d.C::getX() <<d.getX();
d.A::setX(5);
cout<< d.A::getX() << d.B::getX() << d.C::getX() <<d.getX();
d.setX(6);
cout << d.A::getX() << d.B::getX() << d.C::getX() <<d.getX() << endl;
return 0;
}

(2分)
我的答案:
3333444455556666
题目得分
参考答案:
3333444455556666
指出下面代码片段中Derived继承了数据成员x的________个副本。

class Base {
private:
int x;
};
class Base1:public Base {
private:
int y;
};
class Base2:public Base {
private:
int z;
};
class Derived:public Base1, public Base2 {
// …
};

(2分)
我的答案:
2
题目得分
参考答案:
2、二、两
指出下面代码片段中对象obj拥有________个数据成员。

class A {
private:
int x;
protected:
int getX() const;
};
classB:public A {
private:
int y;
};
B obj;

(2分)
我的答案:
2
题目得分
参考答案:
2、二、两
指出下面代码片段中Derived继承了数据成员x的________个副本。

class Base {
private:
int x;
};
class Base1:virtual public Base {
private:
int y;
};
class Base2:virtual public Base {
private:
int z;
};
class Derived:public Base1, public Base2 {
// …
};

(2分)
我的答案:
1
题目得分
参考答案:
1、一
指出下面代码片段中对象obj拥有________个数据成员。

class A {
private:
int x;
int y;
};
class B {
private:
int a;
int b;
};
classC:public A, public B {
// …
};
C obj;

(2分)
我的答案:
4
题目得分
参考答案:
4、四

若有以下程序

#include
#include
#include
using namespace std;
void WriteStr(string fn, string str) {
ofstream outFile;
outFile.open(fn.c_str());
outFile << str;
outFile.close();
}
int main() {
WriteStr(“t.dat”,“start”);
WriteStr(“t.dat”,“end”);
return 0;
}

程序运行后,文件t.dat中的内容是( )。

(2分)
A. end
B. start
C. startend
D. endrt
我的答案:
A
题目得分 2
参考答案:
A
ifstream 类的 read 成员函数的第一个参数的类型是( )。

(2分)
A. char *
B. const char *
C. int
D. char
我的答案:
B
题目得分 0
参考答案:
A
如果要打开文件,既进行读操作,又进行写操作,应该用( )类。

(2分)
A. iostream
B. fstream
C. ifstream
D. ofstream
我的答案:
B
题目得分 2
参考答案:
B
执行以下程序,输出结果为( )。

#include
#include
using namespace std;
int main() {
ofstream outFile;
outFile.open(“source.txt”);
for(int i = 0; i < 5; ++i)
outFile << i;
outFile.close();
ifstream inFile;
int m = 0, n = 0;
inFile.open(“source.txt”);
inFile >> m >> n;
inFile.close();
cout << m << “,” << n;
return 0;
}

(2分)
A. 0,0
B. 0,1
C. 1234,1
D. 1234,0
我的答案:
D
题目得分 2
参考答案:
D
关于 istream 类的getline 成员函数,以下说法正确的是( )。

(2分)
A. getline 只能读取一整行
B. getline 会往读入的内存缓冲区里自动添加’\0’
C. 用 getline 读取一行时,换行符也会被读入内存缓冲区
D. 用 getline 读取一行时,换行符还是留在输入流中
我的答案:
B
题目得分 2
参考答案:
B
在已经包含头文件的情况下,下列文件操作的代码段在语法上正确的是( )。

(2分)
A.
int x = 0;
ifstream myfile;
myfile.open(“a”);
myfile << x;
if(myfile.eof())
cout << x << “: end of file” << endl;

B.
int x = 0;
ifstream myfile(‘a’);
myfile >> x;
if(myfile.eof())
cout << x << “: end of file” << endl;

C.
int x = 0;
ifstream myfile;
myfile.Open(“a”);
myfile >> x;
if(myfile.eof())
cout << x << “: end of file” << endl;

D.
int x = 0;
ifstream myfile(“a”);
myfile >> x;
if(myfile.eof())
cout << x << “: end of file” << endl;

我的答案:
D
题目得分 2
参考答案:
D
默认情况下,标准输出流对象“cout”直接关联的设备是( )。

(2分)
A. 打印机
B. 硬盘
C. 键盘
D. 显示器
我的答案:
D
题目得分 2
参考答案:
D
若文本文件f.txt中原有内容为:good,则运行下面程序后文件f.txt中的内容为( )。

#include
#include
using namespace std;
int main() {
ofstream outFile;
outFile.open(“f.txt”,ios::app);
outFile << “abc”;
outFile.close();
return 0;
}

(2分)
A. goodabc
B. abcd
C. abc
D. abcgood
我的答案:
A
题目得分 2
参考答案:
A
关于文件,分类正确的是( )。

(2分)
A. 普通文件和设备文件
B. 顺序文件和随机文件
C. 以上全对
D. ASCII文件和二进制文件
我的答案:
C
题目得分 2
参考答案:
C
ofstream类的改变文件写指针位置的成员函数名为( )。

(2分)
A. tellp
B. tellg
C. seekp
D. seekg
我的答案:
C
题目得分 2
参考答案:
C
二、填空题(共10小题,20分)
题型得分 18
对于下面代码段:

string filename(“hello.txt”);
ifstream inFile(filename);
std::cout << inFle.fail();

若hello.txt文件不存在,输出________。

(2分)
我的答案:
1
题目得分 2
参考答案:
1
下面代码段的作用是将字符串写入二进制文件。在________处填上恰当的成分,完成题目要求的功能。注意不需要任何空格。

string ss;
……
ofstream outFile(“file.dat”, ios::binary);
if(!outFile.is_open()) {
cout << “文件打开失败!” << endl;
exit(EXIT_FAILURE);
}
outFile.________((char *)ss.c_str(), sizeof(ss));
outFile.close();
……

(2分)
我的答案:
write
题目得分 2
参考答案:
write
下面代码段打开了一个二进制文件。在________处填上恰当的成分,完成题目要求的功能。注意不需要任何空格。

……
ifstream inFile;
……
inFile.open(“abc.bmp”,________);
……

(2分)
我的答案:
ios::binary
题目得分 2
参考答案:
ios::binary
下列程序的功能是统计并输出文件example.txt中________。

#include
#include
using namespace std;
int main() {
ifstream inFile;
inFile.open(“example.txt”);
int count = 0;
char ch;
inFile.get(ch);
while(!inFile.eof()) {
++count;
inFile.get(ch);
}
inFile.close();
cout << count << endl;
return 0;
}

(2分)
我的答案:
zi’fu’ge’shu
题目得分 0
参考答案:
字符个数、字符数
下面代码段打开一个文件。在________处填上恰当的成分,完成题目要求的功能。注意不需要任何空格。

……
ofstream outFile(“file.txt”);
if(________) {
cout<< “打开文件失败!” << endl;
exit(EXIT_FAILURE);
}
……

(2分)
我的答案:
outFile.fail()
题目得分 2
参考答案:
!outFile.is_open()、outFile.fail()、!outFile
下列程序的功能是计算并输出example.dat的文件________,以KB为单位。

#include
#include
using namespace std;
int main() {
ifstream inFile;
inFile.open(“example.dat”, ios::binary);
long size;
inFile.seekg(0L, ios::end);
size = inFile.tellg();
inFile.seekg(0L, ios::beg);
size -= inFile.tellg();
inFile.close();
cout << “size=” << size / 1024 <<“KB” << endl;
return 0;
}

(2分)
我的答案:
大小
题目得分 2
参考答案:
大小、长度
下列代码段的作用是逐行读取文本文件。在________处填上恰当的成分,完成题目要求的功能。注意不需要任何空格。

string line;
……
ifstream inFile(“file.txt”);
if(!inFile.is_open()) {
cout << “文件打开失败!” << endl;
exit(EXIT_FAILURE);
}
while(!inFile.eof()) {
________(inFile,line);
……
}
inFile.close();
……

(2分)
我的答案:
getline
题目得分 2
参考答案:
getline
以下程序的输出是________。

#include
#include
using namespace std;
int main() {
ofstream outFile;
int i = 20, j = 30;
outFile.open(“example.txt”);
outFile << i << endl;
outFile << j << endl;
outFile.close();
ifstream inFile;
int m, n;
inFile.open(“example.txt”);
inFile >> m;
inFile >> n;
inFile.close();
cout << m << “#” << n << endl;
return 0;
}

(2分)
我的答案:
20#30
题目得分 2
参考答案:
20#30
下列程序执行后,文件example.txt中内容是________。

#include
#include
#include
using namespace std;
void fun(string filename, string str) {
ofstream outFile;
outFile.open(filename.c_str());
outFile << str;
outFile.close();
}
int main() {
fun(“example.txt”, “gelivable”);
fun(“example.txt”, “awesome”);
return 0;
}

(2分)
我的答案:
awesome
题目得分 2
参考答案:
awesome
若打开文件读取其内容,则读到文件末尾时调用eof()函数,该函数返回值为________。

(2分)
我的答案:
true
题目得分 2
参考答案:
true

若已建立下面的链表结构,指针p、q分别指向图中所示结点,则不能将q所指的结点插入到链表末尾的一组语句是( )。

(2分)
A.
q->next = NULL;
p = p->next;
p->next = q;

B.
p = (*p).next;
(*q).next = (*p).next;
(*p).next = q;

C.
p = p->next;
q->next = p;
p->next = q;

D.
p = p->next;
q->next = p->next;
p->next = q;
我的答案:
C
题目得分 2
参考答案:
C
数组和链表都可以用于存储一组彼此有关联的数据,以下说法错误的是( )。

(2分)
A. 数组占用一块连续的存储区域,链表可能占用若干块不连续的存储区域
B. 数组和链表所占用的存储区域均不能在程序运行期间动态地分配
C. 数组中的数组可以随机存取或顺序存取,链表中的数据只能按顺序存取
D. 数组的长度是固定的,链表的长度是不固定的
我的答案:
B
题目得分 2
参考答案:
B
下列叙述中错误的是( )。

(2分)
A. 线性表采用链式存储,便于插入和删除操作
B. 线性表采用顺序存储,便于插入和删除操作
C. 线性表采用链式存储,不必占用一片连续的存储单元
D. 线性表采用顺序存储,必须占用一片连续的存储单元
我的答案:
A
题目得分 0
参考答案:
B
链表不具有的特点是( )。

(2分)
A. 不必事先估计所需空间
B. 所需空间与线性长度成正比
C. 插入、删除不需要移动元素
D. 可随机访问任意元素
我的答案:
D
题目得分 2
参考答案:
D
单链表中指针表示的是( )。

(2分)
A. 内存储器的地址
B. 下一元素在数组中的位置
C. 头指针的地址
D. 下一元素的地址
我的答案:
D
题目得分 2
参考答案:
D
队列操作的原则是( )。

(2分)
A. 先进先出
B. 后进先出
C. 只能进行插入
D. 只能进行删除
我的答案:
A
题目得分 2
参考答案:
A
下列关于栈的描述,错误的是( )。

(2分)
A. 栈是先进后出的线性表
B. 栈只能顺序存储
C. 栈具有记忆作用
D. 对栈的插入与删除操作中,不需要改变栈底指针
我的答案:
D
题目得分 0
参考答案:
B
在一个链表中,要把s所指的一个结点插入到p所指的一个结点后面去,正确的代码段是( )。

(2分)
A.
s->next= p;
p->next= s;

B.
s->next= p->next;
p = s;

C.
p->next= s;
s->next= p;

D.
s->next= p->next;
p->next = s;

我的答案:
D
题目得分 2
参考答案:
D
下列叙述中正确的是( )。

(2分)
A. 线性链表的数据域一般只包含一个成员数据,如data
B. 作为线性单向链表的尾结点,其指针域的值设为空指针void,表示链表的结束
C. 作为线性单向链表的尾结点,其指针域的值设为空指针NULL,表示链表的结束
D. 线性链表的长度是固定的,在访问之前就已经确定下来
我的答案:
C
题目得分 2
参考答案:
C
有以下类和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是

class node {
public:
int data;
node *next;
} *p,*q,*r;

(2分)
A.
r->next = q;
q->next =r->next;
p->next = r;

B.
q->next = r->next;
r->next = q;
p->next = r;

C.
p->next = r;
q->next = r->next;
r->next = q;

D.
q->next = r->next;
p->next = r;
r->next = q;

我的答案:
A
题目得分 2
参考答案:
A
二、填空题(共6小题,20分)
题型得分 20
以下程序的输出结果是________。

#include
#include
using namespace std;
int main() {
class Info {
public:
int data;
Info *pn;
};
Info *base, *p;
base = NULL;
for(int i = 0; i < 10; ++i) {
p = new Info;
p->data = i + 1;
p->pn = base;
base = p;
}
p = base;
while(p != NULL) {
cout << setw(2) << p->data;
p = p->pn;
}
cout << endl;
return 0;
}

(2分)
我的答案:
10 9 8 7 6 5 4 3 2 1
题目得分 2
参考答案:
10 9 8 7 6 5 4 3 2 1
以下程序的输出结果是________。

#include
using namespace std;
class Node {
public:
int num;
Node *next;
};
int main() {
Node *p, *q, *r;
int sum = 0;
p = new Node;
q= new Node;
r= new Node;
p->num = 1;
q->num = 2;
r->num = 3;
p->next = q;
q->next = r;
r->next = NULL;
sum += q->next->num;
sum += p->num;
cout << sum << endl;
return 0;
}

(2分)
我的答案:
4
题目得分 2
参考答案:
4
如下程序的功能是对链表中所有结点数据域内容求和,其中head指向一个单链表,在________处填上恰当的成分,完成题目要求的功能(如果必要,标识符间只留一个空格,不必要的不留空格)。

#include
using namespace std;
class Link {
public:
int data;
Link *next;
};
int sum(________) {
Link *p;
int s = 0;
p = head;
while§ {
s += ________;
p = ________;
}
return s;
}
int main() {
Link *head;
……
cout << sum(head) << endl;
return 0;
}

(6分)
我的答案:
Link *head,p->data,p->next
题目得分 6
参考答案:
Link *head,p->data,p->next
假设有类定义:

class Item {
int key;
Item *next;
};

函数initial的功能是要使用整数1…n顺序构造一个含有n个元素的单向链表,且链表首元素地址作为函数返回值;在________处填上恰当的成分,完成题目要求的功能(如果必要,标识符间只留一个空格,不必要的不留空格)。

Item *initial(int n) {
Item *p, *base, *q;
base = new Item;
q = base;
________ = 1;
for(int i = 2; i <= n; ++i) {
________;
p->key = i;
p->next = NULL;
q->next = p;
q = ________;
}
p = NULL;
return base;
}

(6分)
我的答案:
q->key,p=new item,q->next
题目得分 6
参考答案:
q->key、base->key,p = new Item、p=new Item,q->next
以下程序的输出结果是________。

#include
using namespace std;
class Node {
public:
int k;
Node *link;
};
int main() {
Node m[5], *p = m, *q = m + 4;
int i = 0;
while(p != q) {
p->k = ++i;
p++;
q->k = i++;
q–;
}
q->k = i;
for(i = 0; i < 5; ++i)
cout << m[i].k;
cout << endl;
return 0;
}

(2分)
我的答案:
13431
题目得分 2
参考答案:
13431
对于一组数据要求能够快速的插入和删除,又要求能反映数据进出先后的逻辑关系,应使用________数据结构。

(2分)
我的答案:
队列
题目得分 2
参考答案:
队列

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值