您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > C++面向对象程序设计教程课后习题答案游洪跃
C++面向对象程序设计教程第1章C++程序设计基础习题解答一、选择题1.下列语句中,错误的是。A)constintbuffer=256;B)constinttemp;C)constdouble*point;D)double*constpt=newdouble(5.5);解析:修饰符const声明的常量只能被读取,该常量必须在声明时进行初始化,并且它的值在程序中不能改变。选项B)没有初始化,错误。选项C)定义了一个指向constdouble的指针,其意义为指针point指向的变量不能通过指针point来改变,D)中表示指针pt是常量指针,已在声明时进行了初始化。答案:B2.关于函数重载,下列叙述中错误的是。A)重载函数的函数名必须相同B)重载函数必须在参数个数或类型上有所不同C)重载函数的返回值类型必须相同D)重载函数的函数体可以有所不同解析:函数重载是用同一个函数名字在不同的参数类型或参数个数上做类似的操作方作,它们的实现方法可以不同。所以说,重载函数的函数名必须相同,函数体可以有所不同。函数重载必须在参数类型或参数个数上不一样,不能依靠返回值不一样来区分重载函数。答案:C3.有以下程序:voidFun(inti,intj){couti+jendl;//输出i+j}voidFun(inti){couti++endl;//输出i++}intmain()//主函数main(){inta=1;//定义变量iFun(a);//调用Fun()return0;//返回值0,返回操作系统}该程序执行后输出的结果是。A)1B)2C)3D)4解析:由于主函数中调用的Fun()函数只有一个参数,故执行的是voidFun(inti)的版本,执行“couti++endl;”时,由于是后缀“++”,所以先输出i的值1,再使i加1。答案:A二、编程题1.编写一个C++程序,要求输出“欢迎学习C++语言!”。参考程序:#includeiostream//编译预处理命令usingnamespacestd;//使用命名空间stdintmain()//主函数main(){cout欢迎学习C++语言!endl;//用C++的方法输出一行system(PAUSE);//调用库函数system(),输出提示信息return0;//返回值,返回操作系统}*2.编一个程序,用一个函数实现求n个整型数据的最小值。函数原型如下:intMin(inta[],intn)参考程序:#includeiostream//编译预处理命令usingnamespacestd;//使用命名空间stdintMin(inta[],intn)//求n个整型数据的最小值{intm=a[0],i;//临时变量for(i=1;in;i++){//依次比较求最小值if(a[i]m){//如果a[i]更小m=a[i];//a[i]为当前最小值}}returnm;//返回最小值}intmain()//主函数main(){inta[]={1,2,3,4,5,6,7,8,9,-10},n=10;cout最小值为Min(a,n)endl;//输出最小值system(PAUSE);//调用库函数system(),输出提示信息return0;//返回值,返回操作系统}3.求2个数或3个整数中的最大数,用两个同名函数实现,要求编写测试程序。参考程序:#includeiostream//编译预处理命令usingnamespacestd;//使用命名空间stdintMax(intx,inty)//求x,y的最大值{returnxy?x:y;//返回x,y的最大值}intMax(intx,inty,intz)//求x,y,z的最大值{intm=xy?x:y;//x,y的最大值m=mz?m:z;//m,z的最大值returnm;//返回x,y,z的最大值}intmain()//主函数main(){cout2,3的最大值为Max(2,3)endl;cout1,6,8的最大值为Max(1,6,8)endl;system(PAUSE);//调用库函数system(),输出提示信息return0;//返回值,返回操作系统}4.用变量的引用作函数形参,实现交换两个整型变量,要求编写测试程序。参考程序:#includeiostream//编译预处理命令usingnamespacestd;//使用命名空间stdvoidSwap(int&x,int&y)//交换x,y的值{intt=x;x=y;y=t;//循环赋值交换x,y的值}intmain()//主函数main(){intx=1,y=6;cout交换前:x,yendl;Swap(x,y);cout交换后:x,yendl;system(PAUSE);//调用库函数system(),输出系统提示信息return0;//返回值,返回操作系统}*5.编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度实型、双精度实型,用重载函数实现。参考程序:#includeiostream//编译预处理命令usingnamespacestd;//使用命名空间stdvoidSort(inta[],intn)//对a[0]...a[n-1]进行排序{inttem,i,j;//定义变量for(i=0;in-1;i++)for(j=i+1;jn;j++)if(a[i]a[j]){//a[i]比a[j]更大tem=a[i];a[i]=a[j];a[j]=tem;}}……*5.编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度实型、双精度实型,用重载函数实现。参考程序:……voidSort(floata[],intn)//对a[0]...a[n-1]进行排序{floattem;//临时变量inti,j;//定义变量for(i=0;in-1;i++)for(j=i+1;jn;j++)if(a[i]a[j]){//a[i]比a[j]更大tem=a[i];a[i]=a[j];a[j]=tem;}}……*5.编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度实型、双精度实型,用重载函数实现。参考程序:……voidSort(doublea[],intn)//对a[0]...a[n-1]进行排序{doubletem;//临时变量inti,j;//定义变量for(i=0;in-1;i++)for(j=i+1;jn;j++)if(a[i]a[j]){//a[i]比a[j]更大tem=a[i];a[i]=a[j];a[j]=tem;}}……*5.编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度实型、双精度实型,用重载函数实现。参考程序:……intmain()//主函数main(){inta[]={1,3,2,5,6,9,0,6};//定义afloatb[]={1.6,3.3,2.8,5.6,6.8,9.6,0.6,6.8};//定义bdoublec[]={1.2,3.1,2.6,5.8,6.8,9.8,0.8,6.2};//定义cinti,n=8;//定义变量Sort(a,n);//对a排序couta:;//输出提示for(i=0;in;i++)couta[i];//输出a[i]coutendl;//换行……*5.编一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度实型、双精度实型,用重载函数实现。参考程序:……Sort(b,n);//对b排序coutb:;//输出提示for(i=0;in;i++)coutb[i];//输出b[i]coutendl;//换行Sort(c,n);//对c排序coutc:;//输出提示for(i=0;in;i++)coutc[i];//输出c[i]coutendl;//换行system(PAUSE);//调用库函数system(),输出系统提示信息return0;//返回值,返回操作系统}C++面向对象程序设计教程第2章类和对象习题解答一、选择题1.下列选项中,不属于面向对象程序设计特征的是。A)继承性B)多态性C)类比性D)封装性解析:封装性、继承性和多态性是面向对象思想的3个主要特征。封装性指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被封装在其内部。继承性是指一种事物保留了另一种事物的全部特征,并且具有自身的独有特征。多态性主要指当多个事物继承自一种事物时,同一操作在它们之间表现出不同的行为。答案:C2.在面向对象方法中,实现信息隐蔽是依靠。A)对象的继承B)对象的多态C)对象的封装D)对象的分类解析:在面向对象方法中,封装性是指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被封装在内部,只可以通过对象提供的算法来进行操作,从而实现信息隐蔽。答案:C3.下列关于类和对象的叙述中,错误的是。A)一个类只能有一个对象B)对象是类的具体实例C)类是某一类对象的抽象D)类和对象的关系就像数据类型和变量的关系解析:在面向对象设计中,类是同一种对象的抽象,而不只是对一个对象的抽象,一个类具有多个对象。对象是类的具体实例。就像数据类型和变量的关系,一种数据类型可以定义多个变量,一个变量却只能是一种数据类型。答案:A4.有以下类声明:classMyClass{intnum;};则MyClass类的成员num是。A)公有数据成员B)公有成员函数C)私有数据成员D)私有成员函数解析:函数声明时,函数名后必须带“{}”,所以num是数据成员。在类中,当没有用访问权限标识符标识时,默认为私有权限。答案:C5.在下列函数原型中,可以作为类AA构造函数的是。A)voidAA(int);B)intAA();C)AA(int)constD)AA(int);解析:构造函数用于初始纶对象的数据成员,没有返回类型,而且由于常成员函数不能更新对象的数据成员,所以常成员函数也不可能作为构造函数。答案:D6.下列关于this指针的叙述中,正确的是。A)任何与类相关的函数都有this指针B)类的成员函数都有this指针C)类的友元函数都有this指针D)类的非静态成员函数才有this指针解析:this指针只能在类的成员函数中使用,它指向该成员函数被调用的对象。但是有两种与类相关的函数都没有this指针,即静态成员函数和友元函数。答案:D7.有以下程序:classTest{private:staticintn;//静态成员public:Test(){n+=2;}//构造函数~Test(){n-=3;}//析构函数staticintGetNum(){returnn;}//返回n};intTest::n=1;//初始化nintmain()//主函数main(){Test*p=newTest;//定义指针pdeletep;//释放p指向的动太对象coutn=Test::GetNum()endl;//输出nreturn0;//返回值0,返回操作系统}执行后的输出结果是。A)n=0B)n=1C)n=2D)n=3解析:静态数据成员初始化的值为1,执行“Test*p=newTest”将调用构造函数,执行“n+=2;”,n的值变为3,执行“deletep;”时将调用析构函数,执行“n-=3;”,n的值减3,变为0。答案:A8.有以下程序:classMyClass{private:intn;//数据成员public:MyClass(intk):n(k){}//构造函数intGet(){returnn;}//返回nintGet()const{returnn+1;}//返回n+1};intmain()//主函数main(){MyClassa(5);//定义对象aco
本文标题:C++面向对象程序设计教程课后习题答案游洪跃
链接地址:https://www.777doc.com/doc-6154822 .html