2013秋川大网教《面向对象程序设计》第一、二次作业及答案课件
- 格式:doc
- 大小:90.50 KB
- 文档页数:10
面向对象程序设计课后答案(完整版)第二章2-4#includeusing namespace std;Add(int a,int b);int main(){int x,y,sum;cout>x>>y;sum = add(x,y);cout >*p;p++;}p = p-20;for( i=0;i0) countp++;if(*p>age ;try{checkagescore(name,age);}catch( string){cout<<"exception :name is exit"<<endl;continue;}catch(int){cout<<"exception :age is not proper"<<endl;continue;}cout<<"name:"<<name<<" age :"< }return 0;}第三章3-1(1)A (2)C (3)B (4)C (5)C(6)B (7)B (8)C (9)C3-7(1)main()函数中p1.age = 30;语句是错误的。
age 是类的私有成员(2)构造函数应当给常数据成员和引用成员初始化,将构造函数改为:A(int a1,int b1):a(a1),b(b1){}或A(int a1 ):a(a1),b(a){}再将main中的A a(1,2); 改为A a(1);(3)(1)在Test 类中添加语句:void print();void Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}改为void Test::Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}main函数中Init(38,15);改为:A.Init(38,15);Print();改为:A.Print();3-8(1)Constructing AConstructing BDestructing BDestructing A(2)double a,double bpoint & pp.x3-9class box{int len1,len2,len3;public:box(int l1,int l2,int l3){len1 = l1;len2 = l2; len3 = l3;} long volumn(){return len1*len2*len3;}};3-10class Test{int m1,m2;public:void Init(int a,int b){m1 = a;m2 = b;}void Pring(){cout<<m1<<" "<<m2<<endl;}};3-11略3-12}第四章4-6(1)D (2)D (3)D (4)D (5)B(6)D4-7(1)static int count = 0;这样初始化静态成员值是不对的将其改为static int count;在类外,main函数前加int Sample::count = 0;(2)#include//#includeusing namespace std;class Ctest{private:int x; const int y1;public:const int y2;Ctest(int i1,int i2):y1(i1),y2(i2) {y1 =10;//y1 为常量不能赋值x = y1;}int readme() const;};int Ctest::readme ()const{int i;i = x;x++; //常函数内不能改变成员值return x;}int main(){Ctest c(2,8);int i = c.y2;c.y2 = i;//y2为常量,不能改值i = c.y1;//y1私有,类外不能访问return 0;}将出错语句全部注释4-8(1)题中印刷错误,将class C构造函数改为: C(){cout<<"constructor C:";}运行结果为:constructor Aconstructor Bconstructor C(2)40(3)3434-9#include#includeclass Date{int year;int month;int day;public:Date(int y,int m,int d){year=y;month=m;day=d;}void disp(){cout<<year<<" "<<month<<" "<<day<<endl;}friend int count_day(Date &d,int k);friend int l(int year);friend int h(Date &d1,Date &d2);};int count_day(Date &d,int k){static int day_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,3 1},{31,29,31,30,31,30,31,31,30,31,30,31}};// 使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年int j,i,s;if(l(d.year))j=1;//闰年,取1else j=0;//非闰年,取0if(k)//K非0时{s=d.day;for(i=1;i<d.month;i++)//d.month为输入的月份s+=day_tab[j][i-1];}else//K为0时{s=day_tab[j][d.month]-d.day;for(i=d.month+1; i<=12; i++)s+=day_tab[j][i-1];}return s;//S为相差的天数}int l(int year){if(year%4==0&&year%100!=0||year%400==0) // 是闰年return 1;else // 不是闰年return 0;}int h(Date &d1,Date &d2){int days,day1,day2,y;if(d1.year<d2.year)//第一个日期年份小于第二个日期年份{days=count_day(d1,0);for(y=d1.year+1;y<d2.year;y++)if(l(y))//闰年。
面向对象程序设计教程答案面向对象程序设计教程
第一章:介绍面向对象程序设计
⑴面向对象程序设计的概念
⑵面向对象程序设计的优势
⑶面向对象程序设计的基本原则
第二章:面向对象的基本概念
⑴类和对象的概念
⑵属性和方法的定义
⑶封装、继承和多态的概念
第三章:类的设计与实现
⑴类的设计原则
⑵类的成员变量和成员函数的设计
⑶类的构造函数和析构函数的设计
⑷类的访问控制和封装性的实现
第四章:继承与多态
⑴继承的概念和用法
⑵单继承和多继承的区别
⑶虚函数的定义和使用
⑷纯虚函数和抽象类的概念
第五章:面向对象的设计模式
⑴设计模式的概念和分类
⑵单例模式的实现
⑶工厂模式的实现
⑷观察者模式的实现
第六章:面向对象程序设计的实例
⑴车辆管理系统的设计与实现
⑵学生信息管理系统的设计与实现
⑶游戏角色的设计与实现
附件:
⒈示例代码
⒉ UML图
法律名词及注释:
⒈版权:根据国际公约,对作者创作的作品(包括文学、艺术、音乐、软件等)的独有权益进行法律保护。
⒉商标:商标是指为了区别商品或服务而在商品上、包装上、容器上或者商品的商业文件上使用的特定标识的任何符号。
⒊专利:专利是为了推动技术创新,提供创新者在一定时期内对其发明进行独占权利的一种法律制度。
⒋许可证:许可证是指一方在法律许可范围内允许他人使用自己的某种权利的文件。
面向对象程序设计教程答案面向对象程序设计教程第1章引言1.1 背景1.1.1 传统的结构化程序设计方法1.1.2 面向对象的程序设计方法1.2 目标1.3 本教程的组织结构第2章面向对象的基本概念2.1 类和对象2.1.1 类的定义2.1.2 对象的创建与使用2.2 封装和信息隐藏2.2.1 封装的概念2.2.2 信息隐藏的重要性2.3 继承和多态2.3.1 继承的概念与用法 2.3.2 多态的概念与用法 2.4 抽象和接口2.4.1 抽象的概念与用法 2.4.2 接口的概念与用法第3章面向对象的设计原则3.1 单一职责原则3.2 开放-封闭原则3.3 里氏替换原则3.4 依赖倒置原则3.5 接口隔离原则3.6 迪米特法则第4章面向对象的分析与设计 4.1 需求分析4.1.1 确定需求4.1.2 分析需求4.2 类的设计4.2.1 识别类的责任4.2.2 定义类的属性和行为 4.3 协作关系的设计4.3.1 关联关系4.3.2 依赖关系4.3.3 聚合关系4.3.4 组合关系4.3.5 继承关系第5章面向对象的编程语言5.1 Java5.2 C++5.3 Python5.4 Ruby第6章实例分析:学绩管理系统 6.1 需求分析6.2 类的设计6.3 协作关系的设计6.4 实现与测试第7章总结本文档涉及附件:无本文所涉及的法律名词及注释:1:封装:将数据和对数据的操作封装在一个类中,外部无法直接访问和修改内部数据,只能通过类提供的接口访问和修改。
2:信息隐藏:对于类的用户来说,只需要知道如何使用类的接口,而不需要知道类的实现细节。
3:继承:一个类可以从另一个类继承属性和方法,继承可以提高代码的复用性和可维护性。
4:多态:同一个方法可以根据不同的对象调用不同的实现,提高代码的灵活性和可扩展性。
5:抽象:将一组具有相似属性和行为的对象抽象成一个类,可以减少代码重复。
6:接口:描述类的行为,定义类应该实现的方法。
《C++面向对象程序设计》习题答案(总29页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除《C++程序设计》习题解答目录第2部分习题解答................................................................................................... 错误!未定义书签。
第1章面向对象程序设计概述.................................. 错误!未定义书签。
第2章面向过程程序设计...................................... 错误!未定义书签。
第3章类和对象.............................................. 错误!未定义书签。
第4章继承与派生............................................ 错误!未定义书签。
第5章多态性与虚函数........................................ 错误!未定义书签。
第6章友元与静态成员........................................ 错误!未定义书签。
第7章运算符重载............................................ 错误!未定义书签。
第8章泛型编程.............................................. 错误!未定义书签。
第9章输入/输出............................................. 错误!未定义书签。
第10章异常处理............................................. 错误!未定义书签。
c面向对象程序设计课后习题答案C面向对象程序设计课后习题答案在学习C面向对象程序设计课程的过程中,课后习题是巩固知识、提升能力的重要途径。
通过认真完成习题,我们可以更好地理解课程内容,掌握编程技巧,提高解决问题的能力。
下面我们将针对一些常见的C面向对象程序设计课后习题进行答案解析。
1. 请编写一个C++程序,实现一个简单的学生信息管理系统,包括学生姓名、学号、成绩等信息的录入、查询和修改功能。
答案解析:首先,我们需要定义一个学生类,包括姓名、学号、成绩等属性,并实现相应的方法来实现信息的录入、查询和修改功能。
然后在主函数中创建学生对象,调用相应的方法即可实现学生信息管理系统。
2. 编写一个C++程序,实现一个简单的图书管理系统,包括图书名称、作者、出版社等信息的录入、查询和删除功能。
答案解析:同样地,我们需要定义一个图书类,包括图书名称、作者、出版社等属性,并实现相应的方法来实现信息的录入、查询和删除功能。
在主函数中创建图书对象,调用相应的方法即可实现图书管理系统。
3. 设计一个C++程序,模拟实现一个简单的银行账户管理系统,包括账户余额、存款、取款等功能。
答案解析:在这个问题中,我们需要定义一个银行账户类,包括账户余额、存款、取款等属性,并实现相应的方法来实现账户管理系统。
在主函数中创建账户对象,调用相应的方法即可实现银行账户管理系统。
通过以上习题的解答,我们可以看到C面向对象程序设计的重要性和实际应用。
通过不断地练习和实践,我们可以更好地掌握面向对象程序设计的知识和技能,提高编程能力,为今后的工作和学习打下坚实的基础。
希望同学们能够认真对待课后习题,不断提升自己的编程水平。
实验一熟悉VC++IDE开发环境一、实验目的1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。
2、掌握如何编辑、编译、连接和运行一个C++程序。
3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。
二、实验要求1、分析下列程序运行的结果。
程序一:#include <iostream.h>int add(int x,int y=8);void main(){ int x=4;cout<<add(x)<<",";cout<<add(x,add(add(x,add(x))))<<endl;}int add(int x,int y){ return x+y;}//12,28程序二:#include <iostream.h>void main(){ int *p,i;i=5;p=&i;i=*p+10;cout<<"i="<<i<<endl;}//i=15程序三:#include <iostream.h>void main(void){ int i=10;int &r=i;r++;cout<<"i="<<i<<", r="<<r<<'\n';i=88;cout<<"i="<<i<<", r="<<r<<'\n';}//i=11,r=11i=88,r=88程序四:#include <iostream.h>int f(int i){ static int k=1;for(;i>0;i--)k +=i;return k;}void main(){ int i;for(i=0;i<5;i++)cout<<f(i)<<" ";}// 1 2 5 11 21程序五:#include <iostream.h>void func();int n=1;void main(){ static int a;int b= -9;cout <<"a:"<<a<<" b:"<<b<<" n:" <<n<<endl;b+=4;func();cout <<"a:"<<a<<" b:"<<b<<" n:"<<n<<endl;n+=10;func();}void func(){ static int a=2; int b=5;a+=2;n+=12;b+=5;cout <<"a:" <<a<<" b:" <<b<<" n:" <<n <<endl;}// a:0 b:-9 n:1a:4 b:10 n:13a:0 b:-5 n:13a:6 b:10 n:35实验二C++对C的扩充一、实验目的1、了解在面向对象程序设计过程中C++对C功能的扩充与增强,并善于在编写程序的过程中应用这些新功能。
(0837)《面向对象程序设计》网上作业题及答案1:第一次作业2:第二次作业3:第三次作业4:第四次作业5:第五次作业6:第六次作业1:[论述题]编写一个简单的乘法器,界面如下图所示,在第一个文本框中输入第一个乘数;在第二个文本框中输入第二个乘数;当单击"=”按钮时,在第三个文本框中输出其乘积。
参考答案:问题(1):Java程序分为Java应用程序(或Java application)和Java小应用程序(或Java applet);这段程序是Java小应用程序。
问题(2):界面上包含一个标签(JLabel),一个按钮(JButton)和一个文本框(JTextField);点击按钮后,文本框内显示“好好学习,天天向上”。
问题(3):ActionListener是动作事件监听器接口;方法actionPerformed()是ActionListener中的方法;其功能是处理applet界面里发生的动作事件。
2:[论述题]请设计一个软件包。
要求该软件包至少拥有正方形类、圆类。
要求每个类都具有构造方法、计算该图形的周长的成员方法和计算该图形的面积的成员方法。
然后编写一个测试程序,分别创建这些类的实例对象,并输出这些实例对象的周长和面积。
在创建这些实例对象时,构造方法的调用参数值分别是:正方形:左上定点的坐标为(5,10),边长为15。
圆形:圆心的坐标为(0,0),圆心为15。
参考答案:问题(1):Test3是SuperTest的子类(或SuperTest是Test3的父类,或继承关系)。
问题(2):super指对象的父类(或超类);this指使用它的对象本身(或对对象自己的引用)。
问题(3):程序的输出是:Hi, I am OliveNice to meet you!Age is 7My age is 7My parent's age is 353:[论述题]编写一个程序,要求随机生成61个学生的成绩(从0到100的整数),在将成绩排序(由高到低)后保存到文件"score.txt”中。
面向对象程序设计课后答案面向对象程序设计是计算机科学领域的一门重要课程,通过学习这门课程,我们可以深入理解面向对象的编程思想和方法。
本文将针对面向对象程序设计的一些常见问题给出详细的答案,帮助读者更好地理解和掌握这门课程。
一、什么是面向对象程序设计?面向对象程序设计(Object-Oriented Programming,简称OOP)是一种软件开发的方法和思想,它将程序中的数据和操作数据的方法组合成一个对象,通过对象的相互调用来完成任务。
面向对象程序设计可以更好地模拟现实世界的事物和关系,提高软件的可维护性和可扩展性。
二、面向对象程序设计的基本特征有哪些?1. 封装(Encapsulation):将数据和操作封装在一个对象中,对外部隐藏内部的实现细节,提供统一的接口进行访问。
2. 继承(Inheritance):通过继承可以使一个类获取另一个类的属性和方法,减少代码的重复性,提高代码的复用性。
3. 多态(Polymorphism):不同的对象可以对相同的消息做出不同的响应,同一个方法可以根据具体的对象类型来执行不同的操作。
三、什么是类和对象?1. 类(Class):类是一种抽象的数据类型,它定义了对象共同具有的属性和方法。
类是面向对象程序设计的基础,用于描述对象的特征和行为。
2. 对象(Object):对象是类的一个实例,具有类定义的属性和方法。
对象是面向对象程序设计的基本单位,可以通过对象来访问和操作数据。
四、如何定义一个类?在面向对象程序设计中,可以通过以下步骤来定义一个类:1. 确定类的名称:类名通常使用大写字母开头,采用驼峰命名法。
2. 确定类的属性:类的属性是描述对象特征的变量,可以包括基本数据类型和其他对象。
3. 确定类的方法:类的方法是描述对象行为的函数,可以有参数和返回值,用于操作类的属性。
五、如何创建对象?在面向对象程序设计中,可以通过以下步骤来创建对象:1. 使用关键字new来实例化一个对象:Object obj = new Object();2. 调用对象的构造方法(Constructor):构造方法用于初始化对象的属性,在类中可以定义一个或多个构造方法。
《面向对象程序设计》第一次作业答案一、单项选择题。
本大题共30个小题,每小题2.0 分,共60.0分。
在每小题给出的选项中,只有一项是符合题目要求的。
1.C++函数的声明和定义可以分开,函数声明不需要(D)。
A.返回类型B.函数名C.参数表D.函数体2.函数的形参是( B )。
A.全局变量B.局部变量C.静态变量D.部变量3.数组名表示的是数组的(C )。
A.类型B.用途C.地址D.长度4.如果短整型的长度是2字节,有一个短整型指针p的值是0xFFED1200,那么p+1的值为(B )。
A.0xFFED1201B.0xFFED1202C.0xFFED1203D.0xFFED12045.private访问属性限制对象的成员可以在( A)中访问。
A.本类的成员函数B.main函数C.父类的成员函数D.子类的成员函数6.如果定义了一个类myclass,则为myclass类对象以成员函数形式重载后++运算符的声明应该为(C )。
A.myclass operator++();B.myclass&operator++();C.myclass operator++( int );D.myclass& operator++( int );7.如果有如下定义:const char* str = "OK";那么,sizeof(str)的值应该是(D)A. 1B. 2C. 3D. 48.父类和子类各自定义一个成员函数,函数名相同,参数表不同,那么(D )。
A.在子类中这两个函数构成重载关系B.子类不会继承父类的这个函数C.子类中的函数会覆盖父类中的函数D.编译时会发生错误9.如果myclass类定义了拷贝构造函数和一个整型参数的构造函数,还重载了赋值运算符,那么语句myclass obj = 100;会(B)。
A.调用拷贝构造函数B.调用整型参数的构造函数C.调用赋值运算符D.引起编译错误10.抽象类指的是(D )。
A.没有任何成员的类B.只有成员函数没有数据成员的类C.有虚函数的类D.有纯虚函数的类11.多重继承时,如果派生类的两个父类有一个共同的虚基类,那么虚基类的初始化参数由(C )的构造函数来传递。
A.第一个父类B.第二个父类C.派生类D.以上都不是12.多态性是通过(C )实现的。
A.构造函数B.析构函数C.虚函数D.函数重载13.十进制数127转换成二进制数是(B )A.11111111B.01111111C.10000000D.1111111014.执行语句char ch[] = "Hello";char * p = &ch[0];cout<<*p结果是输出(C )。
A.一个地址B.HC.HelloD.乱码15.以下不能正确进行字符串赋初值的语句是(A )A.char str[5]="good!";B.char str[]="good!";C.char *str="good!";D.char str[5]={‘g',‘o',‘o',‘d'};16.用cin为整型变量输入数据时,如果从键盘输入的不是数字,输入后整型变量中的结果会是:(D )A.0B.负数C.正数D.不确定17.使用流控制符(C )需要头文件。
A.endlB.hexC.setwD.left18.C++泛型编程通过(B )实现。
A.voidB.templateC.NULLD.typedef19.C++异常处理机制中没有(D )。
A.tryB.throwC.catchD.finally20.要打开一个文件并从中读取数据,应该使用(C )类的对象。
A.istreamB.ostreamC.ifstreamD.ofstream21.判断一个ofstream类对象file打开文件是否失败,应该判断(D )。
A.创建文件流对象时是否抛出异常B.open成员函数的返回值C.feof成员函数的返回值D.! file 是否为真22.链表的基本单元是(A )。
A.节点B.头指针C.尾指针D.数据域23.二叉查找树按(B)遍历时访问到节点的数据是排好序的。
A.前序B.中序C.后序D.层次24.二进制数00001001跟01000011异或的结果为(C )。
A.01001011B.00000001C.01001010D.0100110025.若有定义:int aa[ 8];。
则以下表达式中不能代表数组元aa[1]的地址的是(C )A.&aa[0]+1B.&aa[1]C.&aa[0]++D.aa+126.一个类如果没有定义任何函数,编译器不会自动为这个类产生(C )。
A.拷贝构造函数B.无参构造函数C.输出流运算符D.赋值运算符27.如果在try块中用throw "error";语句抛出一个异常,则参数类型是(B )的catch块能够捕获这个异常。
A.char *B.const char *C.CharD.const char28.队列的最大特征是(A )。
A.先进先出B.后进先出C.自动排序D.大数优先29.下列排序算法中,平均效率最低的排序算法是(B )。
A.插入法B.冒泡法C.选择法D.快速排序法30.下面不支持下标操作的容器是(C )。
A.vectorB.dequeC.listD.map二、多项选择题。
本大题共5个小题,每小题4.0 分,共20.0分。
在每小题给出的选项中,有一项或多项是符合题目要求的。
1.for语句的格式为for(表达式1;表达式2;表达式3),其中可以省略的是(BCD )。
A.两个分号B.表达式1C.表达式2D.表达式32.C++中变量要求(ABD )A.有明确的类型B.先声明后使用C.名字中不能使用下划线D.严格区分大小写3.流程控制语句有(ABC)几种。
A.条件语句B.循环语句C.分支语句D.表达式语句4.面向对象的编程方法的主要特征包括(ABC )。
A.封装B.继承C.多态D.消息5.类成员的访问属性可以是(ABC )A.publicB.protectedC.privateD.default三、判断题。
本大题共5个小题,每小题4.0 分,共20.0分。
1._int可以定义为用户标识符。
(✔)2.结构化程序设计的基本方法是递归法。
(×)3.C++语言的跳转语句中,break语句只应用于循环体中。
(×)4.C++语言是从早期的C语言逐渐发展演变而来的,与C语言相比,它在求解问题方法上进行的最大改进是面向过程。
(×)5.重载函数形参个数可以不同。
(✔ )《面向对象程序设计》第二次作业答案一、单项选择题。
本大题共30个小题,每小题2.0 分,共60.0分。
在每小题给出的选项中,只有一项是符合题目要求的。
1.C++源文件的缺省扩展名为(A)。
A.cppB.exeC.objD.lik2.程序运行中需要从键盘上输入多于一个数据时,各数据之间应该使用(D)符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车3.在每个C++程序中都必须包含有这样一个函数,该函数的名称为(A )A.mainB.MAIND.function4.假定a 为一个短整型(short int)数组名,则元素a[8]的地址为(B )A.a+4B.a+8C.a+16D.a+325.假定AB 为一个类,则执行“AB a(4),b[4],*p[5]”语句时,自动调用该类构造函数的次数为(B )A. 4B. 5C.8D.136.当需要使用istrstream流类定义一个流类对象并联系一个字符串时,应在文件开始使用#include命令,使之包含(A )文件A.iostream、hB.iomanip、hC.fstream、hD.ststrea、h7.执行下列语句段后,输出字符“*”的个数是(A)for (int i=50; i>1; I-=2)cout<<~*~;A.24B.25C.26D.508.有如下定义:int a[5]={1,3,5,7,9},*p=a;下列表达式中不能得到数值 5 的是(B )A.a[2]B.a[3]C.*(p+2)D.*p+49.已知函数f 的原型是void f(int *a, long & b);,变量v1、v2 的定义是:int v1; loong v2;下列调用语句中正确的是(D )A.f(v1, &v2)B.f(v1, v2)C.f(&v1, &v2)D.f(&v1, v2)10.有如下类定义:class Point{private;static int how_many;};___________ how_many=0;要初始化Point 类的静态成员how_many,下划线处应填入的内容是 DB.static intC.int Point::D.static int Point::11.在下列关键字中,不能用来表示继承方式的是(B )A.privateB.staticC.publicD.protected12.已知Value 是一个类,Value 是Value 的一个对象。
下列以非成员函数形式重载的运算符函数原形中,正确的是(B)A.Value operator+(Value v, int i);B.Value operator+(Value v=value, int i);C.Value operator+(Value vint i=0);D.Value operator+(Value v=value, int i=0);13.下面是一个模板声明的开始部分:templute<typename T> double __由此可知(A )A.这可能是一个函数模板的声明B.这可能是一个类模板的声明C.这既可能是一个函数模板的声明,也可能是一个类模板的声明D.这肯定是一个错误的模板声明14.有如下4 个语句:①cout<<~A~<<setfill(~*~)<<left<<setw(7)<<~B~<<endl;②cout<<setfill(~*~)<<left<<setw(7)<<~A~<<~B~<<endl;③cout<<~A~<<serfill(~*~)<<right<<setw(7)<<~B~<<endl;④cout<<setfill(~*~)<<right<<setw(7)<<~A~<<~B~<<endl;其中能显示A******B 的是(A )A.①和③B.①和④C.②和③D.②和④15.有如下类定义:class MyClass{int value;public:MyClass(int n): value (n) {}int gerValue()const{ return value;}};则类MyClass 的构造函数的个数是(A)A. 1 个B. 2 个C. 3 个16.有如下类和对象的定义:class Constants{public:static double getPI(){return 3.1416;}};Constants constants;下列各组语句中,能输出3.1416 的是(D )A.cout<<constants->getPI();和cout<<Constants::gerPI();B.cout<<constants.getPI();和cout<<Constants.getPI();C.cout<<constants->getPI();和cout<<Constants->getPI();D.cout<<constants.getPI();和cout<<Constants::getPI();17.若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的是(B )A. p1=&m,p2=&p1B.p1=&m;p2=&n;*p1=*p2C.p1=&m;p1=p2D.p1=&m;*p2=*p118.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是(D )A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念19.若已定义int a=5;下面对(1),(2)两个语句正确理解的是(D)(1)int *p=&a; (2)*p=a;A.(1)(2)中的*P含义相同,都表示给指针变量P 附值B.(1)(2)的执行结果都是把变量a的地址值赋给指针变量PC.(1)在对P进行说明的同时进行初始化,使P指向a,(2)将变量a的值赋给指针变量PD.(1)在对P进行说明的同时进行初始化,使P指向a,(2)将变量a的值赋给*20.下列有关抽象类和纯虚函数的叙述中,错误的是(D )A.拥有纯虚函数的类是抽象类,不能用来定义对象B.抽象类的派生类若不实现纯虚函数,它也是抽象类C.纯虚函数的声明以“=0;”结束D.纯虚函数都不能有函数体21.下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“<<left”,输出效果将发生变化的是(B )A.cout<<left<<setfill(~*~)<<357;B.cout<<left<<setw(5)<<357;C.cout<<left<<setw(5)<<"ABCDE";D.cout<<left<<"ABCDE";22.下面函数调用语句含有实参的个数为:(B )func((exp1,exp2),(exp3,exp4,exp5))A. 1B. 2C. 4D. 523.设有定义int x; float v;,则10+x+v值的数据类型是(C )A.intB.doubleC.floatD.不确定24.在定义int a[3][4][2];后,第10个元素是(B)A.a[2][1][2]B.a[1][0][1]C.a[2][0][1]D.a[2][2][1]25.下列哪个是C++语言的有效标识符? (A )A._No1B.No、1C.12345D.int26.下面的选项中正确的赋值语句是(char a[5],*p=a;)。