#include
{ return 2*x*x*x-4*x*x+3*x-6; } void main()
{ float left,right,middle,ym,yl,yr;
cout<<”pleass two number:”<
{ middle=(right+left)/2; ym=f(middle); if(yr*ym>0)
{ right=middle; Yr=ym; } else
{ left=middle; yl=ym; }
}while(fabs(ym)>=1e-6);
cout<<”\\nRoot is:”< 本例使用了内联函数f(x),因为在主函数中多次调用它,这样可以加快代码执行的速度。敲进两个数:-10 10 结果:Root is 2 [2_13]答:运行结果是:2 4 6 12 10 说明:本例使用的是返回引用的值,index(3)=12;语句的执行实际将a[3]赋值为12。 [2_14]答:运行结果为:101 说明:在语句::i=i+1;中赋值号左边::i的i单元是全 局变量,赋值号右边的i单元是局部变量i。所以执行该语句的结果是 将局部变量i的值+1(101)赋值给全局变量i [2_15]答:结果是:10 10 说明:函数f(&a,b)中的第一个参数是引用,引用参数是一种按地址传递参数的方法,对其的调用是传地址调用;而第二个参数是变量参数,对它的调用是通常的传值调用。所以运行后,a的值被改为10,b的值不变,仍为10 [2_16]答:D 说明:int *p=new int(10);表示分配1个整型空间,初值为10 int *p=new int[10];表示分配10个整型空间 int *p=new int;表示分配1个整型空间 int *p=new int[10](0)想给一个数组分配内存空间时,对整个数组进行初始化,这是不允许的。 [2_17]答:D 说明:name被定义为指向常量的常指针,所以它所指的内容和本 身的内容都不能修改,而name[3]=’a’;修改了name所指的 常量,name=’lin’;和name=new char[5];修改了常指针,只有 D输出一个字符是正确的。 [2_18]答:A 说明:name被定义指向常量的指针,这是一个不能移动的固定指针,它所指的内容不能改变,但指针所指的数据可以改变,而name[3]=’q’;修改了name所指的内容,是正确的。name=”lin”; name=new char[5]; name=new char(‘q’);以不同的方法修改了常指针,都是错误的。 [2_19]答:A 说明:name被定义指向常量的指针,不允许改变指针所指的常量,但指针本身的内容可以修改,而name[3]=’q’;修改了name所指的内容,是错误的。name==”lin” name=new char[5];和name=new char(‘q’)以不同的方法修改了常指针,都是正确的。 [2_20]答:D 说明:C++中不能建立引用数组和指向引用的指针,也不能建立引用的引用。所以A、B、C是错误的,D是正确的。 第三章:类和对象(一) [3_1]答:类声明的一般格式如下: class 类名 { public: 公有数据成员; 公有成员函数; protected: 保护数据成员; 保护成员函数; private: 私有数据成员; 私有成员函数; };其中:class是声明类的关键字;类名是要声明的类的名字;后面的花括号表示出类声明的范围;最后的分号表示类声明结束。 [3_2]答:构造函数是一种特殊的成员函数,它主要用于为对象分配空间,进行初始化。构造函数具有一些特殊的性质: (1)构造函数的名字必须与类名相同 (2)构造函数可以有任意类型的参数,但不能指定返回类型。它有隐含的返回值,该值在系统内部使用。 (3)构造函数是特殊的成员函数,函数体可写在类体内,也可写在类体外。 (4)构造函数可以重载,即一个类中可以定义多个参数个数或参数类型不同的构造函数。 (5)构造函数被声明为公有函数,但它不能象其它成员函数那样被显示地调用,它是在定义对象的同时被调用的。 析构函数也是一种特殊的成员函数。它执行与构造函数相反的操作,通常用 于撤消对象时的一些清理任务,如释放分配给对象的内存空间等。析构函数有以下一些特点: (1)析构函数与构造函数名字相同,但它前面必须加一个波浪号(~) (2)析构函数没有参数,不能指定返回类型,而且不能重载。因此在一个类中只能有一个析构函数。 (3)当撤消对象时,编译系统会自动地调用析构函数。 [3_3]答:B 说明:C++中对构造函数有一些规定:不能带返回值;可以不带 参数;也可以缺省定义;但构造函数的名字与类名必须完全相同。 [3_4]答:C 说明:C++中没有限定private、public、protected的书写次序。但 是,不能在类的声明中给数据成员赋初值,数据成员的数据类型 也不能是register(寄存器类型),没有用private、public、protected 定义的数据成员是私有成员。 [3_5]答:C 说明:C++中对析构函数也有一些规定:没有参数;不能重载;析构函数的名字是在类名前加“~”;析构函数不能指定返回类型。 [3_6]答:B 说明:构造函数的工作是在创建对象时执行的。 [3_27]答:语句”p1.age=30;”出现错误。因为age是私有数据成员,不能直接访问。 [3_28]答:第1个错误:printStu、setSno两个成员函数没有用public定义,则不 允许外部函数对对象进行操作。 第2个错误:成员函数在类外定义,应加上类名“Student::”。 第3个错误:setAge应在类中说明,并且在类外定义时,应加上类名”Student::”。 [3_29]答:语句”Point cpoint;”是错误的,它试图用私有的构造函数Point访问公有数据成员x和y,这是不对的。 [3_10]答:语句Stack stt;”应该带参数,因为当类中没有定义构造函数时,编译器会自动生成一个缺省的不带参数的构造函数。但是,如果类中有自己定义的构造函数后,编译器将不再自动生成一个缺省的构造函数。例如:将上述语句改成“Stack stt(10);”就正确了。 [3_30]:下面是一个计数器的定义,请完成该类成员函数的实现 #include counter(int number);//构造函数 void increment(); //给原值加1 void decrement(); ///给原值减1 int getvalue(); //取得计数器值 int print(); //显示计数 private: int value; }; counter::counter(int number)//构造函数定义 { value=number; } void counter::increment()//给原值加1 { value++; } void counter::decrement()//给原值减1 { value--; } int counter::getvalue()//取得计数器值 { return value; } int counter::print()//显示计数 { cout<<\ return 0; } main() { int i; cin>>i; counter a(0); for(int j=0;j counter b(10); for(int k=1;k return 0; } 习题:[3_31]根据注释语句的提示,实现类Date的成员函数 #include void printDate(); //显示日期 void setDay(int d);//设置日期值 void setMonth(int m);//设置月的值 void setYear(int y);//设置年的值 private: int day,month,year; }; void main() { Date testDay; testDay.setDay(5); testDay.setMonth(10); testDay.setYear(2003); testDay.printDate(); } void Date::printDate() { cout<<\ cout< void Date::setDay(int d) { day=d; } void Date::setMonth(int m) { month=m; } void Date::setYear(int y) { year=y; } 习题:[3_13]下面定义了一个类date,根据主程序的提示,实现重载构造函数date() #include date(int d,int m,int y); date::date(); void show(); private: int day,month,year; }; void date::show() { cout< main() { date idate(28,10,1949);//构造函数的参数为3个整数 idate.show(); date indate; //构造函数没有参数,数据通过键盘直接输入 indate.show(); return 0; } //解:重载构造函数的实现如下: date::date(int d,int m,int y) { day=d; month=m; year=y; } date::date() { cout<<\ cin>>day; cin>>month; cin>>year; }//注意:敲数据时要如:8 回车 9回车 2005回车 习题:[3_14]建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。用类cylinder计算圆柱体的体积,并存储在一个double变量中。在类cylinder中包含一个成员函数vol(),用来显示每个cylinder对象的体积。 #include cylinder(double a,double b); void vol(); private: double r,h; double volume; 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库面向对象程序设计课后习题答案(2)在线全文阅读。
相关推荐: