}
A)inti=17intir=0B)inti=0intir=17
C)inti=17intir=17D)程序语法错误,没有输出结果
34.对定义重载函数的下列要求中,D是错误的。
A)要求参数的个数不同B)要求参数中至少有一个类型不同
C)要求参数个数相同时,参数类型不同D)要求函数的返回值不同
35.下面函数调用语句中实参的个数是A。
xxx((v1,v2),(v3,v4,v5),v6);
A)3B)4C)5D)6
36.系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是D。
A)参数个数B)参数的类型C)函数名称D)函数的类型
37.若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是D。
A)externB)registerC)autoD)static
38.在C++中,关于下列设置参数默认值的描述中,正确的是C。
A)不允许设置设置参数的默认值
B)设置参数默认值只能在定义函数时设置
C)设置参数默认值时,应该事先设置右边的再设置左边的
D)设置参数默认值时,应该全部参数都设置
39.若有下面函数调用语句:
fun(a+b,(x,y),fun(n+k,d,(a+b)));
在此函数调用语句中实参的个数是A。
A)3B)4C)5D)6
40.下列对重载函数的描述中,A是错误的。
A)重载函数中不允许使用默认参数
B)重载函数中编译时根据参数表进行选择
C)不要使用重载函数来描述毫无相干的函数
D)构造函数重载将会给初始化带来多种方式
41.在函数声明时,下列D项是不必要的。
A)函数的类型B)函数参数类型C)函数的名字D)返回值表达式
42.在函数的返回值类型与返回值表达式的类型的描述中,错误的是B。
A)函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的
B)函数返回值的类型就是返回值表达式的类型
C)函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型
D)函数返回值类型确定了返回值表达式的类型
43.下面变量和函数说明:
#include
charch='*';
voidsub(intx,inty,charch,double*z)
{
switch(ch)
{
case'+':
*z=x+y;break;
case'-':
*z=x-y;break;
case'*':
*z=x*y;break;
case'/':
*z=x/y;break;
}
}
下面合法的函数调用语句是B。
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);
44.下列程序的输出结果是B。
#include
voidsub1(chara,charb)
{charc;
c=a;a=b;b=c;
}
voidsub2(char*a,charb)
{
charc;
c=*a;*a=b;b=c;
}
voidsub3(char*a,char*b)
{
charc;
c=*a;*a=*b;*b=c;
}
voidmain()
{
chara,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)ABABABB)ABBBBAC)ABBABAD)ABABBA
45.下面程序的正确执行结果为D。
#include
intf(int);
voidmain()
{
inta=2,i;
for(i=0;i<3;i++)
cout<cout<}
intf(inta)
{
intb=0;
staticintc=3;
b++;
c++;
return(a+b+c);
}
A)777B)71013C)7911D)789
46.下面程序的正确执行结果为C。
#include
voidfun(char**m)
{
m++;
cout<<*m<}
voidmain()
{
staticchar*a[]={"MORNING","AFTERNOON","EVENING"};
char**n;
n=a;
fun(n);
}
A)为空B)MORNINGC)AFTERNOOND)EVENING
47.下面程序的输出结果B。
#include
intfun(char*s)
{
char*p=s;
while(*p!
='\0')
p++;
return(p-s);
}
voidmain()
{
cout<}
A)3B)6C)8D)0
48.当一个函数无返回值时,函数的类型应定义为A。
A)voidB)任意C)intD)无
49.下面叙述中不正确的是D。
A)在函数中,通过return语句传回函数值
B)在函数中,可以有多条return语句
C)主函数名main()后面的一对圆括号中也可以带有形参
D)调用函数必须在一条独立的语句中完成
50.下列D的调用方式是引用调用。
A)形参是指针,实参是地址值B)形参和实参都是变量
C)形参是数组,实参是变量D)形参是引用,实参是变量
51.在C++中,函数原型不能标识D。
A)函数的返回类型B)函数参数的个数C)函数参数类型D)函数的功能
52.下列标识符中,C是文件级作用域的。
A)函数形参B)语句标号C)外部静态类标识符D)自动类标识符
53.在传值调用中,要求C。
A)形参和实参类型任意,个数相等B)实参和形参类型都完全一致,个数相等
C)实参和形参对应的类型一致,个数相等D)实参和形参对应的类型一致个数任意
54.有一个int型变量,在程序中频繁使用,最好定义它为A。
A)registerB)autoC)externD)static
55.考虑下面的函数原型:
voidtestDefaulParam(inta,intb=7,charz='*');
下面函数调用中不合法的C。
A)testDefaulParam(5);B)testDefaulParam(5,8);
C)testDefaulParam(5,'#');D)testDefaulParam(0,0,'*');
56.采用函数重载的目的在于D。
A)实现共享B)减少空间C)提高速度D)使用方便,提高可靠性
57.要求通过函数来实现一种不太复杂的功能,并且要加快执行速度,选
用A。
A)内联函数B)重载函数C)递归函数D)嵌套函数
58.下面程序的输出结果是D。
#include
voidfun(inti);
intmain()
{
intn=2;
fun(n);
return0;
}
voidfun(inti)
{
staticintx=1;
inty=1;
if(i>0)
{
++x;
++y;
cout<fun(i-1);
}
}
A)语法错误,不能输出正确结果B)2222C)2233D)2232
59.下面程序的输出结果为B。
#include
voidprt(int*x,int*y,int*z)
{
cout<<++*x<<","<<++*y<<","<<*(z++)<}
inta=10;
intc=20;
intb=40;
voidmain()
{
prt(&a,&b,&c);
prt(&a,&b,&c);
}
A)11,42,3112,21,41B)11,41,2012,42,20
C)11,21,4011,21,41D)11,41,2112,42,22
60.下面程序的正确运行结果为C。
#include
fun(inta,intb)
{
staticintm=1,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
voidmain()
{
intk=5,m=2,p;
p=fun(k,m);
cout<
p=fun(k,m);
cout<
}
A)11,22B)12,23C)11,23D)10,23
61.下面程序的输出结果是D。
#include
voidfun(int*s,int*y)
{
staticintt=3;
*y=s[t];
t--;
}
voidmain()
{
inta[]={1,2,3,4};
inti,x=10;
for(i=0;i<4;i++)
{
fun(a,&x);
cout<}
cout<}
A)1,2,3,4B)0,0,0,0C)4,4,4,4D)4,3,2,1
62.下面程序的输出结果是A。
#include
intfun(char*s)
{
char*p=s;
while(*p!
='\0')
p++;
return(p-s);
}
voidmain()
{
cout<}
A)20B)6C)19D)0
63.下面程序的输出结果是C。
#include
intx=10;
voidfun(intc);
voidmain()
{
fun(x);
cout<<"x="<}
voidfun(intx)
{
x=1;
}
A)x=0B)x=1C)x=10D)语法错误,不能输出正确结果
64.下面程序的执行结果是B。
#include
voidmain()
{
voidswap();
externinta,b;
a=3;
b=10;
swap();
cout<<"a="<}
inta,b;
voidswap()
{
inttemp;
temp=a;
a=b;
b=temp;
}
A)a=3,b=10B)a=10,b=3C)a=temp,b=tempD)语法错误,不能输出正确结果
65.下列程序的输出结果是A。
#include
voidf()
{
staticinti=15;
i++;
cout<<"i="<
}
voidmain()
{
for(intk=0;k<2;k++)
f();
}
A)i=16i=17B)i=16i=15C)i=15i=16D)i=15i=17
66.在横线处填上适当的语句C,使下面程序执行结果是13,18,23。
#include
intadd(intx,inty=8);
voidmain()
{
;
cout<cout<cout<}
intadd(inta,intb)
{
ints=a+b;
returns;
}
A)inta=3B)intb=3C)inta=5D)intb=5
67.在横线处填上适当的语句A,使下面的程序的执行结果是1924303745。
#include
intfun(inta)
{
staticintx=10;
inty=1;
x+=a;
a++;
y++;
return(x+y+a);
}
voidmain()
{
inti=3;
while(i<8)
;
cout<}
A)cout<C)cout<68.在C++语言中,局部变量的隐含存储类型是D。
A)autoB)staticC)externD)无存储类型
69.下面程序的输出结果为D。
#include
intfun(char*s);
intmain()
{
cout<return0;
}
intfun(char*s)
{
char*t=s;
while(*t!
='\0')
t++;
return(t-s);
}
A)语法错,不能输出正确结果B)0C)6D)5
第三章一、选择题
1.有关类的说法不正确的是D。
A)类是一种用户自定义的数据类型.
B)只有类中的成员函数才能存取类中的私有成员.
C)在类中,如果不做特别说明,所指的数据均为私有类型.
D)在类中,如果不做特别说明,所指的成员函数均为公有类型。
2.类A是类B的友元,类B是类C的友元,则____D______是正确的.
A)类B是类A的友元B)类C是类A的友元
C)类A是类C的友元D)以上都不对
3.有下面类的说明,有错误的语句是____A______。
classX
{
A)inta=2;
B)X();
public:
C)X(intval):
D)~X();
};
4.有关析构函数的说法不正确的是_____B_____。
A)析构函数有且仅有一个
B)析构函数和构造函数一样可以有形参
C)析构函数的功能是用来释放一个对象
D)析构函数无任何函数类型
5.已知一个类X,_____C_____是定义指向类X成员函数的指针,假设类有3个公有成员:
voidf1(int),voidf2(int)和inta.
A)X*PB)intX:
:
*pc=&X:
:
aC)void(X:
:
*pa)()D)X*p[10]
6.下列的各类函数中,____C______不是类的成员函数
A)构造函数B)析构函数C)