高级程序设计(C++)学习通超星期末考试答案章节答案2024年_第1页
高级程序设计(C++)学习通超星期末考试答案章节答案2024年_第2页
高级程序设计(C++)学习通超星期末考试答案章节答案2024年_第3页
高级程序设计(C++)学习通超星期末考试答案章节答案2024年_第4页
高级程序设计(C++)学习通超星期末考试答案章节答案2024年_第5页
免费预览已结束,剩余6页可下载查看

下载本文档

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

文档简介

高级程序设计(C++)学习通超星期末考试章节答案2024年静态数据成员的初始化必须在()。

答案:类外关于类的静态数据成员和静态成员函数,以下不正确的叙述是()。

答案:类外可以直接引用类的静态数据成员和静态成员函数静态成员函数一定没有()。

答案:this指针在面向对象的程序设计中,作用域符(::)的功能是()。

答案:标识某个成员函数是属于哪个类的下面对静态数据成员的描述中,正确的是()。

答案:静态数据成员是类的所有对象共享的数据已知类A是类B的友元,类B是类C的友元,则()。

答案:类A的成员函数可以访问类B的对象的任何成员友元访问类的对象的成员时使用()。

答案:“对象名.成员名”的形式以下关于成员函数的叙述中,不正确的是()。

答案:成员函数一定是内联函数下列的各类函数中,不是类的成员函数的是()。

答案:友元函数有关析构函数的说法中,不正确的是()。

答案:析构函数和构造函数一样可以有形参下列不是构造函数的特征的是()。

答案:构造函数必须指定类型说明类定X的内容允许被其他对象无限制地存取是()。

答案:public部分下列关于成员访问权限的描述中,不正确的是()。

答案:类的私有数据成员只能被公有成员函数以及该类的任何友元类或友元函数访问有关类和对象的说法中,不正确的是()。

答案:一个类只能有一个对象下列表示引用的方法中,正确的是()。已知:intk=1000;

答案:int&x=k;下列不正确的选项是()。

答案:类与类之间不可以进行通信和联络在函数的返回值类型与返回值表达式的类型的描述中,错误的是()。

答案:函数返回值的类型就是返回值表达式的类型对定义重载函数的下列要求中,错误的是()。

答案:要求函数的返回值不同下列关于C++语言与C语言关系的描述错误的是()。

答案:C++语言和C语言都是面向对象的程序设计语言C++语言是()语言为基础逐渐发展演变而成的一种程序设计语言。

答案:Basic面向对象程序设计思想的主要特征中不包括()。

答案:功能分解,逐步求精C++下列关于类的描述错误的()。

答案:类与类之间必须是平等的关系而不能组成层次关系下面关于类概念的描述错误的()。

答案:类就是C语言中的结构体类型C++语言属于()。

答案:高级语言C++语言是()。

答案:既是面向对象的程序设计语又是结构化的程序设计语言,言关于对象成员的构造函数的调用顺序,说法正确的是()。

答案:与它们在类中说明顺序相同关于常数据成员的说法中,不正确的是()。

答案:常数据成员可义在定义时直接初始化下面对于对象概念描述中,错误的是()。

答案:在类体之外定义的成员函数不能操作该类的私有数据成员已知类X中的一个成员函数说明如下:VoidSet(X&a);其中X&a的含义是()。

答案:a是类x的对象引用,用来做为Set()的形参下面有关类的说法中,不正确的是()。

答案:在类中,如果不做特别说明,所指的成员目数均为公有类型下面关于友元的描述中,错误的是()。

答案:类与类之间的友元关系可以继承。设funl()和fun2()是同一类中的两个成员函数,但fun1()不能直接调用fun2(),这说明()。

答案:fun1()是静态函数,fun2()不是静态函数下列()不是类的成员函数。

答案:友元函数设x为类的数据成员,在类的非静态成员函数中对x的非法访问方式是()。

答案:(*this)->x下面关于友员函数的说法中,正确的是()。

答案:友员函数可以直接访问本类的所有成员如果一个函数被说明为一个类的友元,则()。

答案:该函数可以直接使用该类的私有成员若有0到9之间不同的十个数构成一个三位数,下面程序将统计出其有多少种方法,请填空完成此程序。#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=9;i++){for(j=0;j<=9;j++){if(

1

)continue;else{for(k=0;k<=9;k++)if(

2

)count++;}}}cout<答案:i==j;k!=i&&k!=j以下函数的功能是删除字符串s中的所有数字字符。请填空。voiddele(char*s){intn=0;for(i=0;s[i];i++){if(

1

)s[n+1]=s[i];}s[n]=‘\0’;}

答案:s[i]<'0'||s[i]>'9'若二维数组b有m列,则b[i][j]对应的一维存储下标为(

)。(按行存储)

答案:i*m+j当运行以下程序时,从键盘输入:AhaMAAha,然后回车,则下面程序的运行结果是#includemain(){chars[80],c='a';intI=0;cin>>s;while(s[I]!='\0'){if(s[I]==c)s[I]=s[I]-32;elseif(s[I]==c-32)s[I]=s[I]+32;I++;}cout<答案:ahAMa下面程序的输出结果是

#includevoidmain(){charstr[]="SSSWLIA",c;intk;for(k=2;str[k]!='\0';k++){c=str[k];switch(c){case'L':{++k;break;}case'I':break;default:cout<答案:SWA*定义如下数组:inti;inty[2][3]={2,4,6,8,10,12};则下面语句的输出结果是:for(i=0;i<2;i++)cout<答案:10,6,若有以下程序,则该程序段的功能是:

void

main

()

{int

a[]={4,0,2,3,1},I,j,t;

for(I=1;I<5;I++)

{t=a[I];j=I-1;

while(j>=0&&t>a[j])

{

a[j+1]=a[j];

a[j]=t;

j--;}}}

答案:对数组a进行插入排序(降序)对于”

int

*pa[5];”的描述,()是正确的

答案:pa

是一个具有5个元素的指针数组,每个元素是一个int型指针有以下程序,执行结果为:

main()

{

char

a[10]=”Abcd

Efg9”,b[10];

int

j,k=0;

for(j=0,k=0;a[j]!=’\0’;j++)

{

if

((

a[j]>=’A’

&&a[j]<=’Z’||(a[j]>=’0’

&&

a[j]<=’9’))

{

b[k]=a[j];k++;}}

b[k]=0;

cout<<

b+3;}

答案:以上都不正确以下程序的输出结果是()

#include

int

main

()

{

int

b[3][3]={0,1,2,0,1,2,0,1,2},I,j,t=1;

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

for(j=I;j<=I;j++)

t=t+b[I][b[j][j]];

cout<<

t;}

答案:4下列数组定义中,会产生错误的是()

答案:chara[5]=“hello”;main()

{

char

a[20]="abcd",b[]="12345";int

m,n;

for(m=strlen(a),n=2;b[n]!='\0';m++,n++)

a[m]=b[n];

a[m]='\0';

cout

<答案:abcd345,12345对两个数组a和b进行如下初始化:

char

a[]=”ABCDEF”;

char

b[]={‘A’,’B’,’C’,’D’,’E’,’F’};

则下面描述正确的是():

答案:sizeof(a)比sizeof(b)大若有以下程序:

#include

using

namespace

std;

int

main()

{

int

I;chara[3][3]={‘1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’};

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

cout<答案:2

5

8以下程序的输出结果是()

#include

int

main

()

{

char

b[]=”Hello

,you”;

b[5]=0;

cout<<

b;}

答案:Hello有以下程序:

#include

#include

using

namespace

std;

int

main()

{

char

arr[2][4];

strcpy(arr[0],”you”);

strcpy(arr[1],”me”);

arr[0][3]

=

‘&’;

cout

<<

arr[0]

<<

endl;

return

0;}该程序执行后的输出结果是()

答案:you&me在下列对字符数组进行初始化中()是正确的

答案:char

s1[]=”abcd”;以下不能正确赋进行字符串赋初值的语句是:

答案:char

str[5]=”good!”;以下程序的输出结果是(

#include

int

main()

{char

w[][10]={"ABCD","EFGH","IFKL","MBOP"},k;

for(k=1;k<3;k++)

cout<<

w[k];

return

0;

}

答案:EFGHIFKL以下程序的输出结果是:

#include

#include

int

main

()

{

char

st[20]=”hello\0\t”;

cout<<

strlen(st)<<<”

”<<

sizeof(st);}

答案:5

20当执行下面的程序时,如果输入ABC,则输出结果是()

#include

#include

int

main()

{

char

ss[10]=”1,2,3,4,5”;

cin

>>

ss;

strcat(ss,”6789”);

cout<<

ss;}

答案:ABC6789若有说明“int

a[3][4]={0};”,则下面正确的是:

答案:数组a中每个元素均可得到初值0有以下程序,执行结果是:

main()

{

int

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

int

I,j,k=2;

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

{

cout

<<

m[k][I];}}

答案:369下面程序的运行结果是:

#include

void

mian

()

{char

ch[7]={“12ab56”};

int

I,s=0;

for(I=0;ch[I]>=’0’&&ch[I]<=’9’;I+=2)

s=10*s+ch[I]-‘0’;

cout<<

s;}

答案:1在”int

b[][3]={{1},{3,2},{4,5,6},{0}};”,中b[2][2]的值是:

答案:6以下不能正确定义二维数组的选项是:

答案:int

a[2][]={{1,2},{3,4}};下面叙述不正确的是()。

答案:基类的公用成员在派生类个仍然是公用的若有类x和类y的说明如下:classx{public:intdatax;}classy:publicx{……….};则以下叙述中正确的是()。

答案:类y中所有成员函数都可以访问datax在公用继承情况下,有关派生类对象和基类对象的关系,不正确的叙述是()。

答案:派生类的对象可以直接访问基类中的成员下面对派生类的描述中,错误的是()。

答案:派生类中继承的基类成员的访问权限到派生类中保持不变在公有派生中,如果基类的某个成员函数和派生类的成员函数同名,且都为public权限,若派生类的对象调用该成员函数,则()。

答案:系统直接调蝴派生类的同名函数设B类是A类的派生类。当创建一个B类的对象时,构造函数的调用是()。

答案:先调用A类的构造函数,然后调用B类的构造函数继承具有(),即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。

答案:传递性以下有关继承的叙述中正确的是()。

答案:基类的公有成员一定能被派生类的成员函数访问如果某类是从另一个类的派生类,该类对象释放时析构函数的调用是()。

答案:先调用派生类的析构函数,再调用基类的析构函数在派生类的成员函数中能够直接访问基类的()。

答案:公有成员和保护成员在多继承中,公用继承和私有继承对于基类成员在派生类中的可访问性与单继承的规则是()。

答案:完全相同在C++中,不能被派生类继承的是基类的()。

答案:构造函数和析构函数当保护继承时,基类的()在派生类中成为保护成员,不能通过派生类的对象来直接访问。

答案:公用成员和保护成员若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的()。

答案:私有成员以下关于派生类的叙述中错误的是()。

答案:派生类中继承的基类成员的访问权限在派生类中不变设置虚基类的目的是()。

答案:消除二义性若类A和类B的定义如下,则非法的是()。classA{inta,b;public:voidset(){…};};classB:A{intc;public:voidgetB(){…};};VoidB:getB(){c=a+b;}

答案:c=a+b抽象类的派生类一定要给出纯虚函数的实现。

答案:错抽象类声明了一组派生类共同操作接口的通用语义,接口的完整实现,即纯虚函数的函数体,可以由抽象类自己给出。

答案:错声明一个参数为整型、无返回值、名为fun1的虚函数:virtualvoidfnl(int);

答案:对抽象类声明了一组派生类共同操作接口的通用语义,接口的完整实现,即纯虚函数的函数体,要由派生类自己给出。

答案:对在C++-中不能声明虚构造函数。

答案:对带有纯虚函数的类是抽象类.抽象类的主要作用是通过它为一个类族建立一个公共的接口.使它们能够更有效地发挥多态特性。

答案:对在C++中可以声明虚析构函数。

答案:对抽象类的派生类并非一定要给出纯虚函数的实现.如果派生类没有给出纯虚函数的实现,这个派生类仍然是一个抽象类.

答案:对写出程序运行结果:(

1

#include

using

namespace

std;

class

B0

{

public:

virtual

void

display(){cout<<"B0::display()"<display();

}

int

main()

{

B0

b0,*p;

D1

d1;

p=&b0;

fun(p);

p=&d1;

fun(p);

}

答案:B0

called.

B0

called.

B1

called.

D1

called.

B0::display(实现重载函数Double(x),返回值为输入参数的两倍;参数分别为整型、浮点型、双精度型,返回值类型与参数一样。#include

template

class

base

{protected:T

m;public:base

(T

n)

{m=n+n;}void

show()

{cout<

a(10);a.show();

float

x=12.8;base

b(x);b.show();double

y=12.35;base

c(y);c.show();}以上程序运行结果是:(1)

答案:2025.624.7声明一个哺乳动物Mammal类,再由此派生出狗Dog类,二者都定义Speak()成员函数,基类中定义为虚函数。声明一个Dog类的对象,调用Speak()函数,写出运行结果。#includeclassMammal{public:Mammal(){cout<<"callMammal"<答案:callMammalcallbaseclasscallMammalcallDogcallDogclass声明一个Rectangle类,有长itsWidth、宽itsLength等属性,重载其构造函数Rectanle()和Rectangle(intwidth,intlength)。填空完成下面程序。#includeclassRectangle{public:(1);Rectangle(intwidth,intlength);~Rectangle(){}intGetWidth()const{returnitsWidth;}intGetLength()const{returnitsLength;}private:intitsWidth;intitsLength;};Rectangle::Rectangle(){itsWidth=5;itsLength=10;}Rectangle::Rectangle(intwidth,intlength){(2);(3);}voidmain(){RectangleRect1;cout<<"Rect1width:"<>aWidth;cout<<"\nEnteralength";cin>>aLength;Rectangle(4);cout<<"\nRect2width:"<答案:Rectangle(;itsWidth=width;itsLength=length;Rect2(aWidth,aLength下面描述中,正确的是(

)。

答案:virtual可以用来声明虚函数以下(

)成员函数表示纯虚函数。

答案:virtual

void

vf()=0;关于虚函数的描述中,(

)是正确的。

答案:派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型如果一个类至少有一个纯虚函数,那么就称该类为(

答案:抽象类下列描述中,(

)是抽象类的特征。

答案:可以说明纯虚函数下面4个选项中,(

)是用来声明虚函数的。

答案:virtual关于纯虚函数和抽象类的描述中,错误的是(

)。

答案:一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类下列运算符中,(

)运算符在C++中不能重载。

答案:?:要实现动态联编,可以通过(

)调用虚函数。

答案:对象指针关于虚函数的描述中,正确的是()。

答案:派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型编译时的多态性可以通过使用(

)获得。

答案:虚函数和对象下面关于友元的描述中,错误的是(

)。

答案:类与类之间的友元关系可以继承下列关于动态联编的描述中,错误的是()。

答案:动态联编是在编译时确定操作函数的通常拷贝初始化构造函数的参数是()。

答案:某个对象引用名C++语言对C语言做了很多改进,下列描述中哪一项使得C语言发生了质变,即从面向过程变成面向对象()。

答案:引进类和对象的概念每个C++程序都必须有且仅有一个()。

答案:主函数下列C++标点符号表示行注释开始的是()。

答案://#includeintf(intx,inty){return(y-x)*x;}voidmain(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));cout<答案:9下面程序调用swap函数交换a和b的值,并输出交换后的a和b的值。程序的输出结果是:AfterCallFunctionSwap5,9。#includeusingnamespacestd;voidswap(int*x,int*y);intmain(){intx=9,y=5;swap(1);cout<<"AfterCallFunctionSwap"<答案:&x,&y;int*x,int*y;*x=*y以下程序的运行结果是intmain(){intk=4,m=1,p;p=func(k,m);cout<答案:8,17考虑函数原型voidtest(inta,intb=7,charz='*'),下面的函数调用中,属于不合法调用的是:

答案:test(6,'#');以下程序的输出结果是intfunc(inta,intb){returna+b;}intmain(){intx=6,y=7,z=8,r;r=func(func(x,y),z--);cout<答案:21在函数定义前加上关键字“inline”表示该函数被定义为:

答案:内联函数函数定义为Fun(int&i),变量定义n=100,则下面调用正确的是

答案:Fun(n)分析如下程序:#includeintf(intb[],intn){inti,r=1;for(i=0;i<=n;i++)r=r*b[i];returnr;}voidmain(){intx,a[]={2,3,4,5,6,7,8,9};x=f(a,3);cout<答案:120下面有关重载函数的说法中正确的是:

答案:重载函数必须有不同的形参列表有如下程序:

#include

using

namespace

std;

int

f(int

x);

int

sum(int

n)

{

int

x,s=0;

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

s+=f(x);

return

s;

}

int

f(int

x)

{

return

(x*x+1);

}

int

main()

{

int

a,b;

cout<<”Enter

a

integer

number:”;

cin>>a;

b=sum(a);

cout<答案:3,18若有以下函数调用语句,在此函数调用语句中实参的个数是fun(a+b,(y=10,y),fun(n,k,d));

答案:3分析以下程序:#includevoidfun(intnum){cout<答案:66下列函数参数默认值定义错误的是:

答案:Fun(intx=0,inty)有以下程序:#includeusingnamespacestd;intf(int,int);intmain(){inti=1,x;x=f(i,i+1);cout<b)c=1;elsec=-2;returnc;}运行后的输出结果是:

答案:-2一个函数功能不太复杂,但要求被频繁调用,选用:

答案:内联函数C++语言中,形参与实参之间的数据传递方式是

答案:既可以按值传递也可以按地址传递在C++语言中,对函数参数默认值描述正确的是:

答案:在设定参数的默认值后,该参数后面定义的所有参数都必须设定默认值以下函数调用语句中,含有的实参个数是()func(rec1,rec2+1,(rec3,rec4));

答案:3一个函数为voidf(intx,chary=‘a’),另一个函数为voidf(int),则它们

答案:不能在同一程序块中定义

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

答案:定义该函数时所指定的函数类型在以下的说明中,标识符pointer______。int(*pointer)[6];

答案:是一个指针,它指向一个具有六个元素的一维数组下面正确的说明语句是()

答案:int(*a)[10];设已有定义:char*st=”howareyou”;下列程序段中正确的是()。

答案:chara[11];strcpy(a,st);若有以下说明:int

a[10]={1,2,3,4,5,6,7,8,9,10};*p=a;则数值为6的表达式是______。

答案:*p+=5若有以下调用语句,则不正确的fun函数的首部是()。intmain(){...inta[50],n;...fun(n,&a[9]);return0;}

答案:voidfun(intn,inta)static

int

a[]={7,4,6,3,10};

int

m,k,*ptr;

m=10;

ptr=&a[0];

for(k=0;k<5;k++)

m=(*(ptr+k)答案:3设有以下定义:inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int(*ptr)[3]=a,*p=a[0];则下列能够正确表示数组元素a[1][2]的表达式是______。

答案:*(*(a+1)+2)下面哪一项是不正确的字符串赋值或赋初值的方式

答案:charstr1[10];str1=“string”;若有下列语句,则不能代表字符o的表达式是:chars[20]=”programming”,*ps=s;

答案:ps2有以下语句:charstr1[]="string",str2[8],*str3,*str4="string";则()不是对库函数strcpy的正确调用,此库函数用于复制字符串

答案:strcpy(str3,”HELLO3”);设有以下语句:

char

str[4][2]={"aaa","bbbb","ccccc","dddddd"},*strp[4];int

i;

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

strp[i]=str[i];则(

)不是对字符串的正确引用,其中0<=k<4。

答案:strp若有说明:inti,j=7,*p=&i则与i=j;等价的语句是_____。

答案:*p=j以下选项中,对指针变量不正确的操作是()

答案:ints[10];int*q=s=1000;C++将类继承分为单继承和多继承两种。

答案:对派生类可以定义其中基类不具备的数据和操作。

答案:对在继承机制下,当对象消亡时,编译系统先执行派生类的析构函数,然后才执行派生类中子对象类的析构函数,最后执行基类的析构函数。

答案:对写出下列程序运行结果:#i

温馨提示

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

评论

0/150

提交评论