24.下列条件语句中的描述中,【】是正确的。
(A)if语句中至少有一个else子句
(B)if语句中可以有多个else子句
(C)if语句中的if体中可以是循环语句
(D)if语句中if体内不能是switch语句
25.下列关于switch语句描述中,【】是正确的。
(A)switch语句中default子句只能放在最后
(B)switch语句中每个语句序列中必须有break语句
(C)switch语句中case子句后面的表达式只能是整型表达式
(D)switch语句中default子句可以没有,也可以有一个
26.下列关于开关语句的描述中,错误的是【】。
(A)开关语句中,case子句的个数是不受限制的
(B)开关语句中,case子句的语句序列中一定要有break语句
(C)开关语句中,default子句可以省略
(D)开关语句中,右花括号具有退出开关语句的功能
27.下列for循环的循环体执行次数为【】。
for(inti=0,j=10;i=j=4;i++,j--)
(A)0(B)1(C)4(D)无限
28.执行语句:
for(i=1;i++<4;)后;变量i的值是【】。
(A)3(B)4(C)5(D)不定
29.下列for循环语句执行的次数是【】。
for(inti=0,x=0;!
x&&i<=5;i++)
(A)5(B)无限(C)1(D)6
30.下列for循环语句执行的次数是【】。
for(inti=2;i==0;)
(A)0(B)无限(C)1(D)2
31.执行下列语句段后,输出的字符“*”的个数是【】。
for(inti=50;i>1;--i)cout<<’*’;
(A)48(B)49(C)50(D)51
32.下列while循环语句的循环次数是【】。
while(inti=0)i--;
(A)0(B)1(C)2(D)无限
33.下列do...while循环的次数是【】。
intx=-1;
do
{x=x*x;}
while(!
x);
(A)无限(B)1(C)2(D)0
34.下列关于break语句描述中,【】是错误的。
(A)break语句可用于if语句体内,它将退出if语句
(B)break语句可用于循环体内,它将退出该重循环
(C)break语句可用于switch语句中,它将退出switch语句
(D)break语句在一个循环体内可以出现多次
35.以下叙述中正确的是【】
(A)break语句只能用于switch语句题中
(B)continue语句的作用是使程序的执行流程跳出包含它的所有循环
(C)break语句只能用在循环体内和switch语句体内
(D)在循环体内使用break语句和continue语句的作用相同
36.已知枚举类型声明语句为:
enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};
则下列说法错误的是【】。
(A)枚举常量WHITE的值为1(B)枚举常量RED的值为6
(C)枚举常量BLACK的值为10(D)枚举常量YELLOW的值为1
37.若有以下说明语句:
struct
{inta;
doubleb;
}stu;
则下面的叙述错误的是【】。
(A)struct是定义结构体类型的关键字
(B)stu是用户自定义的结构体变量
(D)a和b都是结构体成员名
(D)structstu是用户自定义的结构体类型
38.在32位PC机上使用C++语言,若有如下定义:
structdata
{inti;
doublef;
charch ;
}b ;
则结构变量b占用内存的字节数为【】。
(A)1(B)2(C)8(D)13
39.下列关于数组概念的描述中,错误的是【】。
(A)数组中所有元素类型是相同的
(B)数组定义后,它的元素个数是可以改变的
(C)数组在定义时可以被初始化,也可以不被初始化
(D)数组元素的个数与定义时的每维大小有关
40.下列关于数组下标的描述中,错误的是【】。
(A)C++语言中数组元素的下标是从0开始的
(B)数组元素下标是一个整常型表达式
(C)数组元素可以用下标来表示
(D)数组元素的某维下标值应小于该维的大小值
41.下列合法的数组初始化语句是【】。
(A)inta[5]={0,1,2,3,4,5};
(B)chara[]="string";
(C)inta[]="string"
(D)chara[]={0,1,2,3,4,5};
42.intb[][3]={{1},{3,2},{4,5,6},{0}};则b[1][2]的值为【】。
(A)0(B)6(C)2(D)3
43.下列给字符数组进行初始化中,【】是正确的。
(A)chars3[][3]={‘a’,’x’,’y’};(B)chars2[3]="xyz";
(C)chars1[]="12345abcd";(D)chars4[2[3]={"xyz","mnp"};
44.在下列对字符数组进行初始化中,【】是错误的。
(A)chars1[]=”abcd”;(B)chars2[3]=”xyz”;
(C)char*p=”hello”;(D)chars3[2][4]={“xyz”,“mnp”};
45.下面选项中等价的是【】。
(A)inta[2][3]={1,0,2,2,4,5}与inta[2][]={1,0,2,2,4,5};
(B)inta[][3]={1,0,2,2,4,5}与inta[2][3]={1,0,2,2,4,5};
(C)inta[2][3]={3,4,5}与inta[][3]={3,4,5};
(D)inta[2][3]={0,1}与inta[2][3]={{0},{1}};
46下列关于字符数组的描述中,错误的是【】。
(A)字符数组中的每一个元素都是字符
(B)字符数组可以使用初始值表进行初始化
(C)字符数组可以存放字符串
(D)字符数组就是字符串
47.下面程序的运行结果是【】。
charc[5]={'a','b','\0','c','\0'};
cout<
(A)'a''b'(B)ab(C)abc(D)以上三个答案均有错误
48.语句int*p=&k;定义了指针p,与这个语句等效的语句序列是【】。
(A)int*p;p=&k;(B)int*p;p=k;
(C)int*p;*p=&k;(D)int*p;*p=k;
49.若有以下语句:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
则b的值为【】。
(A)5(B)6(C)8(D)9
50.若有以下定义和语句,且0
inta[]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
(A)&(a+1)(B)a++(C)&p[i](D)*P
51.已知:
chars[]="abcd";输出显示字符'c'的表达式是【】。
(A)s(B)s+2
(C)s[2](D)s[3]
52.设intx[]={1,2,3,4,5,6};*p=x;则值为3的表达式是【】。
(A)p+=2,*++p(B)p+=2,*p++(C)p+=3,*p(D)p+=2,++*p
53.设inta[]={1,2,3,4,5,6};*p=a;则值为5的表达式是【】。
(A)*p+5(B)*(p+4)(C)*p+=9(D)p+5
54.已知:
intm=10;下列表示引用的方法中,【】是正确的。
(A)int&x=m;(B)int&y=10;(C)int&z;(D)float&t=&m;
55.已知:
inta(5),&ra=a;下列描述中,错误的是【】。
(A)ra是变量a的引用,即为变量的别名(B)ra的值为5
(C)改变ra的值为10,变量a值仍为5(D)ra的地址值为&a
56.关于函数的调用下面不正确的是【】。
(A)由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行。
(B)函数的调用可以在任意函数之间进行,只要有需要。
(C)一个函数可以自己调用自己。
(D)函数返回时可以不带返回值,这时函数在定义时其返回值的类型用void表示。
57.以下关于return语句的描述错误的是【】。
(A)函数可以不使用return语句。
(B)函数中可以出现多个return语句。
(C)函数中如果有返回值,就一定要有return语句。
(D)一个return语句可以返回多个值。
58.在C++中,关于函数返回值的类型是由【】。
(A)return语句中的表达式类型所决定的
(B)在定义该函数时所指定的数据类型所决定的
(C)调用该函数的主调函数类型所决定的
(D)调用该函数时系统临时决定的
59.若用数组名作为函数调用时的实参,则实际上传递给形参的是【】。
(A)数组首地址(B)数组的第一个元素值
(C)数组中全部元素的值(D)数组元素的个数
60.对数组名作函数的参数,下面描述正确的是【】。
(A)数组名作函数的参数,调用时将实参数组复制给形参数组
(B)数组名作函数的参数,主调函数和被调函数共用一段存储单元
(C)数组名作参数时,形参定义的数组长度不能省略
(D)数组名作参数,不能改变主调函数中的数据
61.一个函数功能不太复杂,但要求被频繁调用,应选用【】。
(A)内联函数(B)重载函数(C)递归函数(D)嵌套函数
62.采用函数重载的目的在于【】。
(A)实现共享(B)减少空间(C)使用方便,提高可靠性(D)提高速度
63.重载函数在调用时选择的依据中,【】是错误的。
(A)参数个数(B)参数的类型(C)参数的顺序(D)函数的类型
64.在C++中,关于下列设置参数默认值的描述正确的是【】。
(A)不允许设置参数的默认值
(B)设置参数默认值只能在定义函数时设置
(C)设置参数默认值时,应该是先设置右边的再设置左边的
(D)设置参数默认值时,应全部参数都设置
65.下列设置函数参数默认值的说明语句中,错误的是【】。
(A)intfun(intx,inty=10);(B)intfun(intx=5,int=10);
(C)intfun(intx=5,inty);(D)intfun(intx,inty=a+b);
66.已知函数f的原型是:
voidf(int*x,long&y);
则以下对函数f正确的调用语句是(其中a和b是实参)【】。
(A)f(a,b);(B)f(&a,b);(C)f(a,&b);(D)f(&a,&b);
67.若有下面的函数调用:
fun(a+b,3,max(n-1,b));则fun中的实参个数为【】个。
(A)3(B)4(C)5(D)6
68.若要定义一个只允许在本源文件中所有函数中使用的全局变量,则该变量需要使用的存储类别是【】。
(A)extern(B)register(C)static(D)auto
69.下列存储类标识符中,【 】的可见性与存在性不一致。
(A)内部静态类(B)自动类(C)外部类(D)寄存器类
70.下列存储标识符中,【】不属于局部变量。
(A)函数形参(B)自动类(C)外部静态类(D)寄存器类
71.在C++语言中,数据封装要解决的问题是【】
(A)数据的规范性(B)便于数据转换
(C)防止不同模块之间数据的非法访问(D)避免数据丢失
72.下列关于类的定义格式的描述中,错误的是【】。
(A)类中成员有3种访问权限
(B)类的定义可分说明部分和实现部分
(C)类中成员函数都是公有的,数据成员都是私有的
(D)定义类的关键字通常用class
73.有关类和对象说法不正确的是【 】
(A)对象是类的一个实例
(B)类与对象的关系和数据类型与变量的关系相似
(C)任何一个对象只能属于一个具体的类
(D)一个类只能有一个对象
74.作用域运算符的功能是【】。
(A)标识作用域的级别的(B)指出作用域的范围的
(C)给定作用域的大小的(D)标识某个成员是属于哪个类的
75.下列描述中【】不是构造函数的特征。
(A)构造函数的函数名与类名相同(B)构造函数可以重载
(C)函数可以设置默认参数 (D)函数必须指定类型说明
76.【】是析构函数的特征。
(A)一个类中只能定义一个析构函数(B)析构函数与类名不同;
(C)析构函数的定义只能在类体内(D)析构函数可以有一个或多个参数
77.下列描述中【】是析构函数的特征。
(A)析构函数可以有一个或多个参数(B)析构函数定义只能在体内
(C)析构函数与类名不同 (D)一个类中只能定义一个析构函数
78.下列关于析构函数的描述中,错误的是【】。
(A)析构函数的函数体都为空(B)析构函数是用来释放对象的
(C)析构函数是系统自动调用的(D)析构函数是不能重载的
79.下面的各种函数中,哪个不是类的成员函数【】。
(A)构造函数(B)友元函数(C)析构函数(D)复制构造函数
80.关于成员函数特征的下列述描述中,【】是错误的。
(A)成员函数一定是内联函数(B)成员函数可以重载
(C)成员函数可以设置参数的默认值(D)成员函数可以是静态的
二、程序填空题(每空2分,共20分)
1.下列程序是求100之内的能被7整除的自然数之和。
请在横线处填入适当的语句,将程序补充完整。
#include
voidmain()
{
intsum;
_
(1)_;
for(inti=1;__
(2)_;i++)
if(_(3)_)
sum+=i;
cout<}
答案:
_sum=0_i<=100_i%7==0__
2下面程序的功能是计算xn。
请在横线处填入适当的语句,将程序补充完整。
#include
voidmain()
{
intn,x;
cin>>x>>n;
doubley=1;
for(inti=1;__
(1)_;i++)
_
(2)_;
cout<}
答案:
i<=n_y=x*y
3下面程序是输出100内能被3整除且个位数是6的所有整数。
请在横线处填入适当的语句,将程序补充完整。
#include
voidmain()
{
inti,j;
for(i=0;
(1);i++)
{
j=i*10+6;
if(
(2))
continue;
else
cout<}
}
答案:
i<10j%3!
=0
4.下面程序运行后输出的结果为:
*
***
*****
*******
请在横线处填入适当的语句,将程序补充完整。
#include
#include
voidmain()
{
inti,j,k ;
for(i=1 ;i<=4 ;i++)
{
for(j=1;j<20-3*i;
(1))
cout<<”“;
for(k=1;
(2);k++)
cout<(3);
}}
答案:
j++k<2*i-1cout<5.下面程序运行后输出的结果为:
1
121
12321
1234321
请在横线处填入适当的语句,将程序补充完整。
#include
#include
voidmain()
{
inti,j,k ;
for(i=1 ;i<=4 ;i++)
{
for(j=1;j<20-3*i;j++)
cout<<”“;
for(k=1;
(1);k++)
cout<for(
(2);k>0;k--)
cout<cout<}}
答案:
k<=ik=i-1
6.以下程序将数组中的元素按逆序存放。
请在横线处填上适当的语句,将程序补充完整。
#include
voidmain()
{
inta[12],i,j,t;
for(i=0;i<12;i++)
cin>>a[i];
for(i=0;i<6;i++)
{
(1);
(2);(3);}//数组元素交换
for(i=0;i<12;i++)
cout<