2023年重点知识点总结及习题_第1页
2023年重点知识点总结及习题_第2页
2023年重点知识点总结及习题_第3页
2023年重点知识点总结及习题_第4页
2023年重点知识点总结及习题_第5页
已阅读5页,还剩46页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章基本数据类型、运算符与体现式

【习题】

一、选择题

1.下列数据类型不是C++语言基本数据类型师」是()。

(a)字符型(b)整型(c)浮点型(d)数组

2.下列字符列中,可作为C++语言程序白定义标识符是()»选择题

3.

(a)x(b)-var(c)new(d)3i

4.下列数中哪一种是8进制数()0

(a)Oxlg(b)010(c)080(d)Olb

已知a=l,b=2,c=3,则体现是++a|1b&&++c时值为()o

(a)0(b)l(c)2(d)3

下列体现式选项中,()是对的的。

(a)++(a++)(b)a++b(c)a+++b(d)a++++b

已知枚举类型定义语句为:()。

enumcolor{RED,BLUE,PINK=6,YELLOW,GREEN,PURPLE=l5};

则下列论述中错误的是()o

(a)枚举常量RED时值为1(b)枚举常量BLUEH勺值为1

(c)枚举常量YELLOW时值为1(d)枚举常量PLRPI£时值为15

二、填空题

1.C++语言标示符是以字母或一下划线开头的,由字母、数字、下划线构成。

2.在C++语言中,char型数据在内存中的存储形式是—ASCII____。

3.在内存中,存储字符'x'占用1个字节,存储字符串“x”要占用—2—个字

节。

4.符号常量可以用宏定义define和const表达。

5.转义字符序列中口勺首字符是_\_____o

6.空字符串的长度是—0。

7.体现式cout<<'\n’:还可以表达为coui〈〈endl。

三、编程题

编写一种程序,输入一•种三位数,分别输出该数的百位、十位和个位。

【参照答案】

一、选择题

1.d

2.a

3.b

4.b

5.c

6.a

7.c

二、填空题

1.下划线

2.ASCII

3.2

4.const

5.\

6.0

7.cout«endl;

8.a+ba-ba-b

9.iomanip.hiostream.h

三、编程题

1.

#include<iostream.h>

voidmain()

(

intnum,varl,var2,var3;

coutvv"请输入一种三位数:"«endl;

cin»num;

if(num>999||num<100)〃用于检查输入数据合法性

cout«”您的输入有误!”<<endl;

else

{

varl=niim/IOO;

var2=(num-varl

var3=num%l();

couivv"百位数为:"«varl«endl

<<"十位数为:"«var2«endl

<<”个位数为:"«var3«endl;

)

)

第3章C++程序的流程控制

【习题】

一、选择题

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

(a)结束本次循环(b)结束该层循环(c)结束所有循环(d)结束程

序执行

2.对if后的括号中的体现式,规定i不为0的时候体现式为真,该体现式表达对

的的为()。

(a)i(b)!i(c)i<>0(d)i=0

3.下列循环语句口勺执行次数是()。

while(!1)cout«>>ok!”;

(a)0次(b)l次(c)2次®)无多次

4.运行下列程序成果为()。

#include<iostream.h>

voidmain()

inti;

for(i=0;i<=10;i++){

if(i%2)cout«i;

elseccntinuc;

}

)

(a)246810(b)12345(c)678910(d)13579

二、填空题

I.构造化程序设计的三种基本构造是次序构造、选择构造(分支构造)、循环构造。

2.continue语句实现的作用是—跳出本次循环。。

3.若输入"china!”,运行下列程序的输出成果为。

^include<iostream.h>

^include<stdio.h>

voidmain()

{

charc;

intletters=0,digits=O,others=0;

cout«wPleaseinputa1inecharaters”<<end];

while((c二getchar())!='\n')

{

if(c>=,a&&c<=,7'11c〉='A'&&c<='Z')

letters++;

else

if(c>=0*&&c<='9')

digits++;

else

others++:

cout«*letters:*«letters«endl

<<*digits*«digits«endl

«,zothers,,«others«endl;

pleaseinputalinecharaters

letters:5

digits:4

others:2

4.本程序完毕l!+2!+……+18!的计算,请将程序补充完整.

#include<iostrcam.h>

#include<iomanip.h>

voidmain()

doub1esum=0,fac=l;

for(inti=l;i<=18;i++)

fac*=i

sum+=fac

coul〈〈“l!+2!+....+18!="

«setiosflags(ios::fixed)〈〈setprecision:0)

«sum<<setprecision(6)«endl;

编程题

1.输入某学生成绩,若成绩在90700输出"优秀",若成绩在80-89输出"

良好",若成绩在70-79输出"中",若成绩在60-69输出”及格”,若成绩在0-59

输出“不及格”。

2.输入三人数,按从小到大的大次序输出。

3.在100〜200中找出同步满足用3除余2,用5除余3和用7除余2的

所有整数。

【参照答案】

一、选择题

1..

2.a

3.a

4.d

二、填空题

1.次序构造、选择构造(分支构造)、循环构造

2.跳出本次循环。

3.

pleaseinputalinecharaters

letters:5

digits:4

others:2

4.①fac*=i;②sum+=fac;

三、编程题

1.

#include<iostream.h>

voidmain()

doublegrade;

char*degree;

cout<<”请输入学生成绩:";

cin»grade;

if(grade>100||grade<0)

(

cout<<"您的输入有误!"<<endl;

return;

)

else

if(grade>=70)

if(grade<80)

degrees"i-p";

elseif(grade<90)

degree="良好";

else

degree="优秀";

elseif(grade>=60)

degree:"及格";

else

degree="不及格,;

cout<<"分数:"<<grade«endl

«degree«endl;

)

2.

#include<iostream.h>

voidmain()

intnuml,num2,num3,num;

cout<<”请输入三个整数:

cin»numl»num2»num3;

if{numl>num2)

(

num=numl;

numl=num2;

num2=num;

}

if(numl>num3)

(

num=numl;

numl=num3;

num3=num:

)

if(num2>num3)

(

num=num2;

num2=num3;

num3=num;

)

cout<<"三个数按从小到大输出为:"<<endl

«numl«endl

«num2«endl

«num3«endl;

)

3.

#include<iostream.h>

voidmain()

cout<<"在100-200中同步满足用3除余2,用5除余3和用7除余2的整数为:"«endl;

tor(inti=100;i<=200;i++)

if(i%3==2&&i%5==3&ai%7==2)

cout«i«endl;

)

)

第4章数组

【习题】

一、选择题

1.在C++中对数组下标说法对的的是()。

(a)初始化数组的值口勺个数可以多于定义的数组元素口勺个数,多出部分将被忽视。

(b)初始化数组的值日勺个数可以少于定义的数组元素日勺个数。

(c)初始化数组的值日勺个数必须等于定义的数组元素H勺个数。

(d)初始化数组的值可以通过跳过逗号的方式来省略.如inta[3]={l,,2);

2.数组定义为:int22][2]=亿2,3,4};则/[1][0]%3为().

(a)0(b)l(c)2(d)4

4.运行下列程序成果为()。

#inc1ude<iostream.h>

voidmainO

(

inta[4]={l,2,3,4);

for(inti=3;i>=0;i—)

cout«a[i]:

(a)1234(b)1324(c)4231(d)4321

5.运行卜列程序成果为()。

#inc1ude<iostream.h>

voidmainO

(

inti,j,t,a[2][2]={8,7,6,5);

for(i=0;i<l:i++)

for(j=i+l:j<2:j++)

{

t=a[i][j];

a[i][j]=a[j][i];

)

for(i=0;i<2;i++)

(

for(j=0;j<2;j++)

cout«a[i][j];

cout«cndl;

)

)

(a)87(b)78(c)86(d)68

65657557

二、填空题

1.fnx'?数组包括M行、八列和个元素。

定义数组inta[10];,若要给该数组的第三个元素赋值100,其语句为—

a[2]=100_______«

已知数组a中的元素个数为4,下列语句口勺作用是将下标为i的元素移动到下标为i-1

的单元,其中lWiV4。a中原有数据为1,2,3,4,移动后a中元素成果为2,3,4,4。请将

卜一列程序补充完整。

#include<iostream.h>

voidmain()

inta[4]={l,2,3,4};

for(inti=0;①i<3:i++)

a[i]=(2)a[i+l];

}

2.程序填空

运行下列程序后当str是对称的时,输出“是回文”,否则输出“不是回文”,请将程

序补充完整。

#include<iostream.h>

voidmain()

(

charstr(2O);

cin.get(str,2O);〃输入字符串

inti=0,j=0;

while(str[j])①i++;

for(j--;i<j&&str[i]==str[j];i++J-);

if(②i==i)cout<<"是回文";

else

cout«"不是回文";

)

3.运行下列程序的成果为o

#include<iostream.h>

#include<iomanip.h>

voidmain()

(

intarray1[3][3]={1,2,3,4,5,6,7,8,9},array2[3][3],i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

array2[j][i]=arrayl[i][j];

for(i=0:i<3;i++)

for(j=0;j<3;j++)

cout«setw(3)«array2[i][j];

cout«endl;

)

}

147

258

369

4.运行下列程序的成果为,

#include<iostream.h>

voidmain()

(

intnum[6],i,j;

cout«"请输入1到50的六个正整数:”;

ror(i=0;i<6;i++)

cin»num[i];

for(i=0;i<6;i++)

(

for(j=l;j<=num[i];j++)

cout<<endl;

)

}

输入为:241631

**

****

*

***

*

三、编程题

1设学生人数N=8,提醒顾客输入N个人的考试成绩,然后计算出平均成绩,显示出来。

2.将一种二维数组行和列互换,然后寄存到另一种二维数组中;

【参照答案】

一、选择题

l.b

2.a

4.d

5.c

6.

二、填空题

1.mnmXn

2.a[2]=100;

3.①i<3②a[i+l]

4.®j++®i==j

5.

147

258

369

6.

**

****

*

******

***

三、编程题

解:

源程序:

*include<iostrcam.h>

★include<string.h>

★defineN8

floatgrades[N];〃寄存成绩的数组

voidmainO

(

inii;

floattotal,average;

〃提醒输入成绩

for(i=0;i<N;i++)

cout«”Entergrade#"«(i+1)«

cin»grades[i];

total=0;

for(i=0;i<N;i++)

total+=grades[i];

average=total/N;

cout«*\nAveragegrade:"«average«cndl;

#includc<iostrcam>

usingnamespacestd;

#dcfinem2

#definen3

intmain()

{

inta[m][n],b[nJ[m],ij;

coutv<”请输入一种两行三列的数

for(i=0;i<m;i++)

(

for(j=0:j<ny++)

(

cin»a[i]Lj];

cout<<“转换为三行两列值为“《endl;

for(i=0;i<n;i++)

(

fnr(j=O;j<m;j++)

{

cout«b[i][j]«endl;

)

}

system("pause");

return0;

第4章C++函数与程序构造

【内容提纲】

【习题】

一、选择题

1.下列函数定义语句对的的是()o

(a)

voidfun(intvarl)

(

intvarl=0;

cout«varl«endl;

}

(b)

voidfun(intvarl,var2)

(

cout<<varl+var2<<endl;

}

(c)

intfun(intvarl)

(

if(varl)

return1;

else

return0;

)

(d)

intfun(intvarl)

(

if(varl)

return1;

else

cout«0«cndl;

}

2.下列论述中对的的是()

(a)C++语言程序中,main。函数必须在其他函数之前,函数内可以嵌套定义函数。

(b)C++语言程序中,main。函数的位置没有限制,函数内不可以嵌套定义函数。

(c)C++语言程序中,main。函数必须在其他函数之前,函数内不可以嵌套定义函数。

(d)C++语言程序中,main。函数必须在其他函数之后,函数内可以嵌套调用函数。

3.下列对return语句论述错误的是()。

(a)在函数定义中也许有return语句,也也许没有return语句。

(b)在困数定义中nJ以有多条return谙句。

(c)在函数定义中每条return语句也许返回多种值

(d)假如函数类型不是void型,则函数定义中必须有return语句。

4.C++语言中函数返回值的类型是由()决定的。

(a)return语句中的体现式类型(b)调用该函数H勺主调函数类型

(c)定义函数时所指定的函数类型(d)以上说法都不疝的

5.C++中,有关参数默认值H勺描述对H勺的是()。

(a)只能在函数定义时设置参数默认值

(b)设置参数默认值时,应当从右向左设置

(c)设置参数默认值时,应当所有设置

(d)设置参数默认值后,调用函数不能再对参数赋值

6.使用重载函数编程序的目口勺是()。

(a)使用相似H勺函数名调用功他相似但参数不一样的函数(b)共享程序代码

⑹提高程序日勺运行速度(d)节省存储空间

7.系统在调用重载函数时.,下列不能作为确定调用哪个重载函数的根据的选项是()o

(a)函数名(b)参数个数(c)函数类型(d)参数类型

9.数组作为函数的形参,把数组名作为函数口勺实参时,传递给函数口勺是()o

(a)数组中各元素的值

(b)数组中元素的个数

(c)数组中第0个元素H勺值

(d)该数组的首地址

10.运行下列程序成果为()。

#include<iostream.h>

intf(int[][3],int,int);

voidmainO

inta[][3]={0,1,2,3,4,5,6,7,8};

cout<<f(a,3,3)«endl;

}

intf(inta[][3],introw,intcol)

(

inti,j,t=l:

for(i=0;i<row;i++)

for(j=0;j<col;j++)

[a[i][j]++;〃每个值加1

if(i==j)t*=a[i][j];

)

returnt;

)

(a)0(b)48(c)105(d)45

相称于下面矩阵的对角线相乘

123

456

789

11.运行下列程序的输出成果为()。

#includc<iostrcam.h>

intvar;

main()

(

intvar=2;

::var=0;〃访问全局变量

if(var>l)

intvar=5;

cout«var;

)

cout«var;

cout<<::var<<endl:

return0;

}

(a)20(b)000(c)520(d)500

二、填空题

1.一种C++语言程序总是从一main函数一开始执行。

3.在函数原型阐明中必须包拈的要素有函数类型(假如省略则默认为int型)、—函数名

、参数表<

4.const限定符申明只读变量。

5.若某个函数没有返回值,则该函数的类型应定义为vod类型。

6.一种函数直接或间接地调用自身,这种现象称为函数的一递归调用___。

7.在一种函数的定义或申明前加上关键字—inline则就把该函数定义为内联函数,

它重要是处理—程序的运行效率问题。

8,函数的参数传递的方式分为两类,分别是_____值传递方式和引用传递

方式。

9.在C++中,可以有多种同名而处理不一样参数类型或个数的函数,称为函数重载

12.运行下列程序的成果为—

*include<iostream.h>

voidswap(int&,int&):

voidmain()

inta=66,b=4;

cout«"a="<<a«",b=**

«b<<endl;

swap(a,b);

cout<<"a="<〈a<<",b="

«b<<endl;

}

voidswap(int&x,int&y)

(

intt=x;

x=y;

y=t;

}

a=66,b=4

a=4,b=66

13.运行下列程序的成果为—

#include〈iostream.h>

#include<iomanip.h>

voidfun(intarray[],intn);

voidmain()

(

inta[10]={l,1};

inti;

fun(a,10);

for(i=0;i<10;i++)

cout<<setw(4)<<a[i];

cout«endl;

voidfun(intarray[],intn)

inti;

for(i=2;i<n;i++)

array[i]=array[i~l]+array[i-2];

}

•11235813213455

14.运行下列程序,若输入12345则输出成果为

#include<iostream.h>

voidrev(intn)

(

intx;

cin>>x;

if(n==l)

cout«x:

else

(

rev(n-l);

cout«x;

)

}

voidmain()

(

rev(5);

}

用递归调用:54321

15.运行下列程序成果为o

#include<iostream.h>

voidfun(charPrChar=,$',intnum=10);

mainO

(

charch;

intnum;

ch=>#':

num=20;

fun(ch,num);

fun();

fun(,&');

return0;

}

voidfun(charch,intnum)

(

for(inti=0:i<num;i++)

(

cout«ch;

)

cout«/,\n*;

}

$$$$$$$$$$

&&&&&&&&&&

16.运行卜处程序成果为.

#include<iostream.h>

voidfun();

voidmain()

(

inti;

for(i=0:i<5:i++)

fun();

}

voidfun()

(

staticintm=0;MH勺值保持不变

cout<<m++;

答案:01234

三、编程题

1.编写函数将华氏温度转换为摄氏温度,公式为比并在主函数中调用。

2.编写函数运用全局变量记录数组中奇数和偶数的个数。

【参照答案】

一、选择题

1

2b

3

4

5b

6a

7.c

8.b

9.d

10.d

11.c

二、填空题

1.main函数

2.函数原型

3.函数名、参数表

4.const

5.void

6.递归调用

7.inline、程序的运行效率

8.值传递、引用传递(或地址传递)

9.重载

10.函数范围、文献范围、块范围、函数原型范围

11.static

12.

a=66,b=4

a=4,b=66

13.••«■••*•«■■■1«2.3.55

14.54321

15.

####################

$$$$$$$$$$

&&&&&&&&&&

16.01234

三、编程题

1.

#include<iostream.h>

doublettoc(double);

voidmain()

(

coukv"华氏温度"v〈104.0«"度为摄氏"v<ftoc(104.0)«"度!"«endl;

)

doubleftocfdoublef)

(

doublec;

c=(f-32)*的;

returnc;

)

2.

#include<iostream.h>

intnumo=0,nume=0;

voidsta(inta[],int);

voidmain()

(

constintN=10;

intarray[N]={0,2z3,4,5,6,7,8,10,12);

sta(array,N);

cout<<"奇数有"<<numo<<"个,"

<<"偶数有"<<nume<<"个"<<endl;

)

voidsta(inta[],intn)

(

for(inti=0;i<n;i++)

if(a[i]%2==0)

nume++;

else

numo++;

第6章指针、引用和动态空间管理

【习题】

一、选择题

要使变量i成为ini型变量x的别名,对日勺的定义语句是()。

(a)int&i=x;(b)inti=&x;(c)int&i=&x;(d)inti=x;

在下列指针体现式中,与下标访问不等效的是()。

(a)*(a+i+j)(b)(*(a+i))[j](c)*(*(a+i)+j)(d)*(a[i]+j)

1.已定义字符串charstr[5],则下列体现式中不能表达stijlW'J地址的是()0

(a)str+1(b)str++(c)&str[O]+l(d)&str[ll

已知:inta[]={l,2,3,4,5,6},*p=a,x;下面语句中x的值为5H勺是()。

(a)p+=3;x=*(p++);(b)p+=5;x=*p++;(c)p+=4;x=*++p;(d)p+=4;x=*p++

若有阐明:intij=6,*p;p=&i;则与i=j等价日勺语句是()。

⑶i=*p;(b)*p=*&j;(c)i=&j;(d)i=**p;

设pl和p2是指向同一种int型一维数组的指针变量,k为int型变量,则不能对的执行的语

句是()0

(a)k=*pl+*p2;(b)p2=k:(c)pl=p2;(d)k=*pl*(*p2);

2.下面函数口勺功能是()»

intfun(char*x)

(

char*y=x;

while(*y++){};〃执行到结尾,即指针指到字符串的尾部

returny-x-1;

)

(a)求字符串的长度(b)求字符串寄存位置

(c)比较两个字符串口勺大小(①将字符串x连接到字符串y背而

执行如下程序段后,m的值为()。

in(a[2JL3J={{l,2,3},{4,X6)};

intm,*p=&a[O][O];

m=(*p)*(*(p+2))*(*(p+4));〃第13,5个元素的乘积

(a)15(b)14(c)13(d)12

设有如下定义,下面有关pir对的论述是()。

int(*ptr)();

(a)ptr是指向一维数组的指针变量。

(b)ptr是指向int型数据日勺指针变量。

3.(c)plr是指向函数的指针.该函数返回一种ini型数据。

4.(d)ptr是一种函数名,该函数的返回值是指向int型数据的指针。

若有如下语句:

int**pp,*p,a=10,b=20;

pp=&p;

p=&a:

p=&b;

cout«*p«,,,,,«**pp«cndl;

则输出成果是()。

(a)10,20(b)10.10(c)20,10(d)20,20

二、填空题

I.运行下列程序成果为10„

#include<iostream.h>

voidmain()

{inta[3]={10,15,20);

int*pl=a,*p2=&a[ll;//*P2=15

*pl=*(p2-l)+5;//*P1=I5

*(pl+l)=*pl-5;〃A⑴=10

cout«a[ll«endl:

)

运行卜列程序成果为max=15,疝n=5,请将程序补充完整。

#include<iostream.h>

constmtN=IO;

voidmax_min(intarr(],int*ptl,int*pt2,intn)

{

inti;

*ptl=*pt2=arr[O];

for(i=l;i<n;i++)

(

if(arr[il>*ptl)①_叩11=arr[i];

if(arr[i]<*pt2)②*p(2=arr[i]

)

return;

)

voidmain()

(

voidmax_min(intarr||.int*ptl,int*pl2,inln);

intarray[N]={1,8,10,2,-5,0,7,15,4,-5);

int*ptl,*pt2,a,b;

p(l=&a;

pt2=&b;

max_min((3)aiTay,pti,pt2,N);

cout«"max="«a«".min="«b«"\n";

)

三、编程题

【参照答案】

一、选择题

1.a

2.a

3.b

4.d

5.b

6.b

8.a

9.c

10.d

二、填空题

I.10

2.(D*pll=arr[i],(2)*pL2-air[i],<3)array,pll,pl2,N

3..MONT.NO.MARCH

4.123

321

321

第8章类和对象的创立

【习题】

一、选择题

I.下列各项中不能用于申明类的组员访问控制权限H勺关键字是()。

(a)private(b)protected(c)public(d)sta(ic

2.下列有关构造函数H勺说法错误的是()。

⑶构造函数的名字必须与类H勺名字相似。

(b)构造函数可以定义为void类型。

(c)构造函数可以.重载、可以带有默认参数。

(d)构造困数nJ以由顾客自定义也nJ以由系统自动生成。

3.有如下类申明:

classstudent

(

intage;

char*namc;

);

则student类的组员age是()。

(a)公有数据组员(b)私有数据组员(c)保护数据组员(d)私有组员函数

4.有如下类定义

#include<iostrcam.h>

classpoint

(

intx,y;

public:

point():x(0),y(0){}

point(intxl,intyI=0):x(xl),y(y){}

};

若执行语句

pointa(2),b[3],*c;

则point类的构造函数被调用的次数是()。

(a)2次(b)3次(c)4次(d)5次

5.在下列哪种状况下不会调用拷贝构造函数()。

(a)用一种对象去初始化本类H勺另一种对象时。

(b)函数的形参是类的对象,在进行形参和实参的结合时。

(c)函数的返回值是类的对象,函数执行完返回时。

(d)将类的一种对象赋值给另一种本类的对象时。

(a)6.下列有关友元的描述错误的是()0

(b)友元美系是单向的且不可传递

(c)在友元函数中可以通过ihis指针直接引用对象的私有组员。

(d)友元可以是一种一般函数也可以是-•种类。

(c)通过友兀nJ以实目前类的外部对类H勺私有组员的访问。

7.有如下程序

#includc<ios(rcam>

usingnamespacestd;

classAA{

intn;

public:

AA(intk):n(k){}

intget(){returnn;}

intget()const(returnn+l;}

};

intmain()

(

AAa(5);

constAAb(6);

cout«a.gct()«b.gct();

return0;

}

运行该程序成果为()o

(a)56(b)57(c)67(d)66

8.有如下程序:

#include<iostream.h>

classTest{

public:

Test(){n+=2;)

-Test(){n-=3;}

staticintgetNum(){returnn;}

private:

staticintn;

};

intTcst::n=1;

intmain()

Test*p=newTest;

deletep;

cout«"n="«Test::getNum()«endl;

return0;

I

执行后口勺输出成果是()。

(a)n=0(b)n=l(c)n=2(d)n=3

9.下列程序的运行成果为()0

#include<iostream.h>

classA

(

public:

staticintnum;

A&fun()

(

nuni++;

return*this;

}

};

intA::num=0;

voidg(A&a)

(

cout«a.fun().num«endl;

)

voidmain()

(

Aal;

g(al);

)

(a)0(b)l(c)2(d)3

10.运行下列程序成果为。

#include<iostream>

#include<iomamp>

usingnamespacesld:

classMyClass{

public:

MyClass(){cout«'A';)

MyClass(charc){cout«c;[

~MyClass(){cout«B;}

intmain(){

MyClasspl,*p2;

p2=newMyClass('X');

deletep2;

return0;

}

执行这个程序幕上将显示输出______。

(a)ABX(b)ABXB(c)AXB(d)AXBB

二、填空题

1.类的组员包括—数据组员和组员一函数___。

2.释放对象所占的内存空间尹完毕善后处理工作的是析构函数。

3.拷贝构造函数以本类对象的引用作为参数。

4.用指向对象的指针引用对线组员使用操作符―->。

5.当一种对象生成后来,系统就为这个对象定义了一种this指针它指向这个对

象的地址。

6.在类中申明静态组员的关键字是—statico

7.非组员函数应申明为类的—友元______函数才能访问这个类的privaic组员。

8.C++建立和初始化对象的过程由___类的构造函数__________完毕。

9.对于常量数据组员和引用数据组员的初始化只能通过____组员初始化列表

来完毕。

10.在类中阐明的具有类类型R勺组员称为对象组员0

11.下列为类的定义语句,与否有错,若有错请改正。

classcircle.....................................①

(

doubler=3;.................................②

public:............................................③

circle(doublei)-----------------------------@

{

r=i;....................................⑤

)

doublearea。;〃面积....................⑥

doubleprm();〃周长--------------------⑦

voidprintarea(double);---------------------⑧

voidprintprm(double);.....................

}---------------------------------------⑩

〃组员函数的实现

12.下列程序输出成果为0.1.请将程序补充完整。

#include<iostream.h>

classA{

intnum;

public:

A():nuin(0)()

voidset(intnum)

{①____A::num=num}〃给AIfj数据组员num赋值

intget()

{②___returnnum:获得数据组员numl内值

intmain()

Aa;

cout«a.get()«,\,\

a.sct(l);

cout«a.get()«endl;

return0;

)

13.下列程序输出:2,33.4,tom。请将程序补充完整。

#include<iostream.h>

#include<string.h>

classA

I

inti;

floatj;

charc[20];

public:

A(intx,floaty,charch|]):i(x),j(y)

(

①一strcpy(c,ch);〃初始化组员c赋值

)

voidprintA()

{

②coui«i«","«j«","«c«endl;//输出三个私有数据组员

)

I;

voidmain()

(

Aa(2,33.4,"tom");

a.printA();

}

14.下列程序的输出成果为

Objectid=0

Objectid=l

请将程序补充完整。

#include<iostrcam.h>

classPoint

public:

Point(intxx=O,intyy=O){X=xx;Y=yy;coun(P++;}

Point(){countP—;}

in(GetX(){returnX;}

intGetY(){returnY:}

staticvoidGetC(){cout«"Objectid="«countP«endi;}

private;

intX,Y;

staticinicountP;

I;

intPoint::countP=0;________________〃静态数据组员H勺初始化

intmain()

{

Point..GclC(),

PointA(4,5);

A.GetC();

return0;

|

15.插入排序算法口勺重要思想是:每次从未排序序列中取出一种数据,插入到已排序序列中

的对H勺位置,InserlSori类H勺组员函数son。实现了插入排序算法,请将画线处缺失日勺部分补

充完整。

#include<iostrcam.h>

classInsertSort{

public:

InsertSori(int*aOJnin0):a(a0),n(n0){}//a是数组首地址,n是数组元素个数

voidsort()

{〃此函数假设已排序序列初始化状态只包括a[OJ,未排序序列初始为批1]…

tbr(inti=l;i<n;++i)

(

intj,t;

fdr(;j>O;-j)

if(t>a[j-l])break;

aU]=aU-U;

a(j]=t;

}

protected.

ini*am:〃指针a用于寄存数组首地址,n用于寄存数组元素个数

};

三、编程题

1.自定义一种正方体类,它具有私有组员X,表达正方体的每个面的正方形的边长。提供构造

函数以及计算正方体的体积和表面积口勺公有组员函数,并编制主函数,对正方体类进行使用:

阐明正方体类对象,输入棱长,计算其体积和表面积并显示成果。

2.设计一种时间类Time,包括3个数据组员,时(hour)、分(minute)>秒(second),以及

组员函数用于设置和读取时、分、秒,并按上午、下午各12小时或按24小时输出时间。

【参照答案】

一、选择题

1.d

2.b

3.b

4.c

5.d

6.b

7.b

8.a

9.b

10.d

二、填空题

I.数据、函数

2.析构

3.本类对象的引用

4.->

5.this指针

6.static

7.友元

8.类的构造函数

9.组员初始化列表

10.对象组员

11.@@改正如下:

②doubler;

⑩末尾加分号。

12.®A::num=num;©returnnum:

13.

①strcpy(c,ch);

@cout«i«,,,"«j«";,«c«endl;

14.intPoint::countP=0;

15.j=i,t=a[i]

三、编程题

1.参照程序如下:

#include<iostream.h>

#include<malh.h>

classcube

{

doublex;

public:

cube(doublexx)

x=xx;

doublevolume();

doublesarca();

);

doublecube::volume()

(

icturnpow(x,3),

}

doublecube::sarea()

{

returnpow(x,2)*6;

)

voidmain()

(

doublea;

cout«"请输入棱长:

cin»a;

cubec(a);

coutw”该正方体的体积为:"«c.volume()«endl

vv”该正方体的表面积为:"«c.sarea()«endl;

I

2.参照程序如下:

#include<iostream.h>

classTime

{

inthour;

intminute;

intsecond;

public:

intscthour(int);

intsetminute(int);

intsetsecond(int);

intgethourO;

intgctminutcO;

intgetsecond();

voidshow12();

voidshow24();

};

intTimc;.scthoui(inth)

{

if(h>=24||h<0)

return0;

else

{

hour=h;

return1;

)

}

intTime::setminute(inlm)

{

if(m>=60||m<0)

return0;

else

(

niinute=m;

return1;

)

)

in(Timc::sctsccond(in(s)

{

if(s>=60||s<0)

return0;

else

second=s;

return1;

)

)

in(Time::gethour(){returnhour;}

intTime::getminute(){returnminute;}

intTime::getsecond(){returnsecond;}

voidTime::showl2()

{

if(hour==12)

cout«hour«":"«minute«":"«second«"AM"«endl;

else

cout«hour%12«":",<<minute«":"«second

«((hour<12&&hour>=0)?"AM":"PM")«endl:

)

voidTimc::show24()

{

cout«hoiir«":"«minute«":"«second«endl;

I

voidmain()

(

inth,m,s;

cin»h»m»s;

Timet;

if(t.sethour(h)==0||t.setminJte(in)==0||t.setsecond(s)==0)

(

cout<<"输入时间错误!

return;

t.show!2();

(.show24();

【习题】

一、选择题

I.在私有继承H勺状况下,容许派生类直接访

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论