41. 下列正确的选项是( )。
A、继承是创建一个具有别的类的属性和行为的新类的能力
B、C语言支持面向对象的程序设计
C、空白符是一种可以被编译的符号
D、标示符不宜过长,一般设定为16个字符
答案:A
解析:C 空白符被忽略掉
D 标识符具体支持的长度根据编译器的不同而不同
42. 下列关于C++语言的发展说法错误的是( )。
A、C++语言起源于C语言
B、C++语言最初被称为“带类的C”
C、在1980年C++被命名
D、在1983年C++被命名
答案:C
43. 下面说法错误的选项是( )。
A、引用表达式是一个左值表达式,因此它可以出现在形参和实参的任何一方
B、若一个函数返回了引用,那么该函数的调用也可以被赋值
C、所有函数都可以返回引用
D、引用返回值时,不生成值的副本
答案:C
解析:比如析构函数
44. 下列表示引用的方法中,( )是正确的。
已知:int k=1000;
A、int &x=k; B、char &y; C、int &z=1000; D、float &t=&k;
答案:A
解析:B声明引用时必须赋值
C非const引用不能用常量赋值
D 类型不同
45. 下列程序的执行结果为( )。
#include<iostream.h>
void mian()
{
int n=10;
int* pn=&n;
int* &rn=pn;
(*pn)++;
cout<<"n="<<n<<endl;
(*rn)++;
cout<<”n=”<<n<<endl;
}
A、 n=11 n=12
B、 n=11 n=11
C、 n=10 n=11
D、 n=11 n=10
答案:A
解析:(*pn)++ 相当于 n++ ,所以n的值被修改为11
接下来,同理,(*rn)++ 相当于再一次的n++,所以n的值被修改为12
46. 下列引用的定义中,( )是错误的。
A、int i; int &j=i;
B、int i; int &j; j=i;
C、float i; float &j=i;
D、char d; char &k=d;
答案:B
解析:引用被声明时必须初始化
47. ( )是给对象取了一个别名,他引入了对象的同义词。
A、指针
B、引用
C、枚举
D、结构
答案:B
48. 下列表示引用的方法中,( )是正确的。
已知:int m=10;
A、int &x=m;
B、int &y=10;
C、int &z;
D、float &t=&m;
答案:A
解析:同样是对引用的考察
49. 下面程序的运行结果是( )。
#include<iostream.h>
void fun(int &a,int &b)
{
int p;
p=a;
a=b;
b=p;
}
void exchange(int &a,int &b,int &c)
{
if(a<b)fun(a,b);
if(a<c)fun(a,c);
if(b<c)fun(b,c);
}
void main()
{
int a,b,c;
a=12;
b=639;
c=78;
exchange(a,b,c);
cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl;
}
A、a=639,b=78,c=12
B、a=12,b=639,c=78
C、a=639,b=12,c=78
D、a=78,b=12,c=639
答案:A
解析:fun()函数交换传入的两个参数的值
exchange()函数把传入的参数按照从大到小的顺序排列
50. 下面的程序输出结果为( )。
#include<iostream.h>
void main()
{
int *ir;
int i;
ir=&i;
i=17;
cout<<"int i="<<i<<endl;
cout<<"int ir="<<*ir<<endl;
}
A、int i=17 int ir=0
B、int i=0 int ir=17
C、int i=17 int ir=17
D、程序语法错误,没有输出结果
答案:C
解析:对指针的简单考察
51. 对定义重载函数的下列要求中,( )是错误的。
A、要求参数的个数不同
B、要求参数中至少有一个类型不同
C、要求参数个数相同时,参数类型不同
D、要求函数的返回值不同
答案:D
解析:重载规则:
1)必须在同一作用域中
2)基于形参表不同而构成重载。
3)基于指针(或引用)形参是否为const也可以构成重载
4)在类中,基于成员函数是否为const可以构成重载(成员函数的const就是把隐含
的this指针const了)
52. 下面函数调用语句中实参的个数是()。
xxx((v1,v2),(v3,v4,v5),v6);
A、3 B、4 C、5 D、6
答案:A
解析:括号操作符
53. 系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据
的是( )。
A、参数个数 B、参数的类型 C、函数名称 D、函数的类型
答案:D
54. 若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()
A、extern B、register C、auto D、static
答案:D
55. 在C++中,关于下列设置参数默认值的描述中,正确的是()
A、不允许设置设置参数的默认值
B、设置参数默认值只能在定义函数时设置
C、设置参数默认值时,应该实现设置右边的再设置左边的
D、设置参数默认值时,应该全部参数都设置
答案:C
56. 若有下面函数调用语句:
fun(a+b,(x,y),fun(n+k,d,(a+b)));
在此函数调用语句中实参的个数是( )。
A、3 B、4 C、5 D、6
答案:A
57. 下列对重载函数的描述中,( )是错误的。
A、重载函数中不允许使用默认参数
B、重载函数中编译时根据参数表进行选择
C、不要使用重载函数来描述毫无相干的函数
D、构造函数重载将会给初始化带来多种方式
答案:A
58. 在函数声明时,下列( )项是不必要的。
A、函数的类型 B、函数参数类型 C、函数的名字 D、返回值表达式
答案:D
59. 在函数的返回值类型与返回值表达式的类型的描述中,错误的是()。
A、函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的
B、函数返回值的类型就是返回值表达式的类型
C、函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型
D、函数返回值类型确定了返回值表达式的类型
答案:B
解析:可隐式转换的类型
60. 下面变量和函数说明:
#include<iostream.h>
char ch='*';
void sub(int x,int y,char ch,double *z)
{
switch(ch)
{
case '+':*z=x+y;break;
case '-':*z=x-y;break;
case '*':*z=x*y;break;
case '/':*z=x/y;break;
}
}
下面合法的函数调用语句是( ) 。
A、sub(10,20,ch,y);
B、sub(1.2+3.2,'+',&z);
C、sub(sub(1,2,'+',&y),sub(3,4,'+',&x),'-',&y);
D)sub(a,b,&x,ch);
答案:B
解析:A,最后一个参数应该传指针
C 前两个参数是函数的返回值,sub函数的返回值是void
D 参数错乱
61. 下列程序的输出结果是( )。
#include<iostream.h>
void sub1(char a,char b)
{
char c;
c=a;
a=b;
b=c;
}
void sub2(char *a,char b)
{
char c;
c=*a;
*a=b;
b=c;
}
void sub3(char *a,char *b)
{
char c;
c=*a;
*a=*b;
*b=c;
}
void main()
{
char a,b;
a='A';
b='B';
sub1(a,b);
putchar(A);
putchar(b);
a='A';
b='B';
sub2(&a,b);
putchar(a);
putchar(b);
a='A';
b='B';
sub3(&a,&b);
putchar(a);
putchar(b);
putchar('\n');
}
A、ABABAB B、ABBBBA C、ABBABA D、ABABBA
答案:B
解析:考察指针值传递和地址传递问题
62. 下面程序的正确执行结果为。
#include<iostream.h>
int f(int);
void main()
{
int a=2,i;
for(i=0;i<3;i++)
cout<<f(A)<<" ";
cout<<endl;
}
int f(int A)
{
int b=0;
static int c=3;
b++;
c++;
return (a+b+c);
}
A、7 7 7 B、7 10 13 C、7 9 11 D、7 8 9
答案:D
解析:static的变量的声明周期问题,生命周期一直到程序结束
63. 下面程序的正确执行结果为( )。
#include<iostream.h>
void fun(char **m)
{
m++;
cout<<*m<<endl;
}
void main()
{
static char *a[]={"MORNING","AFTERNOON","EVENING"};
char **n;
n=a;
fun(n);
}
A、为空 B、MORNING C、AFTERNOON D、EVENING
答案:C
解析:m++相当于a+1,指向数组的下一个元素
64. 下面程序的输出结果( )。
#i nclude<iostream.h>
int fun(char *s)
{
char *p=s;
while(*p!='\0')
p++;
return (p-s);
}
void main()
{
cout<<fun("ABCDEF")<<endl;
}
A、3 B、6 C、8 D、0
答案:B
解析:函数fun的作用是:传入一个带有’\0’的字符串,然后获取字符个数
65. 当一个函数无返回值时,函数的类型应定义为( )。
A、void B、任意 C、int D、无
答案:A
66. 下面叙述中不正确的是( )。
A、在函数中,通过return语句传回函数值
B、在函数中,可以有多条return语句
C、主函数名main()后面的一对圆括号中也可以带有形参
D、调用函数必须在一条独立的语句中完成
答案:D
解析:可以在任意地方完成函数调用
67. 下列( )的调用方式是引用调用。
A、形参是指针,实参是地址值
B、形参和实参都是变量
C、形参是数组,实参是变量
D、形参是引用,实参是变量
答案:D
解析:函数参数是引用时,传递类型相同的实参时,相当于给实参起了一个别名
68. 在C++中,函数原型不能标识( )。
A、函数的返回类型
B、函数参数的个数
C、函数参数类型
D、函数的功能
答案:D
解析:函数可以先声明,不实现
69. 下列标识符中,( )是文件级作用域的。
A、函数形参
B、语句标号
C、外部静态类标识符
D、自动类标识符
答案:C
70. 在传值调用中,要求( )。
A、形参和实参类型任意,个数相等
B、实参和形参类型都完全一致,个数相等
C、实参和形参对应的类型一致,个数相等
D、实参和形参对应的类型一致个数任意
答案:C
71. 有一个int型变量,在程序中频繁使用,最好定义它为( )。
A、register B、auto C、extern D、static
答案:A
72. 考虑下面的函数原型:void testDefaulParam(int a,int b=7,char z='*');
下面函数调用中不合法的( )。
A、testDefaulParam(5);
B、testDefaulParam(5,8);
C、testDefaulParam(5,'#');
D、testDefaulParam(0,0,'*');
答案:C
解析:因为有默认参数,所以调用testDefaulParam函数时只需要传递一个实参就可以了。如果传递
了更多的参数,仍然需要遵守参数传递原则。
73. 采用函数重载的目的在于。
A、实现共享 B、减少空间 C、提高速度 D、使用方便,提高可靠性
答案:D
74. 要求通过函数来实现一种不太复杂的功能,并且要加快执行速度,选用()。
A、内联函数 B、重载函数 C、递归函数 D、嵌套函数
答案:A
解析:注意内联函数所实现的功能应该尽量简单,太复杂的功能不适合用内联函数
75. 下面程序的输出结果是( )。
#i nclude<iostream.h>
void fun(int i);
int main()
{
int n=2;
fun(n);
return 0;
}
void fun(int i)
{
static int x=1;
int y=1;
if(i>0)
{
++x;
++y;
cout<<x<<' '<<y<<' ';
fun(i-1);
}
}
A、语法错误,不能输出正确结果
B、2 2 2 2
C、2 2 3 3
D、2 2 3 2
答案:D
解析:static变量的生命周期
76. 下面程序的输出结果为( )。
#i nclude<iostream.h>
void prt(int *x,int *y,int *z)
{
cout<< ++*x << "," << ++*y << "," << *(z++) << endl;
}
int a=10;
int c=20;
int b=40;
void main()
{
prt(&a,&b,&c);
prt(&a,&b,&c);
}
A、11,42,31 12,21,41 B)11,41,20 12,42,20
C、11,21,40 11,21,41 D、11,41,21 12,42,22
答案:B
解析:每一次输出都是先自加1后再输出
77. 下面程序的正确运行结果为( )。
#include<iostream.h>
fun(int a,int B)
{
static int m=1,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
void main()
{
int k=5,m=2,p;
p=fun(k,m);
cout<<p<<",";
p=fun(k,m);
cout<<p<<endl;
}
A、11,22 B、12,23 C、11,23 D、10,23
答案:C
解析:static变量的生命周期问题
78. 下面程序的输出结果是( )。
#include<iostream.h>
void fun(int *s,int *y)
{
static int t=3;
*y=s[t];
t--;
}
void main()
{
int a[]={1,2,3,4};
int i,x=10;
for(i=0;i<4;i++)
{
fun(a,&x);
cout<<x<<",";
}
cout<<endl;
}
A、1,2,3,4 B、0,0,0,0 C、4,4,4,4 D、4,3,2,1
答案:D
解析:static变量的生命周期问题。
79. 下面程序的输出结果是( )。
#include<iostream.h>
int fun(char *s)
{
char *p=s;
while(*p!='\0')
p++;
return (p-s);
}
void main()
{
cout<<fun("ABCDEFGHIJKLMNIPQRST")<<endl;
}
A、20 B、6 C、19 D、0
答案:A
解析:函数fun的作用时,传入一个带有’\0’的字符串,然后获取字符个数
80. 下面程序的输出结果是( )。
#i nclude<iostream.h>
int x=10;
void fun(int c);
void main()
{
fun(x);
cout<<"x="<<x<<endl;
}
void fun(int x)
{
x=1;
}
A、x=0 B、x=1 C、x=10 D、语法错误,不能输出正确结果
答案:C
解析:值传递不会修改传入的实参的值