C++习题1(类和对象)
- 格式:doc
- 大小:52.00 KB
- 文档页数:6
C++面向对象程序设计习题解答与上机指导(第2版)习题参考答案源代码使用源程序的几点注意事项(1) 由于源程序在复制、编辑、解压缩等过程中可能引起部分符号(主要是标点符号,如分号、冒号、逗号、引号)的字体、半全角等发生变化,在编译时可能被检出语法错误,只要使用“替换”功能,纠正后即能顺利运行。
(2) 有的C++系统(如Visual C++6.0)没有完全实现C++标准,它所提供的不带后缀的.h 的头文件不支持友元运算符重载函数,在Visual C++6.0中编译会出错,这时可采用带后缀的.h头文件。
将程序中的#include<iostream>using namespace std;修改成#include<iostream.h>即可顺利运行。
第2章 C++基础【2.2】下面是一个C程序,改写它,使它采用C++风格的I/O语句。
#include<stdio.h>int main(){ int a,b,d,min;printf("Enter two numbers:");scanf("%d%d",&a,&b);min=a>b? b:a;for (d=2; d<min; d++)if (((a%d)==0)&&((b%d)==0)) break;if (d==min){ printf("No common denominators\n");return 0;}printf("The lowest common denominator is %d\n",d);return 0;}【解】#include<iostream>using namespace std;int main(){ int a,b,d,min;cout<<"Enter two numbers:";cin>>a;cin>>b;min=a>b? b:a;for (d=2; d<min; d++)if (((a%d)==0)&&((b%d)==0)) break;if (d==min){ cout<<"No common denominators\n";return 0;}cout<<"The lowest common denominator is "<<endl<<d;return 0;}【2.24】写出下列程序的运行结果。
1.11.C++概述例题5:C++的合法注释是()。
A./*This is a C program/* B.// This is a C programC.“This is a C program”D.//This is a C program//答案:B分析:单行注释常采用“//”,多行注释采用“/*”和“*/”。
单行注释也可采用“/*”和“*/”,但答案A书写格式错误,不能选答案A。
注释和字符串的区别,双引号内的字符为字符串。
不能选答案C。
单行注释不需要结束符“//”,如果有,只能作为注释的一部分存在。
也不能选答案D。
例题6:下面标识符中正确的是()。
A._abc B.3ab C.int D.+ab答案:A分析:C++的标识符由字母、下划线和数字组成,而且第一个字符不能为数字。
答案B第一个字符为数字不能选B。
标识符不能为关键字,不能选答案C。
答案D第一个字符不是字母或下划线,也不能选。
例题7:分析下列该程序的错误。
输入数据格式为:2,5(回车)。
main(){ int sum=0;int a,b;cout<<"input a,b:";cin>>a>>b;sum=a+b;cout<<sum<<endl;}本程序把输入的两个数据进行累加并输出结果。
输入数据格式为:2 5。
正确程序:#include <iostream> // 编译预处理命令,以“#”开头。
把系统已经定义好的输入//输出功能包含到本程序中。
using namespace std; //使用std 名字空间int main() // 程序的主函数{ // 主函数开始int sum=0; // 定义一个变量sum存放累加结果,并且赋初值为0int a,b; // 定义两个变量,保存输入值cout<<"input a,b:"; // 提示输入cin>>a>>b; // 使用基本输入设备cin输入两个变量值sum=a+b; // 进行累加,结果保存到sum变量cout<<sum<<endl; // 使用基本输出设备cout输出累加结果sum}分析:(1)没有使用编译预处理命令:#include。
面向对象的程序设计语言――C++(第二版)-习题参考答案课后习题答案以及代码习题参考答案第1章1.填空题C++语言概述(1)函数说明,函数体(2)声明区,主程序区,函数定义区(3)多态性(4)namespace,using(5)std(6)cin,(7)//(8)对数据的操作2.判断题(1)对(2)错(3)错(4)错(5)错3.改错题(1)没有函数体,应改为void main() {};(2)语句没有分号,应改为using namespace myspace;(3)cout和操作符共同完成输出的功能,应改为cout“ Input your name:";(4)应改为#include iostream.h4.简答题5.编程题(略)(略)第2章1.选择题基本数据类型、运算符与表达式(1)B (2)D (3)B (4)D (5)B课后习题答案以及代码2.简答题(1)(a)、(c)(e)、(f)、(g)、(h)、(i)(2)(a)、(g)、(i)、(j)(3)(a)5.5(b)0(c)20(d)0,0(e)1(f)1,2(g)3(h)-40(i)2(j)3(k)s1='0's1='9'(l)N!=03.读程序写结果(1)0,15(2)(1、1、1),(-1、-1、-1)(3)(a)a*a+2*a*b+b*b(b)4.0/3.0*3.__-__R*R*R(c)5.0/9.0*(F-32)(d)b=ab=c(4)364143(5)x=14.编程题(略)第3章1.选择题(1)B (2)A (3)A (4)C2.判断题(1)错(2)对(3)对(4)错3.读程序写结果(1)C++的控制语句5)A 5)错((课后习题答案以及代码12 23 3 34 4 4 45 5 5 5 5(2)11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 1(3)j的值为0;i的值为2;4.编程题(略)第4章1.填空题函数(1)void(2)静态全局变量,static(3)函数重载(4)inline(5)递归函数(6)宏定义命令,文件包含命令,条件编译命令2.判断题(1)错(2)错(3)错(4)错(5)错(6)对(7)错(8)错(9)对(10)对3.读程序写结果(1)x=7,y=4x=9,y=5(2)34.56101(3)162228(4)12 15 18 21 24课后习题答案以及代码(5)2,1,4,1,3,2,1,4.简答题5.编程题(略)(略)第5章1.选择题构造数据类型(1)C (2)D (3)A (4)B (5)C 2.判断题(1)错(2)对(3)对(4)错(5)错3.读程序写结果(1)153(2)422 5 6 8 10(3)__,21(4)419(5)6904(6)43214.编程题(略)第6章1.填空题(1)类,对象,类(2)数据成员,成员函数(3)不能(4)private,protected,public,private (5)成员函数类和对象课后习题答案以及代码(6)friend(7)类名,作用域运算符(8)对象名.成员名,指针变量名-成员名,(*指针变量名).成员名(9)构造,析构,构造,析构(10)常量数据,引用数据(11)全局,数据类型,所属的类(12)常成员,只读(13)成员,友元(14)类数据成员,类成员函数(15)this(16)浅拷贝2.选择题(1)C (2)C (3)B (4)C (5)B(6)C (7)D (8)B (9)C (10)D(11)A (12)C (13)D (14)D (15)B3.改错题(1)man1.salary=1000.00; 不能在类外访问类的私有成员(2)float r=0;和float c=0; 类本身是抽象的,不能在类的定义体中给其数据成员赋值}后缺少分号“;”(3)成员函数void setdata(float x1,float y1,float r);没有实现(4)构造函数名point()应与类名同名,为Point没有头文件包含#include iostream.h4.读程序写结果题(1)x=0,y=0x=100,y=200(2)x=100,y=200x=1000,y=2022年t=3.14(3)Sta::fun2()=10s.fun2()=11r.a=20(4)Constructor1 called!x=0Constructor2 called!x=100Destructor called!Destructor called!(5)课后习题答案以及代码575.简答题6.编程题(略)(略)第7章1.填空题(1)继承(2)基类,派生类(3)private,protected,public,private (4)不可访问,保护,公有(5)私有(6)单(一),多(重)(7)赋值兼容规则(8)静态,动态(9)抽象类2.选择题继承和派生(1)B (2)A (3)B (4)C (5)B (6)A (7)D (8)B (9)B (10)B(11)D (12)B3.改错题(1)本题的错误主要是数据成员的访问权限问题:基类的私有成员在派生类中不可访问,如fb()函数中的a3=30;语句;类的私有和保护成员在类外不能访问,如main函数中的x.a2 =20;.a3=30; ,y.a2=200; ,y.a3=300; ,y.b2=2022年;和y.b3=3000;语句。
类和对象一、选择题1、下面对方法的作用描述不正确的是:( d )A、使程序结构清晰B、功能复用C、代码简洁D、重复代码2、方法内定义的变量:( b )A 、一定在方法内所有位置可见B、可能在方法内的局部位置可见C、在方法外可以使用D、在方法外可见3、方法的形参:(a)A、可以没有B、至少有一个C、必须定义多个形参D、只能是简单变量4、方法的调用:(c)A、必须是一条完整的语句B、只能是一个表达式C、可能是语句,也可能是表达式D、必须提供实际参数5、return 语句:( d)A、不能用来返回对象B、只可以返回数值C、方法都必须含有D、一个方法中可以有多个return 语句6、void 的含义:(d)A、方法体为空B、方法体没有意义C、定义方法时必须使用D、方法没有返回值7、main()方法的返回类型是:( c )A 、boolean B、int C、void D、static8、方法重载所涉及的方法:( a )A、有相同的名字B、参数个数必须不同C、参数类型必须不同D、返回类型必须不同9、下面关于类和对象之间关系的描述,正确的是( c )A、联接关系B、包含关系C、具体与抽象的关系D、类是对象的具体化10、下面关于java中类的说法哪个是不正确的( c )A、类体中只能有变量定义和成员方法的定义,不能有其他语句。
B、构造方法是类中的特殊方法。
C、类一定要声明为public的,才可以执行。
D、一个java文件中可以有多个class定义。
11、下列哪个类声明是正确的( d)A、public void H1{…} B 、public class Move(){…}C、public class void number{}D、public class Car{…}12、下面的方法声明中,哪个是正确的(c)A、public class methodName(){}B、public void int methodName(){}C、public void methodName(){}D、public void methodName{}13、下述哪些说法是不正确的?( b )A、实例变量是类的成员变量B、实例变量是用static关键字声明的C、方法变量在方法执行时创建D、方法变量在使用之前必须初始化14、下面对构造方法的描述不正确是( b)。
C++程序设计练习题C++程序设计实验(下)练习题⼀、类与对象1.定义⼀个名为Rectangle的矩形类:(1)数据成员为矩形的长Len和宽Wid;(2)定义有参构造函数;(3)两个成员函数Area()和Length(),分别计算并输出矩形的⾯积和周长。
(4)定义主函数,创建⼀个Rectangle类对象:长为5,宽为2。
通过调⽤成员函数输出该矩形的⾯积和周长。
2.⽇期类。
定义⼀个⽇期类Cdate属性:⼀个包括年(year)、⽉(month)和⽇(day)三个整型私有数据成员。
⽅法:定义成员函数Setdate()设置⽇期、成员函数Isleapyear()判断是否为闰年、成员函数Print()输出⽇期。
定义主函数,对上述成员函数进⾏测试。
void main(){Cdate d1; //定义对象d1.Setdate(1999,12,30); //通过对象访问成员if (d1. Isleapyear())cout<<“闰年”;elsecout<<“⾮闰年!”;d1.Print();}3.员⼯问题1.定义⼀个⽇期类Date(1)私有数据成员包括:年(int year)、⽉(int month)、⽇(int day);(2)定义构造函数:Date(int _year, int _month, int _day),对数据成员进⾏初始化;(3)定义成员函数void print() const,打印⽇期信息(打印格式:年/⽉/⽇)。
2.定义⼀个员⼯类Employee(1)私有数据成员包括:姓名(char *name)、出⽣⽇期(Date birth)、⽉⼯资(double salary);(2)定义构造函数:Employee(char *_name, int year, int month, int day, double _salary),对数据成员进⾏初始化;(3)定义析构函数:~Employee(),释放堆空间;(4)定义成员函数double computSalary(double bonus) const,计算员⼯年薪(计算公式:12×⽉⼯资+年终奖),其中参数bonus为年终奖;(5)定义成员函数void print() const,打印员⼯信息,打印格式如下图所⽰。