选择题.docx
《选择题.docx》由会员分享,可在线阅读,更多相关《选择题.docx(12页珍藏版)》请在冰点文库上搜索。
1. 以下能正确定义一维数组的选项是()。
A.inta[5]={0,1,2,3,4,5};
B.chara={′A′,′B′,′C′};
C.inta[5]="0123";
D.chara[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};
2. 若有定义语句:
inta[10];则下列对a中数组元素正确引用的是()。
A.a[10/2–5] B.a[10] C.a[4.5] D.a
(1)
3. 能对一维数组正确初始化的语句是()。
A.inta[6]={6*1} B.inta[6]={1,,,3} C.inta[6]={} D.inta[6]=(0,0,0)
4. 对以下说明语句的正确理解是()
inta[10]={6,7,8,9,10};
A.将5个初值依次赋给a[1]至a[5]
B.将5个初值依次赋给a[0]至a[4]
C.将5个初值依次赋给a[6]至a[10]
D.因为数组长度与初值的个数不相同,所以此语句不正确。
5. 下列能正确定义一维数组a的语句是()
A.inta(10); B.intn=10,a[n]; C.intn;scanf("%d",&n);inta[n]; D.#definen10inta[n];
6. 设array为一个数组,则表达式sizeof(array)/sizeof(array[0])的结果为()。
A.array数组首地址 B.array数组中元素个数
C.array数组中每个元素所占的字节数 D.array数组占的总字节数
7. 下列给一维数组定义及赋初值时,正确的是()。
A.inta[];cin>>a;
B.inta[4];cin>>a[4];
C.inta[1];cin>>a[0]>>a[1];
D.inta[]={0};
8. 在下面的一维数组定义中,()有语法错误。
A.inta[]={1,2,3}; B.inta[10]={0}; C.inta[]; D.inta[5];
9.若有以下说明,则数值为4的表达式是()。
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc='a',d,g;
A.a[g-c] B.a[4] C.a['d'-'c'] D.a['d'-c]
10. 在C语言中,下面关于数组的描述正确的是()。
A.数组的大小是固定的,但可以有不同类型的数组元素
B.数组的大小是可变的,但所有数组元素的类型必须相同
C.数组的大小是固定的,所有数组元素的类型必须相同
D.数组的大小是可变的,可以有不同的类型的数组元素
11. 一个函数功能不太复杂,但要求被频繁调用,选用____。
A.内联函数 B.重载函数 C.递归函数 D.嵌套函数
12. 下列带缺省值参数的函数说明中,正确的说明是 。
A.intFun(intx,inty=2,intz=3);
B.intFun(intx=1,inty,intz=3);
C.intFun(intx,inty=2,intz);
D.intFun(intx=1,inty,intz);
13. 在C++中函数原型不能标识:
____。
A.函数的返回类型 B.函数的参数个数 C.函数的功能 D.函数参数类型
14. 下面有关重载函数的说法中正确的是____。
A.重载函数必须具有不同的返回值类型;
B.重载函数形参个数必须不同;
C.重载函数必须有不同的形参列表
D.重载函数名可以不同;
15. 以下程序有语法性错误,有关错误原因的正确说法是:
main()
{intG=5,k;
voidprt_char();
……
k=prt_char(G);
……
}
A.语句voidprt_char();有错,它是函数调用语句,不能用void说明
B.变量名不能使用大写字母
C.函数说明和函数调用语句之间有矛盾
D.函数名不能使用下划线
16. 下列选项中,()具有文件作用域。
A.函数形参 B.局部变量 C.全局变量 D.静态变量
17. 正确的函数原型形式为()。
A.voidfun(void); B.doublefun(intx;inty); C.intfun(int=0,int); D.doublefun(intx,y)
18. 下面叙述中错误的是()。
A.调用函数必须在一条独立的语句中完成
B.一个函数中可以有多条return语句
C.函数中通过return语句传递函数值
D.主函数名main也可以带有形参
19. 在函数的返回值类型与返回值表达式类型的描述中,错误的是()。
A.函数返回值的类型是在定义函数时确定的,在函数调用时不能改变
B.函数返回值得类型就是返回值表达式的类型
C.函数返回值的类型与返回值表达式类型不同时,函数表达式类型应该转换成返回值类型
D.函数返回值的类型决定了返回值表达式的类型
20. 必须用一对大括号括起来的程序段是()。
A.switch语句中的case标号语句 B.if语句的分支
C.循环语句的循环体 D.函数的函数体
21. 语句int*p();的含义是____。
A.p是一个函数,该函数返回指针。
B.p是指针变量,指向一个整型数据。
C.p是一个指向一维数组的指针变量。
D.p是数组,数组的元素是指针。
22. 设intx[]={1,2,3,4,5,6},*p=x;则值为4的表达式是____。
A.p+=2,*++p B.p+=2,*p++ C.p+=4,*p D.p+=3,++*p
23. 以下选项中,不能正确赋值的是()
A.chars[]=“china”;
B.chars[10];s1[]=“china”;
C.char*s=“china”;
D.char*s[4]=“china\n”;
24. 已知:
inta[6],*p=a;则下列不能表示a[1]地址的表达式是()
A.p+1 B.++p C.a+1 D.a++
25.在整型指针变量p1、p2的定义中,错误的是()。
A.intx,*p1,p2; B.int*p1,x,*p2; C.intx,*p1=&x,*p2; D.int*p1,x,*p2=&x;
26. 若有intk=1,a[10]={10,20,30,40};
int*p1=a,*p2=&a[2];
则下列不能正确执行的语句是()。
A.k=*p1+*p2; B.p2=k; C.p1=p2; D.k=p2-p1;
27. 若有int*p[3];
则以下表述中正确的是()。
A.p是一个指向有3个元素的整型数组的指针
B.p是一个指向int型变量的指针
C.p是一个有3个元素的指针数组,每个元素是一个int型指针
D.p是一个数组,该数组的元素是指针p所指向的变量
28. 设有语句intarray[3][4];,则在下面几种引用下标为i和j的数组元素的方法中,不正确的引用方式是()。
A.array[i][j] B.*(*(array+i)+j) C.*(array[i]+j) D.*(array+i*4+j)
29. 若有以下说明和语句,请选出哪个是对c数组元素的正确引用()
intc[4][5],(*cp)[5];
cp=c;
A.cp+1 B.*(cp+3) C.*(cp+1)+3 D.*(*cp+2)
30. 设已有定义:
char*st=“howareyou”;下列程序段中正确的是()
A.chara[11];strcpy(++a,st);
B.chara[11],*p;strcpy(p=a+1,&st[4]);
C.chara[11];strcpy(a,st);
D.chara[],*p;strcpy(p=&a[1],st+2);
31. 以下程序的运行结果是()
point(char*p){p+=3;}
intmain()
{charb[4]={‘a’,‘b’,‘c’,‘d’},*p=b;
point(p);
cout<<*p<return0;
}
A.a B.b C.c D.d
32. 阅读下面程序,执行后的结果为()
#include
usingnamespacestd;
voidfun(int*a,int*b)
{intk=5;
*a=k;*b=*a+k;
}
intmain()
{int*a,*b,x=10,y=15;
a=&x;b=&y;
fun(a,b);
cout<<*a<<”,”<<*b<return0;
}
A.10,15 B.5,15 C.5,10 D.15,10
33.
下面程序段的运行结果是()。
charstr[]="ABC",*p=str;
printf("%d\n",*(p+3));
A.67 B.0 C.字符′C′的地址 D.字符′C′
34. 有如下程序段
int*p,a=10,b=1;
p=&a;a=*p+b;
执行该程序段后,a的值为()。
A.编译出错 B.12 C.11 D.10
35. 若有“floata=1.5,b=3.5,*pa=&a;*pa*=3;pa=&b;”,则正确的是()
A.pa的值是1.5 B.*pa的值是4.5 C.*pa的值是3.5 D.pa的值是3.5
36. 设有以下说明语句
typedefstruct
{intn;
charch[8];
}PER;
则下面叙述中正确的是()。
A.PER是结构体变量名 B.PER是结构体类型名 C.typedefstruct是结构体类型 D.struct是结构体类型
37. 设有以下说明语句
structstu
{inta;
floatb;
}stutype;
则下面的叙述不正确的是()。
A.struct是结构体类型的关键字
B.structstu是用户定义的结构体类型
C.stutype是用户定义的结构体类型名
D.a和b都是结构体成员名
38. 阅读下面程序,输出结果是()
#include
voidmain()
{
uniondata{
inti;
charch;
floatf;
}a;
a.f=101;
a.i=101;
printf("%c%.1f\n",a.ch,a.f);
}
A.101101.0 B.e101.0 C.e不确定的值 D.不确定的值不确定的值
39. 若有以下声明语句,则下列错误的引用是()。
structworker
{intno;
charname[20];
}w,*p=&w;
A.w.no B.p->no C.(*p).no D.*p.no
40. 以下结构类型可用来构造链表的是()。
A.structaa{inta;int*b;};
B.structbb{inta;bb*b;};
C.structcc{int*a;ccb;};
D.structdd{int*a;aab;};
41. 有如下定义
structperson{charname[9];intage;};
structpersonclass[10]={“Johu”,17,
“Paul”,19
“Mary”,18,
“Adam16,};
根据上述定义,能输出字母M的语句是()。
A.cout<B.cout<C.cout<D.cout<42. 设有如下定义
structss
{charname[10];
intage;
charsex;
}std[3],*p=std;
下面各输入语句中错误的是()。
A.cin>>&(*p).age;
B.cin>>&std.name;
C.cin>>&std[0].sex;
D.cin>>&(p->sex);
43. 下面关于结构体概念的叙述中,正确的说法是()。
A.相同类型数据的集合称为结构体
B.不同类型数据的集合称为结构体
C.数据的集合称为结构体
D.整数的集合称为结构体
44. C++语言结构体类型变量在程序执行期间()。
A.所有成员一直驻留在内存中 B.只有一个成员主留在内存中 C.部分成员驻留在内存中 D.没有成员驻留在内存中
45. 在说明一个结构体变量时系统分配给它的存储空间是()。
A.该结构体中第一个成员所需存储空间
B.该结构体中最后一个成员所需存储空间
C.该结构体中占用最大存储空间的成员所需存储空间
D.该结构体中所有成员所需存储空间的总和
46. 类的实例化是指()。
A.定义类 B.创建类的对象 C.指明具体类 D.调用类的成员
47. 下面描述中,不正确的是()。
A.构造函数定义了创建对象的方法,提供了初始化对象的一种简便手段。
B.析构函数完成对象被删除前的一些清理工作。
C.如果程序中未声明构造函数,则系统自动产生出一个缺省形式的构造函数。
D.析构函数允许重载,但析构函数不得返回任何值,即使关键字void也不允许有。
48. 以下哪项表明displayBreed()函数是Animal类的成员函数()。
A.Animal:
:
displayBreed() B.Animal.displayBreed()
C.displayBreed():
:
Animal D.displayBreed()&&Animal
49. 下列语句中,错误的是。
A.constintbuffer=256;
B.constinttemp;
C.constdouble*point;
D.double*constpt=newdouble(5.5);
50. 下列关于类和对象的叙述中,错误的是。
A.一个类只能有一个对象
B.对象是类的具体实例
C.类是某一类对象的抽象
D.类和对象的关系就像数据类型和变量的关系
51. 有以下类声明:
classMyClass{intnum;};
则MyClass类的成员num是。
A.公有数据成员 B.公有成员函数 C.私有数据成员 D.私有成员函数
52. 有以下程序:
classTest
{
private:
inta; //数据成员
public:
Test(){cout<<"无参构造函数"< Test(inta){cout< Test(constTest©):
a(copy.a) //复制构造函数
{cout<<\"复制构造函数"<<"";}
~Test(){cout<<"析构函数"<<"";} //析构函数
};
intmain() //主函数main()
{
Testa(3); //定义对象
return0; //返回值0,返回操作系统
}
运行时的输出结果是。
A.3 B.无参构造函数析构函数 C.复制构造函数析构函数 D.3析构函数
53. 下列关于构造函数的描述中,错误的是
A.构造函数名与类名相同 B.构造函数可以有返回值
C.构造函数可以重载 D.构造函数在对象生成时自动调用
54. 若MyClass是一个类名,且有如下语句序列
MyClassc1,*c2;
MyClass*c3=newMyClass;
MyClass&c4=c1;
上面的语句序列所定义的类对象的个数是
A.1 B.2 C.3 D.4
55. 要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是
A.MyClassp=MyClass; B.MyClassp=newMyClass;
C.MyClass&p=newMyClass; D.MyClassa,&p=a;
56. 有以下程序:
classA
{
public:
A(){cout<<"A";} //构造函数
};
classB:
publicA
{
public:
B(){cout<<"B";} //构造函数
};
intmain(void) //主函数main()
{
Bobj; //定义对象
cout<
return0; //返回值0,返回操作系统
}
执行后的输出结果是。
A.AB B.BA C.A D.B
57. 有以下程序:
classA
{
public:
~A(){cout<<"A";} //析构函数
};
classB:
publicA
{
public:
~B(){cout<<"B";} //析构函数
};
intmain() //主函数main()
{
B*p=newB; //定义指针
deletep; //释放动态空间
cout< return0; //返回值0,返回操作系统
}
执行后的输出结果是。
A.AB B.BA C.A D.B
58. 有以下程序:
classA
{
public:
A(){cout<<"A";} //无参构造函数
A(charc){cout<};
classB:
publicA
{
public:
B(charc){cout<};
intmain() //主函数main()
{
Bobj('B'); //定义对象
cout< return0; //返回值0,返回操作系统
}
执行这个程序,屏幕上将显示输出。
A.B B.BA C.AB D.BB
59. 下列关于派生类构造函数和析构函数的说法中,错误的是。
A.派生类的构造函数会隐含调用基类的构造函数
B.如果基类中有默认构造函数(无参构造函数),那么派生类可以不定义构造函数
C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
60. 如果派生类以protected方式继承基类,则原基类的protected成员和public成员在派生类的访问权限分别是。
A.public和public B.public和protected C.protected和public D.protected和protected
61. 派生类的成员函数不能访问基类的。
A.公有成员和保护成员 B.公有成员 C.私有成员 D.保护成员
62. 有以下程序:
classA
{
public:
A(intx=0){cout<};
classB:
publicA
{
public:
B(intx=0){cout<};
intmain() //主函数main()
{
Bobj
(1); //定义对象
cout< return0; //返回值0,返回操作系统
}
程序的输出结果是。
A.0 B.1 C.01 D.001
63. 下列对派生类的描述中,错误的是()。
A.一个派生类可以作为另一个派生类的基类
B.派生类至少有一个基类
C.派生类的缺省继承方式是private