C++复习题.docx

上传人:b****6 文档编号:3646070 上传时间:2022-11-24 格式:DOCX 页数:69 大小:68.43KB
下载 相关 举报
C++复习题.docx_第1页
第1页 / 共69页
C++复习题.docx_第2页
第2页 / 共69页
C++复习题.docx_第3页
第3页 / 共69页
C++复习题.docx_第4页
第4页 / 共69页
C++复习题.docx_第5页
第5页 / 共69页
点击查看更多>>
下载资源
资源描述

C++复习题.docx

《C++复习题.docx》由会员分享,可在线阅读,更多相关《C++复习题.docx(69页珍藏版)》请在冰豆网上搜索。

C++复习题.docx

C++复习题

C++复习题

 

目录

Ⅰ基础部分2

Ⅱ面向对象部分2

一、选择题2

二、填空题2

三、阅读程序题2

四、改错题2

五、完善程序题2

六、编程题2

Ⅰ基础部分

1.在以下选项中,能用做用户自定义标识符的是。

A.sizeofB.for+whileC.DoubleD.do

2.若a1、a2、a3和a4均为整型变量,则以下选项中符合C++语法规则的表达式________。

A.a1=25%3.3B.a2=a1+a3=3*5C.a3=078D.a4=OXa2

3.若有“doublea[3][4];”,则sizeof(a)的值是________。

A.7B.12C.48D.96

4.下列数组定义中错误的是。

A.inta1[2]={1};B.inta2[][2]={{1},{2}};

C.inta3[3];D.inta4[][3];

5.以下选项中不能作为用户自定义标识符的是。

A.a_bcB.a+bcC._time_D.Name

6.设有以下语句序列:

intx;cin>>x;

floatz,y[x]={1,2,3,4,5,6,7,8};//A

z=y[3];//B

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

A.z的值为4B.z的值为3C.B行语句错D.A行语句错

7.有关函数重载的正确说法是(24)。

A.函数名不同,但参数的个数和类型相同

B.函数名相同,但参数的个数不同或参数的类型不同

C.函数名相同,参数的个数和类型也相同

D.函数名相同,函数的返回值不同,而与函数的参数和类型无关

8.数组作为函数的形参时,把数组名作为实参,传递给函数的是。

A.该数组的首地址B.该数组的元素个数

C.该数组中的各元素值D.该数组的大小

9.以下程序的输出结果是(6)。

#include

voidf(int&a,int&b){intt=a;a=b;b=t;}

voidmain(void)

{intx=100,y=200;f(x,y);cout<

10.设有说明语句“inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int*p=&a[0][0];”,能够正确表示数组元素a[2][2]的表达式是(22)。

A.p[2][2]B.–(*(p+2)+2)C.*(p+10)D.*(p+8)

12.在循环语句的循环体中使用break语句的作用是(23)。

A.结束本次循环B.结束该层的循环C.结束开关语句D.结束程序执行

13.设有说明语句“intA[4][3]={{1,2},{3,4,5},{6,7,8},{9,10}};”,则A[0][2]和A[2][2]的初始化值分别为(24)。

A.0、7B.3、8C.3、7D.0、8

14.以下语句的输出结果是(25)。

charc1=100,c2=100;cout<<(c1*c2);

A.越界(出错)B.10000C.负值D.一个字符

15.循环语句for(<表达式1>;<表达式2>;<表达式3>)<语句>中,<语句>的执行情况是(29)。

A.至少执行一次B.至少执行两次

C.可能执行,也可能不执行D.不执行

16.以下程序的输出结果是(16)。

#include

voidp(int*,int*){int*=a;a=b;b=t;}

voidmain(void)

{intx=100,y=200;p(&x,&y);cout<

17.以下程序的输出结果是s=(7),k=(8)。

#include

voidmain(void)

{intj,k,s,m;

for(k=1;k<7;k++){

s=1;mk+2;

for(j=k;j

}

cout<<"s="<

}

18.以下程序输出结果的第一行是(9),第二行是(10)。

#include

voidf(int*s,intn1,intn2)

{intt;

while(n1

t=*(s+n1);*(s+n1)=*(s+n2);*(s+n2)=t;

n1++;n2––;

}

}

voidmain(void)

{inta[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;

f(p,0,3);f(p+3,1,6);

for(i=0;i<10;i++){if(i%5==0)cout<<"\n";cout<

}

19.以下程序输出结果的第一行是(14),第二行是(15),第三行是(16)。

#include

voidshow(char*s)

{if(*s){show(s+1);cout<<*s;}

voidmain(void)

{show("abcd\nefg\nhij");cout<<'\n';}

20.以下程序输出结果的第一行是(17),第二行是(18)。

#include

intk;

voidmain(void)

{k=10;

for(inti=0;i<5;i++){

intk;k=i+1;

cout<

}

cout<<'\n'<

}

21.设有说明“intx=10,y=4,f;floatm;”,执行表达式“f=m=x/y”后,则f、m的值分别为(23)。

A、2、2.5B.3、2,5C.2.5、2.5D.2、2.0

22.设有三个语句“ints=100;intss[s];cin>>ss;”,则编译认为(24)。

A.仅第二个语句“intss[s];”错B.仅第三个语句“cin>>ss;”错

C.第一个语句正确,后两个语句错D.三个语句都正确,没有语法错

23.设有函数定义“intf1(void){return100,200;}”,设用函数f1()时,(25)。

A.函数返回值100

B.函数返回两个值100和200

C.函数返回值200

D.语句“return100,200;”语法错,不能调用函数

24.静态整型变量有确定的初值,其缺省的初值是

(2)。

25.设有语句“intm;floatx,y;y=m=x=7.99;”,则y的值是(3)。

26.以下程序输出的第一行是(6),第二行是(7)。

#include

voidf(int*a,intb){intt=*a;*a=b;b=t;}

voidmain(void)

{intx=10,y=20;cout<

cout<

}

27.以下程序输出的第一行是(8),第二行是(9)。

#include

voidmain(void)

{intx=6;

do{x-=2;

cout<

}while(––x)

}

28.以下程序输出的第一行是(10),第二行是(11)。

#include

intf(intx)

{staticintu=1;

x+=x,returnu*=x;

}

voidmain(void)

{intx=10;

cout<

}

29.以下程序输出的第一行是(12),第二行是(13),第三行是(14)。

#include

voidp(chars[],inti)

{if(s[i]!

=0)p1(s,i+1);

cout<

}

voidp2(chars[],inti)

{cout<

if(s[i]!

=0)p2(s,i+1);

}

voidmain(void)

{charstr[]="123";

cout<

p1(str,0);cout<<'\n';

p2(str,0);cout<<'\n';

}

30.下面程序的功能是:

从键盘上输入若干个整数,按升序排序后输出。

#include

voidsort(inta[],intn)

{for(inti=0;(19);i++)

for(intj=i+1;j

if((20)){intt=a[i];a[i]=a[j]=t;}

}

voidInput(int*p,intn)

{cout<<"输入"<

\n";

for(inti=0;i>(21);

}

voidOutput(int*p,intn)

{for(inti=0;i

voidmain(void)

{intx[200],intnum;

cout<<"输入要排序数的个数(小于200):

";

cin>>num;

Input(x,num);sort(x,num);Output(x,num);

}

31.系统约定C++源程序文件名的缺少的扩展名为(21)。

A.cppB.c++aC.bccD.vcc

32.设有语句“intk=7,x=12;”,则能使值为3的表达式是(22)。

A.x%=(k%=5)B.x%=(k–k%5)

C.x%=k–k/5D.(x%=k)–(k%=5)

33.实型变量x的取值范围为闭区间[–2,10]或开区间(15,34),则正确表示x取值范围的逻辑表达式是(23)。

A.–2<=x<=10||15

B.(–2<=x&&x<=10)||(15

C.–2<=x<=10&&15

D.(–2<=x&&x<=10)&&(15

34.设有语句“voidf(inta[10],int&x);inty[10],*py=y,n;”,则对函数f的正确调用语句是(25)。

A.f(py[10],n);B.f(py,n);C.f(*py,&n);D.f(py,&n);

35.设有语句“for(inti=5,sum=0;i<10;sum++,i++)sum+=i;”,则for()语句的执行情况是(29)。

A.循环0次B.循环4次C.循环5次D.循环6次

36.设有语句“intx[4][3]={3,4,5,6,7,8,9,10,11,12};”,则x[3][0]的初值是(3)。

37.以下程序输出的第一行是(6),第二行是(7)。

#include

voids(inta,int&b){intt=a;a=b;b=t;}

voidmain(void)

{intx=500,y=1000;

cout<

}

38.以下程序输出的结果是a=(8),b=(9)。

#include

voidmain(vid)

{for(inta=1,b=1;a<=5;a++)

{if(b>=8)break;

if(b%2==1){b+=7;continue;}

b-=3;

}

cout<<"a="<

}

39.以下程序输出的第一行是(10),第二行是(11)。

#include

intx=100;

voidmain(void)

{intx=200;

x+=∷x;

{intx=500;∷x+=x;

cout<

}

40.以下程序输出的第二行是(12),第三行是(13),第四行是(14)。

#include

intf(inti)

{if(i==1)return1;

returni*f(i–1);

}

voidmain(void)

{intsum=0,t;

for(intj=1;j<=4;j++)

{t=f(j);sum+=t;cout<

}

41.设有说明“intx[]={1,2,3,4,5},*p=x;”,输出值不是5(数组x的元素个数)的是(23)。

A.cout<

B.cout<

C.cout<

D.cout<

(1)<<'\n';

42.循环语句“for(intx=0,y=0;y!

=100||x<10);x++;”,执行的循环次数是(24)。

A.无限次B.10C.11D.100

43.下列数组定义中错误的是(25)。

A.chars1['a'];B.chars2[6]="string";

C.staticinta[4]={1};D.char*p[]={"A","B","C"};

44.若有说明“char*S[]={"1234","5678","9012","3456","74890"};”则表达式*S[1]>*S[3]比较的是(28)。

A."1234"和"9012B.'5'和'3'

C.'1'和'9'D."5678"和"3456"

45.以下程序输出的第一行是(6),第二行是(7)。

#include

floatf(floatsum,floatx[],intn)

{for(inti=0;i

returnsum/n;

}

voidmain(void)

{floatx[]={2,4,6,8},sum=0,y;

y=f(sum,x,4);

cout<<"sum="<

}

46.能下程序输出的第一行是(8),第二行是(9)。

#include

voidmain(void)

{inty=122,a[8];

for(inti=0;y;i++){a[i]=y%8;y=y/8;}

for(intj=i–1;j>=0;j––)cout<

cout<

}

47.以下程序输出的第一行是(10),第二行是(11)。

#include

intf(void)

{staticinta,b=10,c=1;

a+=b;b+=c;returnc=a+b;

}

voidmain(void)

{cout<

48.以下程序输出的第一行、第三行、第五行分别是(12)、(13)、(14)。

#include

voidfun(int*p,inti)

{cout<

if(i<7)fun(p,i+2)

}

voidmain(void)

{inta[10]={10,2,5,14,15,8,11,8,19};

fun(a,0);

}

49.在数学式

中,变量x和y的取值为整数,而变量a和b的取值为实数,在C++程序中对应的正确表达式是(21)。

A.3/5*x*y/a/bB.3*x*y/5/a/b

C.3*x*y/5*a*bD.3/a/b/5*x*y

50.以下程序输出的第一行是(6),第二行是(7)。

#include

float*f(float*P,floatx[],intn)

{floatsum=0;

for(inti=0;i

p=∑x[n]=sum;

returnx+n;

}

voidmain(void)

{floatx[]={1,2,5,7,0},s=0,*p1,*p2=&s;

p1=f(p2,x,4)

cout<<"*p1="<<*p1<<'\n';

cout<<"*p2="<<*p2<<'\n';

}

51.以下程序输出的第一行是(8),第二行是(9)。

#include

voidmain(void)

{inty=290,b[10];

for(inti=0;y;i++){b[i]=y%16;y=y/16;}

for(intj=0;j

cout<

cout<<"y="<

}

52.以下程序输出的第一行是(10),第三行是(11)。

{staticintj=1;

returnj*=n;

}

voidmain(void)

{for(intk=1;k<=4;k++)

cout<

}

53.以下程序输出的第一行是(12),第二行是(13),第三行是(14)。

#include

voidf(inti)

{if(i>0){

cout<,i%10;

if(i>9)f(i/10);

}

elseif(i<0){

if(i<=-1)f(i/10);

cout<<(-i)%10;

}

elsecout<

}

voidmain(void)

{f(125);cout<<'\n';

f(-234)lcout<<'\n';

f(0);cout<<'\n';

}

Ⅱ面向对象部分

一、选择题

二、填空题

三、阅读程序题

四、改错题

五、完善程序题

五、编程题

一、选择题

1.下列说明有关构造函数的正确说法是。

A.任一类必定有构造函数B.类可以没有构造函数

C.构造函数不能重载D.任一类必定有缺省的构造函数

[答案]A:

当没有定义构造函数的时候,系统自动生成缺省的构造函数,所以B错;构造函数可以带参数,因而可以重载,所以C错;当用户显式的定义构造函数后,系统就不再给出缺省的构造函数,所以D错。

2.对于对象的说法不正确的是(D)。

A.对象是类的对象,类是对象的类,没有脱离类的对象

B.对象可以处理本对象内部的数据,也可接受其他对象传送来的信息,对象与对象的信息传送是通过公用接口来进行的

C.对象对信息的处理是自主性的,不需要外来事物的干涉

D.对象只有接受信息才能被激话,因此对象的行为是被动的

3.对于类的私有成员、公有成员不正确的是(D)。

A.私有成员只对内,不对外

B.公有成员也叫接口,是与外部联系的通道

C.私有成员主要对数据成员而言,当然有些成员函数也是私有的

D.类的私有成员、公有成员只是相对而言,可以随时改变的

4.关于类的继承的特性,不正确的是(C)。

A.子类对父类具有数据和程序代码的共享特征

B.子类与父类间有所差别

C.会增加代码的冗余

D.类间具有层次结构

5.下列不正确的是(C)。

A.对象必须先说明后使用,其说明的一般形式是:

“类名对象名;”

B.类的说明是不分配内存空间的,只在程序运行时对对象分配空间

C.同一类的不同对象,占有不同的内存空间

D.同类不同对象的成员函数占有相同的内存空间,对象中存储的是这些共享代码在内存中的地址

6.派生类的对象对它的基类成员中A是可以访问的。

A.公有继承的公有成员B.公有继承的私有成员

C.公有继承的保护成员D.私有继承的公有成员

7.假设person是一个类,p1是该类的一个对象,p2是一个指向pl的指针,getname()是其中的一个函数,则下面对象的使用不正确的是(A)。

A.person.getname();B.p1.getname();

C.p1.person:

:

getname();D.p2->getname();

8.对于基类中的private成员,其在公有派生类中的访问权限为。

A.不可访问B.privateC.protectedD.public

9.假定AB为一个类的类名,则该类的拷贝构造函数的函数原型是________。

A.AB&(ABx)B.AB(ABx)C.AB(AB&x)D.AB(AB*x)

10.下面有关类的构造函数与析构函数的叙述正确的是________。

A.同一个类的析构函数只能有一个B.同一个类的构造函数只能有一个

C.同一个类的析构函数可定义多个D.类的构造函数名可任意定义

12.若通过类的成员函数和友元函数所实现的运算符重载得功能是一样的,下列说法正确的是。

A.这两种函数的参数相同,函数体实现的过程不同

B.编译器对这两种函数编译时所作的解释相同

C.这两种函数都带有this指针

D.友元函数比成员函数多一个参数

13.以下选项中错误的是。

A.派生类可以继承多个基类

B.可以有多个派

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1