广州电大-期末c++综合复习答案_第1页
广州电大-期末c++综合复习答案_第2页
广州电大-期末c++综合复习答案_第3页
广州电大-期末c++综合复习答案_第4页
广州电大-期末c++综合复习答案_第5页
已阅读5页,还剩18页未读, 继续免费阅读

下载本文档

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

文档简介

C++语言程序设计复习课一、第一章单项选择题

1.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为()。答案:A

A.mainB.MAINC.nameD.function

2.C++源程序文件的缺省扩展名为()。答案:A

A.cppB.exeC.objD.lik

3.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。答案:D

A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车

4.C++程序的根本模块为〔〕。答案:D

A.表达式B.标识符C.语句D.函数

5.每个C++程序文件的编译错误分为〔〕类。答案:B//warningerror

A.1B.2C.3D.4二、第一章填空题

1.C++语言是在_________语言的根底上开展起来的。答案:C

2.C++语言中的每条根本语句以________作为结束符。答案:;〔或分号〕

3.C++语言中的每条复合语句以________作为结束符。答案:}〔或右花括号〕

4.在C++每个程序行的后面或单独一行的开始使用注释的标记符为__________。答案://

5.单行或多行注释的开始标记符为__________、结束标记符为__________。答案:/*、*/

6.在一个C++程序文件中,假设要包含另外一个头文件或程序文件,那么应使用以__________标识符开始的预处理命令。#include

7.C++程序中的所有预处理命令均以______字符开头。#

8.在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是________定义的头文件。用户〔或编程者〕9.一个函数定义由________和________两局部组成。答案:函数头、函数体

10.用于输出表达式值的标准输出流对象是________,用于从键盘上为变量输入值的标准输入流对象是________。答案:cout、cin

11.当不需要函数返回任何值时,那么应使用________标识符定义函数类型。答案:void三、第二章单项选择题

1.设x和y均为bool量,那么x&&y为真的条件是()。答案:A

A.它们均为真B.其中一个为真

C.它们均为假D.其中一个为假

2.设x和y均为bool量,那么x||y为假的条件是()。C

A.它们均为真B.其中一个为真

C.它们均为假D.其中一个为假

3.设有语句“inta=12;a+=a*a;〞,那么执行结束后,a的值为()。C

A.12B.144C.156D.288

4.x>0&&x<=10的相反表达式为〔〕。A

A.x<=0||x>10B.x<=0&&x>10

C.x<=0||x<=10D.x>0&&x>10

5.x>0||y==5的相反表达式为〔〕。B

A.x<=0||y!=5B.x<=0&&y!=5

C.x>0||y!=5D.x>0&&y==56.字符串“a+b=12\n〞的长度为〔〕。答案:B

A.6B.7C.8D.9

7.在以下的常值常量定义中,错误的定义语句是〔〕。答案:C

A.constM=10;B.constintM=20;

C.constcharch;D.constboolmark=true;

8.枚举类型中的每个枚举常量的值都是一个〔〕。答案:A

A.整数B.浮点数

C.字符D.逻辑值

9.含随机函数的表达式rand()%20的值在()区间内。答案:C

A.1~19B.1~20

C.0~19D.0~20四、第二章填空题

1.十进制数25表示成符合C++语言规那么的八进制数为________。答案:031

2.十进制数25表示成符合C++语言规那么的十六进制数为________。答案:0x19

3.在c++语言中,操纵符________表示输出一个换行符。答案:endl

4.执行“cout<<char('A'+2)<<endl;〞语句后得到的输出结果为________。答案:C

5.'A'~'Z'的ASCII码为65~90,当执行“intx='C'+5;〞语句后x的值为________。答案:72

6.'A'~'Z'的ASCII码为65~90,当执行“charch=14*5+2;cout<<ch<<endl;〞语句序列后,得到的输出结果为________。答案:H

7.假定一个枚举类型的定义为“enumRA{ab,ac,ad,ae};〞,那么枚举常量ac的值为________。答案:18.假定一个枚举类型的定义为“enumRB{a1,a2=3,a3,a4}x=a3;〞,那么x的值为________。答案:4

9.char、short、int、float、double类型的大小分别为________个字节。

10.十进制常数28和3.26的类型分别为________和________。答案:int、double

11.假设需要定义一个常值常量,并且使C++能够进行类型检查,那么应在定义语句的开始使用保存字__________。答案:const//#defineMAX100

12.使用const语句定义一个常值常量时,那么必须对它同时进行__________。答案:初始化//如constintMM=20;

13.执行“intx=45,y=13;cout<<x/y;〞语句序列后得到的输出结果为________。答案:3

14.执行“intx=45,y=13;cout<<x%y;〞语句序列后得到的输出结果为________。答案:615.假定x=5,那么表达式2+x++的值为________。答案:7

16.假定y=10,那么表达式++y*3的值为________。答案:33

17.表达式float(25)/4的值为________。答案:6.25

18.表达式int(14.6)%5的值为________。答案:4

19.表达式x=x+y表示成复合赋值表达式为__________。答案:x+=y

20.表达式x=x+1表示成增量表达式为__________。答案:++x

21.增量表达式++y表示成赋值表达式为__________。答案:y=y+1

22.关系表达式(x==0)的等价表达式为________。答案:(!x)

23.关系表达式(x!=0)的等价表达式为________。答案:(x)

24.假定不允许使用逻辑非操作符,那么关系表达式x+y>5的相反表达式为____________。答案:x+y<=5

25.假设x=5,y=10,那么x>y逻辑值为________。答案:false或0

26.假设x=5,y=10,那么x!=y的逻辑值为________。答案:true或1

27.假定x=5,那么执行“a=(x?10:20);〞语句后a的值为________。答案:10

28.执行“typedefintDataType;〞语句后,在使用int定义整型变量的地方都可以使用__________来定义整型变量。答案:DataType五、第三章单项选择题

1.当处理特定问题时的循环次数时,通常采用〔〕来解决。答案:A

A.for循环B.while循环C.do循环D.switch语句

2.循环体至少被执行一次的语句为〔〕语句。答案:C

A.for循环B.while循环C.do循环D.任一种循环

3.在switch语句的每个case块中,假定都是以break语句结束的,那么此switch语句容易被改写为〔〕语句。答案:B

A.forB.ifC.doD.while

4.for语句能够被改写为〔〕语句。答案:D

A.复合B.ifC.switchD.while

5.循环语句“for(inti=0;i<n;i++)S;〞中循环体S被执行的次数为()。答案:C

A.1B.n-1C.nD.n+16.下面循环语句执行结束后输出的i值为〔〕。答案:Bfor(inti=0;i<n;i++)if(i>n/2){cout<<i<<endl;break;}

A.n/2B.n/2+1C.n/2-1D.n-1

7.在下面循环语句中内层循环体S语句的执行总次数为〔〕。答案:Dfor(inti=0;i<n;i++)

for(intj=i;j<n;j++)S;//n+(n-1)+...+1

A.n2B.(n+1)/2C.n(n-1)/2D.n(n+1)/2

8.在下面的while循环语句中,其循环体被执行的次数为〔〕。答案:Cinti=0,s=0;while(s<20){i++;s+=i;}//s=1,3,6,10,15,21

A.4B.5C.6D.7

9.在下面的do循环语句中,其循环体被执行的次数为〔〕。答案:Ainti=0;doi++;while(i*i<10);//i=0,1,2,3

A.4B.3C.5D.2六、第三章填空题

1.在switch语句中,每个语句标号所含保存字case后面的表达式必须是_______。整型常量

2.在if语句中,每个else关键字与它前面同层次并且最接近的________关键字相配套。if

3.作为语句标号使用的C++保存字case和default只能用于________语句的定义体中。switch

4.执行switch语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置起向下执行,当碰到下一个标号位置时〔停止/不停止〕________执行。不停止

5.假设while循环的“头〞为〞while(i++<=10)〞,并且i的初值为0,同时在循环体中不会修改i的值,那么循环体将被重复执行______次后正常结束。11

6.假设do循环的“尾〞为〞while(++i<10)〞,并且i的初值为0,同时在循环体中不会修改i的值,那么循环体将被重复执行______次后正常结束。107.当在程序中执行到________语句时,将结束本层循环类语句或switch语句的执行。答案:break

8.当在程序中执行到________语句时,将结束所在循环语句中循环体的一次执行。答案:continue

9.在程序中执行到________语句时,将结束所在函数的执行过程,返回到调用该函数的位置。答案:return

10.在程序执行完一个________函数调用后,将结束整个程序的执行过程,返回到操作系统或C++集成开发环境界面窗口。答案:主(或main)七、第三章程序运行结果

1.#include<iostream.h>

voidmain()

{

intx=5;

switch(2*x-3){

case4:cout<<x<<’’;

case7:cout<<2*x+1<<’’;

case10:cout<<3*x-1<<’’;break;

default:cout<<"default"<<endl;

}

cout<<"switchend."<<endl;

}答案:1114switchend.C++语言程序设计复习课一、第三章函数功能

1.#include<iostream.h>

intSA(inta,intb){

if(a>b)return1;

elseif(a==b)return0;

elsereturn-1;

}

答案:比拟两个整型参数a和b的大小,假设a>b那么返回1,假设a==b那么返回0,假设a<b那么返回-1。

2.intSC(inta,intb,intc){

if(a>=b&&a>=c)returna;

if(b>=a&&b>=c)returnb;

returnc;

}

答案:求出a,b,c三个数中的最大值并返回。3.intSE(intn){//n为大于等于1的整数

intx;cin>>x;

if(n==1)returnx;

intm=x;

while(--n){cin>>x;m+=x;}

returnm;

}

答案:求出从键盘上输入的n个整数之和并返回。

4.doubleSF(doublex,intn){//n为大于等于0的整数

doublep=1,s=1;

for(inti=1;i<=n;i++){p*=x;s+=p/(i+1);}

returns;

}

答案:计算1+x/2+x2/3+...+xn/(n+1)的值并返回。5.#include<math.h>

boolSG(intx){//x为大于等于2的整数

inta=int(sqrt(x));//取x的平方根

inti=2;

while(i<=a){if(x%i==0)break;i++;}

if(i<=a)return0;elsereturn1;

}

答案:判断x是否为一个质数,假设是那么返回1,否那么返回0。

6.floatFH(){

floatx,y=0,n=0;

cin>>x;

while(x!=-1){n++;y+=x;cin>>x;}

if(n==0)returny;elsereturny/n;

}

答案:求出从键盘上输入的一批常数的平均值,以-1作为结束输入的标志。7.floatFI(intn){//n为大于等于1的整数

floatx,y=0;

do{

cin>>x;y+=x*x;

}while(--n>0);

returny;

}

答案:求出从键盘上输入的n个常数的平方和并返回。8.#include<iostream.h>

#include<math.h>

voidmain()

{

intx,y;

cin>>x;

y=int(sqrt(x));//sqrt(x)为求x的算术平方根

for(inti=1;i<=y;i++)

if(x%i==0)cout<<〞x=〞<<i<<’*’<<x/i<<endl;

}

答案:把从键盘上输入的一个整数x分解为所有可能的每两个因子之积。二、第三章编写函数

1.编写一个主函数,利用while循环,求出并显示满足不等式1+1/2+1/3+...+1/n≥5的最小n值。

答案:

voidmain(){

inti=0;doubles=0;//或inti=1;doubles=1;

while(s<5)s+=double(1)/++i;

cout<<"n="<<i<<endl;

}

2.编写一个主函数,计算1+3+3^2+...+3^10的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。

voidmain(){

inti;//用i作为循环变量

intp=1;//用p作为累乘变量

ints=1;//用s作为累加循环变量

for(i=1;i<=10;i++){p*=3;s+=p;}

cout<<s<<endl;

}3.编写一个主函数,6≤a≤30,15≤b≤36,求出满足不定方程2a+5b=126的全部整数组解。如(13,20)就是其中的一组解。

答案:

voidmain()

{

inta,b;

for(a=6;a<=30;a++)

for(b=15;b<=36;b++)

if(2*a+5*b==126)cout<<'('<<a<<','<<b<<')'<<endl;

}三、第四章单项选择题

1.在下面的一维数组定义中,〔〕语句有语法错误。答案:C

A.inta[]={1,2,3};B.inta[10]={0};

C.inta[];D.inta[5];

2.在下面的二维数组定义中,〔〕语句是正确的。答案:C

A.inta[5][];B.inta[][5];

C.inta[][3]={{1,3,5},{2}};D.inta[](10);

3.在下面的字符数组定义中,〔〕语句有语法错误。答案:D

A.chara[20]=〞abcdefg〞;B.chara[]=〞x+y=55.〞;

C.chara[15]={’1’,’2’};D.chara[10]=’5’;

4.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};〞,那么元素a[1][2]的值为〔〕。答案:C

A.2B.4C.6D.8

5.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};〞,那么元素a[2][1]的值为〔〕。答案:A

A.0B.4C.8D.66.将两个字符串连接起来组成一个字符串时,选用〔〕函数。答案:C

A.strlen()B.strcpy()C.strcat()D.strcmp()四、第四章填空题

1.假定一个一维数组的定义为“char*a[8];〞,该数组所含元素的个数为________,所占存储空间的字节数为________。8、32

2.假定一个二维数组的定义为“inta[3][5];〞,那么该数组所含元素的个数为________,所占存储空间的字节数为________。15、60

3.执行“typedefintABC[10];〞语句把ABC定义为具有10个整型元素的________类型。数组

4.使用“typedefcharBB[10][50];〞语句定义________为含有10行50列二维字符数组类型。BB

5.存储字符’a’需要占用存储器的________个字节空间,存储字符串〞a〞需要占用存储器的________个字节空间。1、2

6.字符串〞a:\\xxk\\数据〞的长度为________,存储它的字符数组的长度至少为________。11、127.假设a是一个字符数组,那么从键盘上向该数组输入一个字符串的表达式语句为__________,向屏幕输出a中所存字符串的表达式语句为__________。答案:cin>>a;cout<<a;

8.一个二维字符数组a[10][20]能够存储________个字符串,每个字符串的长度至多为________。答案:10、19五、第四章程序运行结果

1.#include<iostream.h>

voidmain(){

inta[10]={12,39,26,41,55,63,72,40,83,95};

inti1=0,i2=0;

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

if(a[i]%2==1)i1++;elsei2++;

cout<<i1<<''<<i2<<endl;

}

答案:642.#include<iostream.h>

voidmain(){

inta[9]={36,25,48,14,55,40,32,66,60};

intb1,b2;

b1=b2=a[0];

for(inti=1;i<9;i++)

if(a[i]>b1){if(b1>b2)b2=b1;b1=a[i];}

elseif(a[i]>b2)b2=a[i];

cout<<b1<<''<<b2<<endl;

}

答案:66603.#include<iostream.h>

voidmain(){

chara[]="abcdabcabfgacd";

inti1=0,i2=0,i=0;

while(a[i]){

if(a[i]=='a')i1++;

if(a[i]=='b')i2++;

i++;

}

cout<<i1<<''<<i2<<''<<i<<endl;

}

答案:4314六、第四章编写程序

1.编写一个函数,函数头格式为“voidfun4(char*a,intb[])〞,分别求出由字符指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素中。

答案:

voidfun4(char*a,intb[])

{

inti;

for(i=0;i<10;i++)b[i]=0;//对b数组初始化

while(*a){

intj=*a-’0’;

if(j>=0&&j<=9)b[j]++;

a++;

}}C++语言程序设计复习课一、第五章单项选择题

1.下面的〔〕函数头格式不正确。答案:D

A.AA(inta,intb)B.AA(inta,intb=0)

C.AA(inta=0,intb=0)D.AA(inta=0,intb)

2.下面的〔〕保存字不能作为函数的返回类型。答案:C

A.voidB.intC.newD.long

3.下面的函数声明中,“voidBC(inta,intb);〞的重载函数是〔〕。答案:B

A.intBC(intx,inty);B.voidBC(inta,charb);

C.floatBC(inta,intb,intc=0);D.voidBC(inta,intb=0);

4.声明或定义一个内联函数时,必须在函数开始使用保存字〔〕。答案:C

A.staticB.constC.inlineD.extern5.在下面的函数声明中,〔〕存在着语法错误。答案:D

A.intBC(inta,int);B.intBC(int,int);

C.intBC(int,int=5);D.intBC(intx;inty);

6.假设定义了函数double*function(),那么该函数的返回值为〔〕。答案:B

A.实数型B.实数指针型C.函数指针型D.数组型

7.以下〔〕的调用方式是引用调用。答案:C

A.形参和实参都是变量B.形参是指针,实参是地址值

C.形参是引用,实参是变量D.形参是变量,实参是地址值

8.为了提高程序的运行速度,可将不太复杂的函数实现为〔〕。答案:A

A.内联函数B.重载函数C.递归函数D.函数模板

9.下面正确的函数原型语句是〔〕。答案:B

A.intFunction(voida);B.voidFunction(int);

C.intFunction(a);D.voidint(doub10.函数调用func((exp1,exp2),exp3*exp4-exp5)中所含实参的个数为()个。答案:B

A.1B.2C.4D.5

11.假设用数组名作为函数调用的实参,传递给形参的是〔〕答案:A

A.数组的首地址B.数组中第一个元素的值

C.数组全部元素的值D.数组元素的个数

12.文件包含命令中被包含的文件的扩展名〔〕。答案:C

A.只能是.hB.不能是.hC.可以是.h或.cppD.只能是.cpp二、第五章填空题

1.在C++语言中,一个函数由______和_______组成。答案:函数头、函数体

2.在函数外定义的变量称为全局变量,假设没有被初始化那么系统隐含对它所赋的初值为________。答案:0

3.函数被调用时,实参向形参的传送分为________和_______两种传送方式。答案:引用、值

4.重载一个函数的条件是:该函数必须在参数的_______或参数的_______上与其它同名函数有所不同。答案:个数、类型

5.如果一个函数只允许在同一程序文件中被调用,那么应在该函数定义前加上的C++保存字为__________。答案:static

6.如果一个函数直接或间接地调用自身,这样的调用被称为____________调用。答案:递归

7.假定一个函数模板的定义为“template<classT>Tcubin(Tn){returnn*n*n;}〞,那么类型参数为________。答案:T8.对于无返回值函数,定义函数时要用__________作为函数类型。答案:void

9.函数形参的作用域是该函数的____________。答案:函数体

10.C++提供的预处理命令有宏定义命令,条件编译命令和____________。答案:文件包含命令

11.程序的编译是以__________为单位进行的。答案:文件三、第五章程序运行结果

.#include<iostream.h>

#include<stdlib.h>

doubleSD(doublea,doubleb,charop){

doublex;

switch(op){

case'+':x=a+b;break;

case'-':x=a-b;break;

case'*':x=a*b;break;

case'/':if(b)x=a/b;elseexit(1);

break;

default:exit(1);

}

returnx;

}voidmain(){

intx=25,y=10;

cout<<SD(x,y,'-')<<'';

cout<<SD(x,y,'*')<<'';

cout<<SD(x+y,y,'/')<<endl;

}

答案:152503.5

2.#include<iostream.h>

voidmain(){

inta=10,b=20;

cout<<a<<''<<b<<endl;

{a*=3;

intb=a+35;

cout<<a<<''<<b<<endl;

}cout<<a<<''<<b<<endl;

}

答案:

1020

3065

3020

3.#include<iostream.h>

voidWF(int&x,inty){

x=x+y;

y=x+y;

cout<<x<<","<<y<<endl;

}

voidmain(){

intx=8,y=15;

cout<<x<<","<<y<<endl;

WF(x,y);x=2*x;

cout<<x<<","<<y<<endl;

}

答案:

8,15

23,38

46,15

4.#include<iostream.h>

voidSelectSort(inta[],intn){

inti,j,k;

for(i=1;i<n;i++){//进行n-1次选择和交换

k=i-1;

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

if(a[j]<a[k])k=j;

intx=a[i-1];a[i-1]=a[k];a[k]=x;

}}

voidmain(){

inti;

inta[6]={20,15,32,47,36,28};

SelectSort(a,6);

for(i=0;i<6;i++)cout<<a[i]<<'';

cout<<endl;

}

答案:152028323647四、第五章函数功能

1.boolWB(inta[],intn,intx){

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

if(a[i]==x)returntrue;

returnfalse;

}

答案:从数组a中顺序查找值为x的元素,假设查找成功那么返回真,否那么返回假。

2.template<classT>

intfun8(Ta[],intn,Tkey)

{

intc=0

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

if(a[i]>=key)c++;

returnc;

}答案:函数模板,从一维数组a[n]中统计出其值大于等于key的元素个数并作为函数值返回。

3.#include<iostream.h>

template<classTT>

intWG(TTa,TTb){

if(a>b)return1;

elseif(a==b)return0;

elsereturn-1;

}

答案:

模板函数,比拟两个变量a和b的大小,假设a>b那么返回1,假设a==b那么返回0,假设a<b那么返回-1。4.template<classType>

voidWE(Typea[],Typeb[],intn){

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

b[n-i-1]=a[i];

}

答案:模板函数,把数组a的每个元素按逆序放入数组b中。五、第六章单项选择题

1.假定p是一个指向float型数据的指针,那么p+1所指数据的地址比p所指数据的地址大()字节。答案:C

A.1B.2C.4D.8

2.假定a为一个字符数组名,那么元素a[8]相对于该数组首地址的字节地址为()。答案:CB

A.4B.8C.16D.32

3.假定a为一个整型数组名,那么元素a[4]相对于该数组首地址的字节地址为()。答案:CC

A.4B.8C.16D.32

4.假定a为一个数组名,那么下面的()表示有错误。答案:CB

A.a[i]B.*a++C.*aD.*(a+1)

5.用new运算符创立一维数组的正确语句是〔〕。答案:C

A.int*p=newa[10];B.int*p=newfloat[10];

C.int*p=newint[10];D.int*p=newint[5]={1,2,3,4,5}六、第六章填空题

1.假定p所指对象的值为25,p+1所指对象的值为46,那么*p++的值为________。答案:25

2.假定p所指对象的值为25,p+1所指对象的值为46,那么*++p的值为________。答案:46

3.假定p所指对象的值为25,p+1所指对象的值为46,那么执行“(*p)++;〞语句后,p所指对象的值为________。答案:26

4.假定p所指对象的值为25,p+1所指对象的值为46,那么执行“*(p++);〞语句后,p所指对象的值为________。答案:25

5.假定a是一个指针数组,那么a+i所指对象的地址比a地址大________字节。答案:4*i

6.假定a是一个一维数组,那么a[i]的指针访问方式为________。答案:*(a+i)

7.假定a是一个二维数组,那么a[i][j]的指针访问方式为____________。答案:*(a[i]+j)或*(*(a+i)+j)七、第六章程序运行结果

1.#include<iomanip.h>

voidmain(){

inta[8]={3,5,7,9,11,13,15,17};

int*p=a;

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

cout<<setw(5)<<*p++;

if((i+1)%4==0)cout<<endl;

}

}

答案:

3579

111315172.#include<iomanip.h>

voidmain(){

inta[9]={2,4,6,8,10,12,14,16,18};

for(inti=0;i<9;i+=2)cout<<setw(5)<<*(a+i)<<’’;

cout<<endl;

}

答案:26101418

3.#include<iomanip.h>

voidmain(){

intx=20,y=40,*p;

p=&x;cout<<*p<<'';

*p=x+10;cout<<*p<<'';

p=&y;cout<<*p<<endl;

*p=y+20;cout<<x<<''<<y<<endl;

}答案:

203040

3060

4.#include<iomanip.h>

intLB(int*a,intn){

ints=1;

for(inti=0;i<n;i++)s*=*a++;

returns;

}

voidmain(){

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

intb=LB(a,5)+LB(&a[3],3);

cout<<"b="<<b<<endl;

}

答案:b=240C++语言程序设计复习课一、第六章写出函数功能

1.#include<iostream.h>

int*LJ(inta[],intn){

intk=0;

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

if(a[i]>a[k])k=i;

return&a[k];

}

答案:求出数组a中n个元素的最大值元素,返回该元素的地址。2.#include<iostream.h>

voidLI(intn){

int*a=newint[n];

for(inti=0;i<n;i++)cin>>a[i];

for(i=n-1;i>=0;i--)cout<<*(a+i)<<'';

cout<<'\n';

delete[]a;

}

答案:把从键盘上输入的n个整数按与输入的相反次序显示出来。3.voidLK(inta[],intn,int&m){//inta[]同int*a

floats=0;inti;

for(i=0;i<n;i++)s+=a[i];//a[i]同*(a+i)

s/=n;

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

if(a[i]>=s)m++;

}

答案:求出数组a的n个元素中大于等于平均值的元素个数,该个数由引用参数m返回。二、第七章单项选择题

1.假定一个结构类型的定义为“structA{inta,b;A*c;};〞,那么该类型的大小为________字节。答案:B

A.8B.12C.16D.20

2.假定一个结构类型的定义为“structD{inta;union{intb;doublec;};D*d[2];};〞,那么该类型的大小为________字节。答案:D

A.8B.12C.16D.20

3.假定有“structBOOK{chartitle[40];floatprice;};BOOK*book;〞,那么不正确的语句为〔〕。答案:A

A.BOOK*x=newbook;B.BOOKx={"C++Programming",27.0};

C.BOOK*x=newBOOK;D.BOOK**x=&book;

4.假定有“structBOOK{chartitle[40];floatprice;}book;〞,那么正确的语句为〔〕。答案:B

A.BOOK&x=&book;B.BOOK&x=book;

C.BOOK&x=newBOOK;D.BOOK&x=BOOK;三、第七章填空题

1.假定要动态分配一个类型为Worker的具有n个元素的数组,并由r指向这个动态数组,那么使用的语句表达式为Worker*r=_______________。答案:newWorker[n];

2.假定要访问一个结构x中的由a指针成员所指向的对象,那么表示方法为____________。答案:n*(x.a)

3.假定要访问一个结构指针p所指对象中的b指针成员所指的对象,那么表示方法为____________。答案:n*(p->b)

4.与结构成员访问表达式p->name等价的表达式是____________。答案:n(*p).name

5.与结构成员访问表达式(*fp).score等价的表达式是____________。答案:nfp->score四、第七章程序运行结果

1.#include<iostream.h>

structWorker{

charname[15];//姓名

intage;//年龄

floatpay;//工资

};

voidmain(){

Workerx={"wangfong",43,1640};

Workery,*p;

y=x;p=&x;p->pay+=100;

cout<<<<''<<y.age<<''<<y.pay<<endl;

cout<<p->name<<''<<p->age+2<<''<<p->pay+200<<endl;

}

答案:

wangfong431640

wangfong4519402.#include<iostream.h>

#include<string.h>

structWorker{

charname[15];//姓名

intage;//年龄

floatpay;//工资

};

booloperator==(Worker&r1,Worker&r2){

if(strcmp(,)==0)returntrue;

elsereturnfalse;

}

voidmain(){

Workera[4]={{"abc",25,420},{"def",58,638},

{"ghi",49,560},{"jkl",36,375}};

Workerx={"ghi"};

for(inti=0;i<4;i++)if(a[i]==x)break;cout<<a[i].name<<''<<a[i].age<<''<<a[i].pay<<endl;

}

答案:ghi49560

3.#include<iostream.h>

structWorker{

charname[15];//姓名

intage;//年龄

floatpay;//工资

};

booloperator<(Worker&r1,Worker&r2){

if(r1.age<r2.age)returntrue;

elsereturnfalse;

}

voidmain(){

Workera[4]={{"abc",25,420},{"def",58,638},

{"ghi",49,560},{"jkl",36,375}};Workerx=a[0];

for(inti=1;i<4;i++)if(x<a[i])x=a[i];

cout<<<<''<<x.age<<''<<x.pay<<endl;

}

答案:def58638五、第七章写出函数功能

1.voidQA(Workera[],intn){

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

cin>>a[i].name>>a[i].age>>a[i].pay;

}

假定结构类型Worker的定义如下:

structWorker{

charname[15];//姓名

intage;//年龄

floatpay;//工资

};

答案:从键盘输入n个Worker类型的记录到一维数组a中。2.istream&operator>>(istream&istr,Worker&x){

cout<<"请输入一个职工记录:姓名、年龄、工资"<<endl;

istr>>>>x.age>>x.pay;

returnistr;

}//Workera;cin>>a;

假定结构类型Worker的定义如下:

structWorker{

charname[15];//姓名

intage;//年龄

floatpay;//工资

};

答案:重载提取操作符,用于从输入流中输入一个Worker类型的记录到x中。3.voidQB(StrNode*&f,intn){

if(n==0){f=NULL;return;}

f=newStrNode;

cin>>f->name;

StrNode*p=f;

while(--n){

p=p->next=newStrNode;

cin>>p->name;

}

p->next=NULL;

}

假定结构类型StrNode的定义如下:

structStrNode{

charname[15];//字符串域

StrNode*next;//指针域

};

答案:建立一个具有n个结点的链表,每个结点的字符串值由键盘输入,链表的表头指针由引用变量f带回。4.voidQC(StrNode*f){

while(f){

cout<<f->name<<'';

f=f->next;

}

}

假定结构类型StrNode的定义如下:

structStrNode{

charname[15];//字符串域

StrNode*next;//指针域

};

答案:遍历f单链表,即从表头结点开始依次输出f单链表中每个结点的值。5.IntNode*FindMax(IntNode*f)

{

if(!f)returnNULL;

IntNode*p=f;

f=f->next;

while(f){

if(f->data>p->data)p=f;

f=f->next;

}

returnp;

}

假定IntNode的类型定义为:

structIntNode{

intdata;//结点值域

IntNode*next;//结点指针域

};

答案:从表头指针f指向的、由IntNode类型的结点所构成的链表中查找出data域的值最大的结点并返回指向该结点的指针。6.intCount(IntNode*f){

if(!f)return0;

intc=0;

while(f){c++;f=f->next;}

returnc;

}

假定IntNode的类型定义为:

structIntNode{

intdata;//结点值域

IntNode*next;//结点指针域

};

答案:统计出以表头指针为f的链表中结点的个数。7.voidOutput(IntNode*f){

if(!f)return;

while(f){

cout<<f->data<<’’;

f=f->next;

}

cout<<endl;

}

假定IntNode的类型定义为:

structIntNode{

intdata;//结点值域

IntNode*next;//结点指针域

};

答案:对于以表头指针为f的链表,依次显示出每个结点的data域的值。1、对于下面的函数定义:intf(int*a,intlen){if(len<2)returna[len-1];elsereturna[len-1]*f(a,len-1);}如果执行:inta[]={1,2,3,4,5};intb=f(a,4);那么程序运行后,b的结果是〔24〕2、以下语句运行后,a的值为多少?〔-1〕inta=0;if(a>0)if(a>0);elsea++;elsea--;3、以下语句运行后,a的值为多少?〔1〕inta=0;switch〔a++〕{case1:a=1;case2:a=2;case3:a=3;defaulf:a=4;}4、以下程序执行后,其a,b的值分别为〔2,0〕VoidMaxInt(inta,intb){If(a>b)a++;Elseb++;}Inta=1,b=0;MaxInt(a,b);5、以下程序执行后,其a,b的值为〔2,0〕VoidMaxInt(int*a,int*b){If(*a>*b)(*a)++;else(*b)++;}inta=1,b=0;int*m=&a,*n=&b;MaxInt(m,n);6、以下程序执行后,a,b的值为〔1,不确定〕int*p1=newint(1);int*p2=newint[1];inta=*p1;intb=*p2;deletep1;delete[]p2;7、对于下面的函数定义:intf(int*a,intlen){if(len<2)returna[len-1];elsereturna[len-1]*f(a,len-1);}如果执行:inta[]={1,2,3,4,5};intb=f(a,4);那么程序运行后,b的结果是〔2〕8、以下语句运行后,a的值为多少?〔2〕inta=0;if(a>0)if(a>0);elsea++;elsea--;9、以下语句运行后,a的值为多少?〔3〕inta=0;switch〔a++〕{case1:a=1;case2:a=2;case3:a=3;defaulf:a=4;}10、以下程序执行后,其a,b的值分别为〔2,0〕VoidMaxInt(inta,intb){If(a>b)a++;Elseb++;}Inta=1,b=0;MaxInt(a,b);11、以下程序执行后,其a,b的值为〔24〕VoidMaxInt(int*a,int*b){If(*a>*b)(*a)++;else(*b)++;}inta=1,b=0;int*m=&a,*n=&b;MaxInt(m,n);12、以下程序执行后,a,b的值为〔3〕int*p1=newint(1);int*p2=newint[1];inta=*p1;intb=*p2;deletep1;delete[]p2;第八章一.单项选择题

1.当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为________。答案:C

A.nB.n+1C.n-1D.n-2

2.假定AB为一个类,那么该类的拷贝构造函数的声明语句为()。答案:C

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

3.对类对象成员的初始化是通过执行构造函数中的()完成的。答案:A

A.初始化表B.函数体C.参数表D.基类表

4.假定AB为一个类,那么执行“ABa,b(3),*p;〞语句时,自动调用该类构造函数的次数为()。答案:A

A.2B.3C.4D.5

5.假定AB为一个类,那么执行“ABa(4),b[3],*p[2];〞语句时,自动调用该类构造函数的次数为()。答案:B

A.3B.4C.6D.96.假定AB为一个类,px为指向该类动态对象数组的指针,该数组长度为n,那么执行“delete[]px;〞语句时,自动调用该类析构函数的次数为()。答案:C

A.0B.1C.nD.n+1

7.对于类中定义的成员,其隐含访问权限为()。答案:C

A.publicB.protectedC.privateD.static

8.对于结构中定义的成员,其隐含访问权限为()。答案:A

A.publicB.protectedC.privateD.static

9.为了使类中的成员不能被类外的函数通过成员操作符访问,那么不应把该成员的访问权限定义为()。答案:A

A.publicB.protectedC.privateD.static

10.一个类的友元函数或友元类能够通过成员操作符访问该类的()。答案:D

A.私有成员B.保护成员C.公用成员D.所有成员11.在一个类的定义中,通常要包含有〔〕成员的定义。答案:C

A.数据B.函数C.数据和函数D.数据或函数

12.在类作用域中能够通过直接使用该类的〔〕成员名进行访问。答案:D

A.私有B.公用C.保护D.任何

13.在关键字public后面定义的成员为类的〔〕成员。答案:B

A.私有B.公用C.保护D.任何

14.在关键字private后面定义的成员为类的〔〕成员。答案:A

A.私有B.公用C.保护D.任何

15.假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,那么访问x对象中数据成员a的格式为〔〕。答案:D

A.x(a)B.x[a]C.x->aD.x.a

温馨提示

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

评论

0/150

提交评论