面向对象程序设计课后答案完整版

合集下载

C面向对象程序设计课后习题答案1~14章

C面向对象程序设计课后习题答案1~14章
c1=getchar(); //将输入的第一个字符赋给c1
c2=getchar(); //将输入的第二个字符赋给c2
cout<<"用putchar函数输出结果为:";
putchar(c1);
putchar(44);
putchar(c2);
cout<<endl;
cout<<"用cout语句输出结果为:";
putchar(c2);
cout<<endl;
cout<<"用cout语句输出结果为:";
cout<<c1<<c2<<endl;
return 0;
}
3-4-1、#include <iostream>
using namespace std;
int main ( )
{char c1,c2;
cout<<"请输入两个字符c1,c2:";
cout<<"please enter score of student:";
cin>>score;
while (score>100||score<0)
{cout<<"data error,enter data again.";
cin>>score;
}
switch(int(score/10))
{case 10:
else m=y;
if (z<m) m=z;
return(m);
}
1-8、#include <iostream>

面向对象程序设计课后答案(完整版)

面向对象程序设计课后答案(完整版)

面向对象程序设计课后答案(完整版)第二章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))//闰年。

面向对象程序设计教程 答案

面向对象程序设计教程 答案

面向对象程序设计教程答案面向对象程序设计教程第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:接口:描述类的行为,定义类应该实现的方法。

Java面向对象程序设计课后答案

Java面向对象程序设计课后答案
执行java Xiti8.class得到的错误提示
Exception in thread "main" ng.NoClassDefFoundError: Xiti8/class
执行java Xiti8得到的输出结果
I'm glad to meet you
9.属于操作题,解答略。
Exception in thread "main" ng.NoSuchMethodError: main
执行java xiti8得到的错误提示
Exception in thread "main" ng.NoClassDefFoundError: xiti8 (wrong name: Xiti8)
for(i=1;i<=1000;i++)
{ for(j=1,sum=0;j<i;j++)
{ if(i%j==0)
sum=sum+j;
}
if(sum==i)
Java面向对象程序设计
清华大学出版社
(编著 耿祥义 张跃平)
习题解答
建议使用文档结构图
(选择Word菜单→视图→文档结构图)
习题1
1.James Gosling
、、、、
2.
(1)使用一个文本编辑器编写源文件。
(2)使用Java编译器(javac.exe)编译Java源程序,得到字节码文件。
输出110
if-else语句书写的不够规范,复合语句缺少大括号“{}”,代码不够清晰。
2.你好好酷!!
3.
public class Xiti3_3

李爱华、程磊_面向对象程序设计课后答案(完整版)之欧阳体创编

李爱华、程磊_面向对象程序设计课后答案(完整版)之欧阳体创编

第二章2-4#include <iostream>using namespace std;Add(int a,int b);int main(){int x,y,sum;cout<<"please input x and y:";cin>>x>>y;sum = add(x,y);cout <<x<<"+"<<y<<"="<<sum<<endl; }Add(int a,int b){return a+b;}2-5(1)this is a C++ program.(2)x=50.6 y=10 z=Ax=216.34 y=10 z=A x=216.34 y=2 z=A x=216.34 y=2 z=E (3)x y z500 1000 0500 1500 1500 500 200 15002-6#include <iostream> using namespace std; int main(){int *p,*init;int countp=0;int countn=0;p = new int[20];init = p;for(int i=0;i<20;i++) {cin>>*p;p++;}p = p-20;for( i=0;i<20;i++){if(*p>0) countp++;if(*p<0) countn++;cout<<*p<<" ";p++;}cout<<"正数有:"<<countp<<endl;cout<<"负数有:"<<countn<<endl;p = init;delete[] p;return 0;}2-7不做要求#include <iostream>//#include <string>using namespace std;void checkagescore(string name,int age) {if (name == "exit") throw name;if(age<0||age>50)throw age;}int main(){string name;int age;for(int i=0 ;i<5 ;i++ ){cin.ignore ();getline(cin,name );cin>>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 :"<<age<<endl;}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;语句是错误的。

JAVA语言与面向对象程序设计课后习题答案

JAVA语言与面向对象程序设计课后习题答案

JAVA语言与面向对象程序设计课后习题答案第1章面向对象软件开发概述1.简述面向过程问题求解和面向对象问题求解的异同。

试列举出面向对象和面向过程的编程语言各两种。

答:面向过程问题求解,以具体的解题过程为研究和实现的主体,其思维特点更接近于计算机;面向对象的问题求解,则是以―对象‖为主体,―对象‖是现实世界的实体或概念在计算机逻辑中的抽象表示,更接近于人的思维特点。

面向过程的编程语言:C,Pascal,Foratn。

面向对象的编程语言:C++,Java,C#。

2.简述对象、类和实体及它们之间的相互关系。

尝试从日常接触到的人或物中抽象出对象的概念。

答:面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。

类是同种对象的集合与抽象。

类是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,而属于类的某一个对象则被称为是类的一个实例,是类的一次实例化的结果。

如果类是抽象的概念,如―电视机‖,那么对象就是某一个具体的电视机,如―我家那台电视机‖。

3.对象有哪些属性?什么是状态?什么是行为?二者之间有何关系?设有对象―学生‖,试为这个对象设计状态与行为。

答:对象都具有状态和行为。

对象的状态又称为对象的静态属性,主要指对象内部所包含的各种信息,也就是变量。

每个对象个体都具有自己专有的内部变量,这些变量的值标明了对象所处的状态。

行为又称为对象的操作,它主要表述对象的动态属性,操作的作用是设置或改变对象的状态。

学生的状态:姓名、性别、年龄、所在学校、所在系别、通讯地址、电话号码、入学成绩等;学生的行为:自我介绍、入学注册、选课、参加比赛等。

4.对象间有哪三种关系?对象―班级‖与对象―学生‖是什么关系?对象―学生‖与对象―大学生‖是什么关系?答:对象间可能存在的关系有三种:包含、继承和关联。

对象―班级‖与对象―学生‖是包含关系。

对象―学生‖与对象―大学生‖是继承关系。

5.有人说―父母‖和―子女‖之间是继承的关系。

C++面向对象程序设计课后答案

C++面向对象程序设计课后答案

C++面向对象程序设计课后答案习题11-1面向对象程序设计与面向过程程序设计相比有什么优点?答:优点有:(1)写程序不再是从计算机的角度考虑问题,而是站在人类思维的角度;(2)程序的可拓展性比其他不是面向对象的好;(3)能最大限度波爱护已有程序的代码。

1-2简述C++语言程序的特点。

答:C++语言是在C语言的基础上发展而来,但它比C语言更容易学习和掌握,它与C的最大区别是把函数放进了结构中,并引入了新的关键词类。

C++完美的体现了面向对象的各种特性。

1-3 C++与C语言的关系如何?它们的本质区别是什么?答:C++语言是基于C语言的基础上发展起来的。

它们的关系十分密切,很多语句之间是通用的。

它们的本质区别是C语言是面向过程的编程语言,而C++是面向对象的编程语言。

1-3组件编程有什么优点?答:组件编程的优点是它把对象技术应用于系统设计,对面向对象的程序设计的实现过程做了进一步抽象。

它强调真正的软件可重用性和高度的互操作性。

习题22-1 结构与联合有何区别?答:联合是有别于以前任何一种数据类型的特殊数据类型,它是多个成员的一个组合体,但与结构体不同,联合体的成员被分配在同一段内存空间中,它们的开始地址相同,使得同一段内存由不同的变量共享。

2-2 struct和class区别是什么?答:C++中,struct和class基本是一直的,唯一不同在于,struct中缺省权限public,class缺省权限private,即在struct和class没有写public 时,struct默认为public,class默认为private。

2-3 什么是内联函数?内联函数的优点是什么?答:C++提供一种提高效率的方法,即变异时将调用函数的代码直接嵌入到主函数中,而不是将流程转出去,这种嵌入到主函数的函数叫内联函数。

使用内联函数可以节省运行时间,提高函数的执行效率。

2-4 什么是函数重载?编译系统如何区别同名函数的不同版本?答: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功能的扩充与增强,并善于在编写程序的过程中应用这些新功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章2-4
#include <iostream>
using namespace std;
Add(int a,int b);
int main()
{
int x,y,sum;
cout<<"please input x and y:";
cin>>x>>y;
sum = add(x,y);
cout <<x<<"+"<<y<<"="<<sum<<endl;
}
Add(int a,int b)
{
return a+b;
}
2-5
(1)this is a C++ program.
(2)
x=50.6 y=10 z=A
x=216.34 y=10 z=A
x=216.34 y=2 z=A
x=216.34 y=2 z=E
(3)
x y z
500 1000 0
500 1500 1500
500 200 1500
2-6
#include <iostream>
using namespace std;
int main()
{
int *p,*init;
int countp=0;
int countn=0;
p = new int[20];
init = p;
for(int i=0;i<20;i++)
{
cin>>*p;
p++;
}
p = p-20;
for( i=0;i<20;i++)
{
if(*p>0) countp++;
if(*p<0) countn++;
cout<<*p<<" ";
p++;
}
cout<<"正数有:"<<countp<<endl; cout<<"负数有:"<<countn<<endl;
p = init;
delete[] p;
return 0;}
2-7不做要求
#include <iostream>
//#include <string>
using namespace std;
void checkagescore(string name,int age) {
if (name == "exit") throw name;
if(age<0||age>50)
throw age;
int main()
{
string name;
int age;
for(int i=0 ;i<5 ;i++ )
{
cin.ignore ();
getline(cin,name );
cin>>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 :"<<age<<endl;
}
return 0;
}
第三章
3-1
(1)A (2)C (3)B (4)C (5)C
(6)B (7)B (8)C (9)C
3-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 A
Constructing B
Destructing B
Destructing A
(2)
double a,double b
point & p
p.x
3-9
class 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-10
class 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)D
4-7
(1)
static int count = 0;这样初始化静态成员值是不对的将其改为static int count;
在类外,main函数前加
int Sample::count = 0;
(2)
#include <iostream>
//#include <cstdlib>
using 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 A
constructor B
constructor C
(2)
40
(3)
3
4
3
4-9#include<iostream.h>
#include<stdio.h>
class 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;。

相关文档
最新文档