文档库 最新最全的文档下载
当前位置:文档库 › 面向对象程序设计习题讲解(参考)

面向对象程序设计习题讲解(参考)

面向对象程序设计习题讲解(参考)
面向对象程序设计习题讲解(参考)

实验1:熟悉开发环境,简单的VC++开发

实验目的:熟悉Visual C++6.0的开发环境;学习用Visual C++6.0编写标准的C++控制台程序

实验内容:

课后习题:1.4,1.6,1.7

1.4 模仿本课件中的例题,编写下列C++语句:

a)输出信息“Enter two numbers”。

b)将输入的两个整数读入变量a与b中

c)将变量a和b的乘积赋给变量c

d)打印“a*b=”,加上变量c的值。

1.6下列代码打印出什么结果?

cout<<"*\n**\n***\n****\n*****\n";

1.7模仿本章的程序例子,编写一个完整程序,从键盘输入三个值,打印其和、平均数、最小值和最大值。

实验报告要求:将习题1.7的实验过程与结果写到实验报告上。#include

main(){

int a,b,c;

cin>>a>>b>>c;

int sum=a+b+c;

cout<<"a+b+c= "<

cout<<"average= "<<(double)sum/3<

int min=a,max=a;

if(min>b)

min=b;

else

max=b;

if(min>c)

min=c;

else if(max

max=c;

cout<<"min= "<

cout<<"max= "<

}

实验2:从C到C++

实验目的:掌握C++对C的非面向对象特性的扩展。实验内容:

1.以下这个简短的C++程序不能编译通过,为什么?#include

main(){

int a,b,c;

cout<<"Enter two numbers:";

cin>>a>>b;

c=sum(a,b);

cout<<"sum is:"<

return 0;

}

sum(int a,int b)

{return a+b;}

2.回答问题:

如下两个函数的原型是否等价:

float fun(int a,float b,char *c); float fun(int ,float ,char *c); 如下两个函数是否等价:

int fun();

int fun(viod);

如下两个函数是否等价:

fun(int a);

void fun(int a);

3.分析下面程序的输出结果:

#include

int &f(int &i){

i+=10;

return i;}

void main(){

int k=0;

int &m=f(k);

cout<

m=20;

cout<

}

4.建立一个被称为sroot()的函数,返回其参数的二次根。重载sroot()两次,让它分别返回整数、双精度数的二次根。(为了实际的计算二次根,可以使用标准库函数sqrt()).

double sroot(int a){return sqrt(a);}

double sroot(double a){return sqrt(a);}

5.编写一个程序,用C++风格的I/O从键盘中输入两个整数,然后显示以第一个数为底,第二个数为指数的结果。(例如用户输入2与4,那么结果就是16)

实验报告要求:将第4题与第5题的源代码及实验结果写到实验报告上。

main( )

{ int a,b;

cin>>a>>b;

int c=1;

for(int I=0;I

cout<

}

实验3名称:类的定义和使用

实验目的:掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;掌握对象的定义;理解类的成员的访问控制的含义,公有、私有成员的区别;掌握构造函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数。

实验内容:

1、建立类box,box的构造函数被传递了三个double值,每一

个double值表示盒子的一条边长。用box类计算立方体的

体积,并存储在一个double变量中。在box类中包含一个

成员函数vol(),用来显示每个box对象的体积。

#include

class box {

int width,height,length;

public:

box(double w,double h,double l)

{ width=w;height=h; length=l; }

double vol( )

{double v=width*height*length; return v;}

};

main()

{

box b(1,2,3);

cout<

}

2、定义一个类score,它含有私有数据成员english_score(英

语分数)、公有成员函数setscore()和printscore(),其中setscore()用来设english_score的值,printscore()用来输出english_score的值。在主程序中第一类score的两个对象stu1和stu2,其英语成绩分别为85.5和93.5,输出这两个分数。

3、下面是一个计算器类的定义,请完成该类的实现:

class counter{

int value;

public:

counter(int number);

void increment();//给原值加1

void decrement();//给原值减1

int getvalue(); //取得计数器值

void print(); //显示计数器值

};

4、定义日期类型Date。要求有以下面成员:

1)可以设置日期;

2)日期加一天操作;

3)输出函数,输出格式为“XXXX年XX月XX日”。

参考解答:

#include

class Date{

private:

int y,m,d;

bool Isleap( );

public:

Date( ){y=2000;m=1;d=1;}

void setDate(int year,int month,int day );

void IncreDate( );

void print( ){cout<

void Date::setDate(int year,int month,int day)

{

if(year>0)

y=year;

else

y=2000;

if(0

m=month;

else

m=1;

if((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&

0

d=day;

else if((m==4||m==6||m==9||m==11)&&0

else if(Isleap()&&m==2&&0

else if(!(Isleap())&&m==2&&0

else

day=1;

}

bool Date::Isleap(){

if(y%400==0||y%4==0&&y%100!=0)

return true;

else

return false;

}

void Date::IncreDate(){

d++;

if(d==31&&( m==4||m==6||m==9||m==11)){

d=1;

m++;

}

if((m==1||m==3||m==5||m==7||m==8||m==10)&&d==32) {

d=1;

m++;

}

if(Isleap()&&m==2&&d==30)

{d=1;

m=3;

}

if(m==2&&d==29&&!Isleap())

{

d=1;

m=3;

}

if(m==12&&d==32)

{

m=1;

d=1;

y++;

}

}

main(){

Date t1;

int y1,m1,d1;

cin>>y1>>m1>>d1;

t1.setDate(y1,m1,d1);

t1.IncreDate();

t1.print();

t1.IncreDate();

t1.print();

}

5、定义一个学生类,其中有3个数据成员有学号、姓名、年龄,以及若干成员函数。同时编写主函数使用这个类,实现对学生数据的赋值和输出。

要求:

1)使用成员函数实现对数据的输入、输出;

2)使用构造函数和析构函数。

参考解答:

class student{

private:

char sno[20];

char *name;

int age;

public:

student(char *s,char *n,int a);

~student();

void setdata(char *s,char *n,int a);

void print()

};

实验要求

1、写出程序,并调试程序,要给出测试数据和实验结果。

2、整理上机步骤,总结经验和体会。

3、(2题和3题的源程序、测试数据和实验结果)写到实验报告上。

第四章书面作业和上机作业题目

书面作业:题目1和题目5

上机作业:题目1、2、3、4、5

题目1:自定义一个简单的复数类complx,如下:

class complex{

double real;//复数的实部

double imag;//复数的虚部

public:

complex(double r=0,double i=0);

void inCom();

complex addCom(complex c2);//调用者对象与对象c2相加

complex subCom(complex c2);

complex mulCom(complex c2);

void outCom(); //输出调用者的有关数据(各分量)};

请完成各个成员函数,并编制主函数,说明complex类对象,对定义的各个成员函数进行调用,

以验证它们的正确性。

提示:(a+bi)(c+di)=ac+adi+bci+bdi2=(ac-bd)+(ad+bc)i

题目2 改错题目:

#include

class sam {

int a;

int b;

public:

sam(){

a=1;

b=1;

}

sam(int a,int b){

a=a;

b=b;

}

void plus(sam p){

sam c;

c.a=a+p.a;

c.b=b+p.b;

return c;}

void print()

{cout<<"a= "<

a=0;

b=0;

}

~mycla(){

cout<<"destructor!"<<"a="<

cout<<", b="<

void show(){

cout<<"a= "<

void main(){

fraction f1(-2,-3),f2(3,-5),f3;

f1.print();

f2.print();

f3=f1.add(f2);

f3.print();

}

实验4名称:类和对象的使用

实验目的:

理解类的复合的含义,掌握子对象的初始化方式;理解this指针的实质,掌握this指针的用法;

学习友元函数和友元类的使用;

掌握const特性,理解常对象和常成员函数的作用;

掌握自定义头文件的方法,学会建立和调试多文件程序。

实验内容:

1、定义复数类Complex,并使用友元函数实现复数的加法、减法、乘法,所有函数都返回Complex对象。

2、对如下圆柱类Column的定义:

class Column{

public:

Column(double x,double y,double r,double h);

~Column();

double area();

double volume();

private:

double height;

double radius;

double x;

double y;

};

要求:

a)实现类Column中的四个成员函数;

c++面向对象程序设计大作业

《面向对象程序设计》 大作业 题目学生成绩管理系统 学院 专业 班级 姓名 指导教师 2015 年11 月11 日

目录 一大作业的目的 (1) 二大作业的内容............................ . .. (2) 三大作业的要求与数据............... ...... . (3) 四大作业应完成的工作.................. . (4) 五总体设计(包含几大功能模块)........... . (5) 六详细设计(各功能模块的具体实现算法——流程图) (6) 七调试分析(包含各模块的测试用例,及测试结果) (7) 八总结 (8) 十参考资料 (9)

一大作业的目的 《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。 二大作业的内容 对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 三大作业的要求与数据 1、用C++语言实现系统; 2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出. 3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能: (1) 每一条记录包括一个学生的学号、姓名、3门课成绩 (2)、成绩信息录入功能:(成绩信息用文件保存,可以一次完成若干条记录 的输入。) (3)、成绩信息显示浏览功能:完成全部学生记录的显示。 (4)、查询功能:完成按姓名查找学生记录,并显示。 (5)成绩信息的删除:按学号进行删除某学生的成绩. (6)、排序功能:按学生平均成绩进行排序。 (7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

材料科学基础习题及参考答案复习过程

材料科学基础习题及 参考答案

材料科学基础参考答案 材料科学基础第一次作业 1.举例说明各种结合键的特点。 ⑴金属键:电子共有化,无饱和性,无方向性,趋于形成低能量的密堆结构,金属受力变形时不会破坏金属键,良好的延展性,一般具有良好的导电和导热性。 ⑵离子键:大多数盐类、碱类和金属氧化物主要以离子键的方式结合,以离子为结合单元,无方向性,无饱和性,正负离子静电引力强,熔点和硬度均较高。常温时良好的绝缘性,高温熔融状态时,呈现离子导电性。 ⑶共价键:有方向性和饱和性,原子共用电子对,配位数比较小,结合牢固,具有结构稳定、熔点高、质硬脆等特点,导电能力差。 ⑷范德瓦耳斯力:无方向性,无饱和性,包括静电力、诱导力和色散力。结合较弱。 ⑸氢键:极性分子键,存在于HF,H2O,NF3有方向性和饱和性,键能介于化学键和范德瓦尔斯力之间。 2.在立方晶体系的晶胞图中画出以下晶面和晶向:(1 0 2)、(1 1 -2)、(-2 1 -3),[1 1 0],[1 1 -1],[1 -2 0]和[-3 2 1]。

(213) (112) (102) [111] [110] [120] [321] 3. 写出六方晶系的{1 1 -20},{1 0 -1 2}晶面族和<2 -1 -1 0>,<-1 0 1 1>晶向族中各等价晶面及等价晶向的具体指数。 {1120}的等价晶面:(1120)(2110)(1210)(1120)(2110)(1210) {1012}的等价晶面: (1012)(1102)(0112)(1012)(1102)(0112)(1012)(1102)(0112)(1012)(1102)(0112) 2110<>的等价晶向:[2110][1210][1120][2110][1210][1120] 1011<>的等价晶向: [1011][1101][0111][0111][1101][1011][1011][1101][0111][0111][1101][1011] 4立方点阵的某一晶面(hkl )的面间距为M /,其中M 为一正整数,为 晶格常数。该晶面的面法线与a ,b ,c 轴的夹角分别为119.0、43.3和60.9度。请据此确定晶面指数。 h:k:l=cos α:cos β:cos γ l k h d a 2 22hk l ++= 5. Cu 具有FCC 结构,其密度为8.9g/cm 3,相对原子质量为63.546,求铜的原子半径。

面向对象程序设计实验指导书讲解

面向对象程序设计实验指导书 实验一、C++开发环境应用入门(2学时)(选做) 1、实验目的 (1)了解C++开发工具的特点 (2)熟悉C++开发环境 (3)学习用C++编写标准的C++程序 2、实验任务 使用C++来建立一个非图形化的标准C++程序,编译、运行下例程序: #include void main(void) { cout<<”Hello!\n”; cout<<”Welcome to C++!\n”; } 3、实验步骤 (1)启动Visual C++或C++Builder开发环境 (2)创建一个项目 A)单击File菜单中的New选项,显示示新建对话框 B)选择Console Wizard(C++Builder) 或Win32 Console Application(VC++)。 C)选择项目所在路径及输入项目的名称 D)依次按‘下一步’直至完成为止。 (3)至此,C++Builder已经建立好工程相关的文件(请不要随意更改其自动生成的文件),在生成的main函数中写入必要的内容即可。 (4)对于VC,请继续下面的步骤: A)建立C++源程序文件 a)选选菜单命令Project|Add to Project|New,弹出New对话框 b)在New对话框的Files选项卡中选择C++ Source File,并填入文件名称,单击OK按钮,完成 新建C++源程序文件 B)编辑C++源程序文件 a)在文件编辑窗口中输入代码 b)完成后,选择菜单File|Save保存这个文件 C)建立并运行可执行程序 a)选择菜单命令Build,建立可执行程序 如果你正确输入了源程序,此时便成功地生成了可执行程序。 如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源 程序进行修改后,重新选择菜单命令Build建立可执行程序。 b)选择菜单命令Run,运行程序,观察屏幕显示内容。 D)关闭工作空间 选择菜单命令File|Colse WorkSpace关闭工作空间。

面向对象程序设计 C 复习题

一选择题(共 45题) 1.对类的构造函数和析构函数描述正确的是()。 A.构造函数可以重载,析构函数不能重载√ B.构造函数不能重载,析构函数可以重载 C.构造函数可以重载,析构函数也可以重载 D.构造函数不能重载,析构函数也不能重载 2.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。 A)规律性 B.传递性√ C.重复性 D.多样性 3.假设OneClass为一个类,则该类的复制初始化构造函数的声明语句为()。 (OneClass p); B. OneClass& (OneClass p ); C. OneClass(OneClass & p);√ D. OneClass (OneClass * p); 4.对于结构中定义的成员,其默认的访问权限为()。 B. protected D. static 5.下面对静态数据成员的描述中,不正确的是()。 A.静态数据成员可以在类体内进行初始化√ B.静态数据成员不可以在类体内进行初始化 C.静态数据成员能受private控制符的作用 D.静态数据成员调用前必须初始 6. C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。 A.复用 B.继承√ C.封装 D.引用 7. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a 的格式为()。 A. x(a) B. x[a] C. x->a D. √ 9. 对于一个类的构造函数,其函数名与类名( )。 A. 完全相同√ B. 基本相同 C. 不相同 D. 无关系 10. 一个类的构造函数通常被定义为该类的( )成员。 A. 公有√ B. 保护 C. 私有 D. 友元 11. 一个类的析构函数通常被定义为该类的( )成员。 A. 私有 B. 保护 C. 公有√ D. 友元 12. 一个类的静态数据成员所表示属性 ( )。 A. 是类的或对象的属性 B. 只是对象的属性 C. 只是类的属性√ D. 类和友元的属性 13.类的析构函数的作用是()。 A.一般成员函数 B.类的初始化 C.对象初始化D.删除对象之前的善后工作√ 14.下列对基类和派生类关系的描述中,错误的是()。 A.派生类是基类的具体化B.派生类是基类的子集√ C.派生类是基类定义的延续 D.派生类是基类的组合 15.下列对派生类的描述中,错误的是()。 A.一个派生类可以作为另一个派生类的基类 B.派生类至少有一个基类 C.派生类的缺省继承方式是private D.派生类只继承了基类的公有成员和保护成员√ 16.下列对继承的描述中,错误的是()。 A.析构函数不能被继承

2016年电大面向对象程序设计技术-作业题

2015秋季学期计算机科学与技术本科 《面向对象程序设计技术》作业题 (在电大在线该课程讨论区跟帖提交,注明姓名和学号以记录成绩)选择题 1.可以在本类及派生类的成员函数中进行访问的访问控制修饰符是(B) A.private B.protected C.public 2.在IDE中将编程项目采用多文件结构下,类的定义一般放在(A) A.头文件 B.程序文件 C.主程序文件 3.内联成员函数在类外定义时要将其和类定义一起放在(A) A.头文件 B.程序文件 C.主程序文件 4.下面哪个内存区域是C++中的运行时动态内存分配区域?( D ) A.代码区 B.栈区 C.数据区 D.堆区 5.对象作为函数参数使用时,一般使用(A)形式 A.引用 B.指针 C.对象拷贝

6.同类的多个不同对象的数据成员值各有不同,但不同对象可以共享类的成员函数代码, 实际调用成员函数时,是通过(B )来区分不同对象的。 A.显式给出不同对象不同地址 B.隐含的this指针 C.引用 7.下面哪一种情况不会自动调用拷贝构造函数。(E) A.用一个对象初始化另一个对象时 B.当一个对象作为值传递给一个函数时 C.当一个对象作为值从一个函数返回之前,该对象被拷贝到栈区 D.函数调用结束后,栈区中的返回对象拷贝给主调程序的对象 E.建立指向对象的指针并初始化指针值时 8.下列哪些对象的数据成员类型可以不用初始化表的方式进行初始化(D) A.常量数据成员 B.引用数据成员 C.类中对象成员 D.一般数据成员 9.下列哪一种类设计一般无需在类中设计静态数据成员以使建立的多个对象共享静态数 据数据成员。( D ) A.一个链表类的头指针和尾指针 B.一个学生类中用于保存建立了多少个学生对象的计数器 C.银行帐号类中的年利率 D.一般只用于建立一个对象的类 10.一个类中的公有(public)性质的静态数据成员,以下哪一种访问方式是错误的(D) A.对象名.静态数据成员名 B.指向对象的指针—>静态数据成员名 C.类名::静态数据成员名 D.类名.静态数据成员名 11.下列哪一个运算符不能够被类所重载(E) A.“.”成员访问运算符 B.“*”成员指针访问运算符 C.“::”域运算符 D.“?:”条件运算符 E.“=”赋值运算符

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

材料科学基础习题与答案

第二章思考题与例题 1. 离子键、共价键、分子键和金属键的特点,并解释金属键结合的固体材料的密度比离子键或共价键固体高的原因 2. 从结构、性能等方面描述晶体与非晶体的区别。 3. 何谓理想晶体何谓单晶、多晶、晶粒及亚晶为什么单晶体成各向异性而多晶体一般情况下不显示各向异性何谓空间点阵、晶体结构及晶胞晶胞有哪些重要的特征参数 4. 比较三种典型晶体结构的特征。(Al、α-Fe、Mg三种材料属何种晶体结构描述它们的晶体结构特征并比较它们塑性的好坏并解释。)何谓配位数何谓致密度金属中常见的三种晶体结构从原子排列紧密程度等方面比较有何异同 5. 固溶体和中间相的类型、特点和性能。何谓间隙固溶体它与间隙相、间隙化合物之间有何区别(以金属为基的)固溶体与中间相的主要差异(如结构、键性、性能)是什么 6. 已知Cu的原子直径为A,求Cu的晶格常数,并计算1mm3Cu的原子数。 7. 已知Al相对原子质量Ar(Al)=,原子半径γ=,求Al晶体的密度。 8 bcc铁的单位晶胞体积,在912℃时是;fcc铁在相同温度时其单位晶胞体积是。当铁由bcc转变为fcc时,其密度改变的百分比为多少 9. 何谓金属化合物常见金属化合物有几类影响它们形成和结构的主要因素是什么其性能如何

10. 在面心立方晶胞中画出[012]和[123]晶向。在面心立方晶胞中画出(012)和(123)晶面。 11. 设晶面(152)和(034)属六方晶系的正交坐标表述,试给出其四轴坐标的表示。反之,求(3121)及(2112)的正交坐标的表示。(练习),上题中均改为相应晶向指数,求相互转换后结果。 12.在一个立方晶胞中确定6个表面面心位置的坐标,6个面心构成一个正八面体,指出这个八面体各个表面的晶面指数,各个棱边和对角线的晶向指数。 13. 写出立方晶系的{110}、{100}、{111}、{112}晶面族包括的等价晶面,请分别画出。 14. 在立方晶系中的一个晶胞内画出(111)和(112)晶面,并写出两晶面交线的晶向指数。 15 在六方晶系晶胞中画出[1120],[1101]晶向和(1012)晶面,并确定(1012)晶面与六方晶胞交线的晶向指数。 16.在立方晶系的一个晶胞内同时画出位于(101),(011)和(112)晶面上的[111]晶向。 17. 在1000℃,有W C为%的碳溶于fcc铁的固溶体,求100个单位晶胞中有多少个碳原子(已知:Ar(Fe)=,Ar(C)=) 18. r-Fe在略高于912℃时点阵常数a=,α-Fe在略低于912℃时a=,求:(1)上述温度时γ-Fe和α-Fe的原子半径R;(2)γ-Fe→α-Fe转变时的体积变化率;(3)设γ-Fe→α-Fe转变时原子半径不发生变化,求此转变时的体积变

《面向对象程序设计》实验指导书

《面向对象程序设计》课程实验指导书

实验一 Java开发环境的安装与配置 一、实验目的: 1. 掌握JDK、Eclipse的安装步骤。 2. 理解环境变量PATH, CLASSPATH的作用,以及Eclipse的配置。 3. 熟悉Eclipse的编辑、编译与调试环境,编写简单的Application程序 编译执行并完成调试。 二、实验内容: 熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序 (能输出一条简单的问候信息); 三、实验要求: 1. 能正确地安装JDK 2. 熟悉环境变量PATH, CLASSPATH设置方法,熟悉编辑环境 3. 调试程序、编译,运行后得到正确的结果 四、实验步骤: 1.从https://www.wendangku.net/doc/8a10251370.html,/technetwork/java/index.html上下载最新版本的JDK,并安装。 2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。 3.在Eclipse环境下编写一个HelloWorld.java程序, (1)在主方法static public void main(String[ ] args)中调用System. out.println()方法,使程序输出一条问候信息; (2) 编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用 javac.exe和java.exe编译和执行程序)

实验二 Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.编写Java Application程序,输出1900年到2000年之间的所有润年。 (闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.金字塔:Pyramid.java 在屏幕上显示一个由星型符号“*”组成的金字塔图案,示例如下: * *** ***** ******* 要求:金字塔高度h,可以由用户设置。 三、实验要求: 1. 正确使用Java语言的选择语句,循环语句; 2. 调试程序、编译,运行后得到正确的结果 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成 示,并给出解决办法。 四、实验步骤: 1.编写主类; 2.在static public void main(String[ ] args)方法中加入实现要求功能 的代码,主要步骤如下: (第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。 (第二题)允许用户设置金字塔高度。 4. 编译运行程序,观察输出结果是否正确。

面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A )实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于.*包的是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法( A ) A) int addValue( int a, int b ){return a+b;}

材料科学基础习题及答案

《材料科学基础》习题及答案 第一章 结晶学基础 第二章 晶体结构与晶体中的缺陷 1 名词解释:配位数与配位体,同质多晶、类质同晶与多晶转变,位移性转变与重建性转变,晶体场理论与配位场理论。 晶系、晶胞、晶胞参数、空间点阵、米勒指数(晶面指数)、离子晶体的晶格能、原子半径与离子半径、离子极化、正尖晶石与反正尖晶石、反萤石结构、铁电效应、压电效应. 答:配位数:晶体结构中与一个离子直接相邻的异号离子数。 配位体:晶体结构中与某一个阳离子直接相邻、形成配位关系的各个阴离子中心连线所构成的多面体。 同质多晶:同一化学组成在不同外界条件下(温度、压力、pH 值等),结晶成为两种以上不同结构晶体的现象。 多晶转变:当外界条件改变到一定程度时,各种变体之间发生结构转变,从一种变体转变成为另一种变体的现象。 位移性转变:不打开任何键,也不改变原子最邻近的配位数,仅仅使结构发生畸变,原子从原来位置发生少许位移,使次级配位有所改变的一种多晶转变形式。 重建性转变:破坏原有原子间化学键,改变原子最邻近配位数,使晶体结构完全改变原样的一种多晶转变形式。 晶体场理论:认为在晶体结构中,中心阳离子与配位体之间是离子键,不存在电子轨道的重迭,并将配位体作为点电荷来处理的理论。 配位场理论:除了考虑到由配位体所引起的纯静电效应以外,还考虑了共价成键的效应的理论 图2-1 MgO 晶体中不同晶面的氧离子排布示意图 2 面排列密度的定义为:在平面上球体所占的面积分数。 (a )画出MgO (NaCl 型)晶体(111)、(110)和(100)晶面上的原子排布图; (b )计算这三个晶面的面排列密度。 解:MgO 晶体中O2-做紧密堆积,Mg2+填充在八面体空隙中。 (a )(111)、(110)和(100)晶面上的氧离子排布情况如图2-1所示。 (b )在面心立方紧密堆积的单位晶胞中,r a 220= (111)面:面排列密度= ()[] 907.032/2/2/34/222==?ππr r

C++面向对象程序设计实验报告

C++面向对象程序设计实验报告 学院:信息科学与技术学院 班级:卓越电子1201 姓名:刘强 学号:120910115 实验二 C++面向过程程序设计 实验目的 掌握函数声明、定义和使用的方法 掌握函数递归调用的方法 实验内容 1、编写一个函数,求数列运算中从n个不同的数中取r个数的所有选择的个数,要求如下:主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入0 0时,程序结束; 能检查输入数据的合法性,要求n>=1并且n>=r; 能得到正确结果。 输入:5 3输出:10 输入:10 20;输出:Input Invalid !; 输入:-1 4;输出:Input Invalid!; 步骤: 利用一个函数fn(int n)计算n!, 利用另一个函数Cnr(int n, int r)计算Cnr,在该函数中调用fn(), 程序代码: #include int fn(int n) { int s=1; for(int i=1;i<=n;i++) { s=s*i; } cout<<"n!="<

int Cnr(int n,int r) { cout<<"Please input two numbers:"<>n>>r; if(n==0&&r==0) { cout<<"Programme shutdown."<=1&&n>=r) { int a; int b; int c; int d; a=fn(n); b=fn(r); c=fn(n-r); d=a/(b*c); cout<

材料科学基础试题及答案

第一章 原子排列与晶体结构 1. fcc 结构的密排方向是 ,密排面是 ,密排面的堆垛顺序是 ,致密度 为 ,配位数是 ,晶胞中原子数为 ,把原子视为刚性球时,原子的半径r 与 点阵常数a 的关系是 ;bcc 结构的密排方向是 ,密排面是 ,致密度 为 ,配位数是 ,晶胞中原子数为 ,原子的半径r 与点阵常数a 的关系 是 ;hcp 结构的密排方向是 ,密排面是 ,密排面的堆垛顺序是 , 致密度为 ,配位数是 ,,晶胞中原子数为 ,原子的半径r 与点阵常数a 的关系是 。 2. Al 的点阵常数为0.4049nm ,其结构原子体积是 ,每个晶胞中八面体间隙数 为 ,四面体间隙数为 。 3. 纯铁冷却时在912e 发生同素异晶转变是从 结构转变为 结构,配位数 , 致密度降低 ,晶体体积 ,原子半径发生 。 4. 在面心立方晶胞中画出)(211晶面和]211[晶向,指出﹤110﹥中位于(111)平面上的 方向。在hcp 晶胞的(0001)面上标出)(0121晶面和]0121[晶向。 5. 求]111[和]120[两晶向所决定的晶面。 6 在铅的(100)平面上,1mm 2有多少原子?已知铅为fcc 面心立方结构,其原子半径 R=0.175×10-6mm 。 第二章 合金相结构 一、 填空 1) 随着溶质浓度的增大,单相固溶体合金的强度 ,塑性 ,导电性 ,形成间 隙固溶体时,固溶体的点阵常数 。 2) 影响置换固溶体溶解度大小的主要因素是(1) ;(2) ; (3) ;(4) 和环境因素。 3) 置换式固溶体的不均匀性主要表现为 和 。 4) 按照溶质原子进入溶剂点阵的位置区分,固溶体可分为 和 。 5) 无序固溶体转变为有序固溶体时,合金性能变化的一般规律是强度和硬度 ,塑 性 ,导电性 。 6)间隙固溶体是 ,间隙化合物 是 。 二、 问答 1、 分析氢,氮,碳,硼在a-Fe 和g-Fe 中形成固溶体的类型,进入点阵中的位置和固 溶度大小。已知元素的原子半径如下:氢:0.046nm ,氮:0.071nm ,碳:0.077nm ,硼: 0.091nm ,a-Fe :0.124nm ,g-Fe :0.126nm 。 2、简述形成有序固溶体的必要条件。 第三章 纯金属的凝固 1. 填空

面向对象程序设计实验报告完整版

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 综合实验报告 面向对象程序设计 专业名称: 物联网工程 ___班级: _____ 级2班__ ___________姓名: 你哥哥 学号: 02051928 信息科学与工程学院 二零一三年七月

第一题: (1) 1.1题目概述 (1) 1.2设计思路 (2) 1.3设计说明与调试分析 (2) 1.4编码实现 (2) 1.5程序运行结果 (5) 1.6设计心得 (5) 第二题: (6) 2.1题目概述 (6) 2.2设计思路 (7) 2.3设计说明与调试分析 (7) 2.4编码实现 (7) 2.5程序运行结果 (11) 2.6设计心得 (11)

第一题: 1.1题目概述 用抽象类设计计算二维平面图形图形面积的程序, 在基类TDshape中设计纯虚函数area()和printName(), area()用于计算几何图形的面积, printName()用于打印输出几何图形的类名, 如Triangle类的对象就打印输出”Triangle”。每个具体形状的类则从抽象类TDshape派生, 各自需要定义其它独有的数据成员和成员函数, 而且定义area()和printName()的具体实现代码, 如图所示。 要求编写以TDshape为接口的函数, 借以访问具体类如

Triangle和Rectangle类的成员函数area(), printName ()。1.2设计思路 由简到繁, 逐步实现。 1.3设计说明与调试分析 编写基类TDshape->编写虚函数->编写继承类Triangle ->实例化TDshape和Triangle ->调用基类虚函数实现调用继承类相应函数->同样的方式处理继承类Rectangle. 1.4编码实现 #include using namespace std; class TDshape{ public: virtual void area()=0; virtual void printName()=0; }; class Triangle:public TDshape{ private: double width,height;

面向对象程序设计大作业(C++)

面向对象分析/设计课程大作业 银行业务处理系统 13级软件学院测试班 1367004029 曾丹 1.需求分析 随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。 现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如

何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。 近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。 随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。 特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。 主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实现的完成存取事件。此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以轻松的实现存取款。 系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、注销等功能。 储蓄卡开户管理模块:卡号、姓名、开户金额、身份证号、地址、电话、密码、确认密码和保存组成。(开户金额必须是数字,密码和确认密码必须一样是六位数字) *注销模块:一旦注销该卡号就不存在且余额提醒你取出。 通过该银行账户管理系统地运行,使办公人员可以轻松快捷的完成对账户管理的任务,提高账目管理效率,使银行的账目管理工作系统化、规范化、自动化。 该银行帐目管理信息系统,优点是设计过程思路清晰、模块划分简洁,设计各阶段分工明确。经过实践证明,该划分是合理的,极大得提高了本系统的实现。

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

材料科学基础经典习题及答案

第一章 材料科学基础 1.作图表示立方晶体的()()()421,210,123晶面及[][ ][]346,112,021晶向。 2.在六方晶体中,绘出以下常见晶向[][][][][]0121,0211,0110,0112,0001等。 3.写出立方晶体中晶面族{100},{110},{111},{112}等所包括的等价晶面。 4.镁的原子堆积密度和所有hcp 金属一样,为0.74。试求镁单位晶胞的体积。已知Mg 的密度3 Mg/m 74.1=mg ρ,相对原子质量为24.31,原子半径r=0.161nm 。 5.当CN=6时+Na 离子半径为0.097nm ,试问: 1) 当CN=4时,其半径为多少?2) 当CN=8时,其半径为多少? 6. 试问:在铜(fcc,a=0.361nm )的<100>方向及铁(bcc,a=0.286nm)的<100>方向,原子的线密度为多少? 7.镍为面心立方结构,其原子半径为nm 1246.0=Ni r 。试确定在镍的 (100),(110)及(111)平面上12mm 中各有多少个原子。 8. 石英()2SiO 的密度为2.653Mg/m 。试问: 1) 13 m 中有多少个硅原子(与氧原子)? 2) 当硅与氧的半径分别为0.038nm 与0.114nm 时,其堆积密度为多少(假设原子是球形的)? 9.在800℃时1010个原子中有一个原子具有足够能量可在固体内移动, 而在900℃时910个原子中则只有一个原子,试求其激活能(J/原子)。 10.若将一块铁加热至850℃,然后快速冷却到20℃。试计算处理前后空位数应增加多少倍(设铁中形成一摩尔空位所需要的能量为104600J )。 11.设图1-18所示的立方晶体的滑移面ABCD 平行于晶体的上、下底面。若该滑移面上有一正方形位错环,如果位错环的各段分别与滑移面各边平行,其柏氏矢量b ∥AB 。 1) 有人认为“此位错环运动移出晶体后,滑移面上产生的滑移台阶应为4个b ,试问这种看法是否正确?为什么? 2)指出位错环上各段位错线的类型,并画出位错运动出晶体后,滑移方向及滑移量。 12.设图1-19所示立方晶体中的滑移面ABCD 平行于晶体的上、下底面。晶体中有一条位错线de fed ,段在滑移面上并平行AB ,ef 段与滑移面垂直。位错的柏氏矢量b 与de 平行而与ef 垂直。试问:1) 欲使de 段位错在ABCD 滑移面上运动而ef 不动,应对晶体施加怎样的应

面向对象程序设计作业参考答案

习题一 5、分析下面程序运行的结果。 # using namespace std; int main() { cout<<”This”<<”is”; cout<<”a”<<”C++”; cout<<”program.”< using namespace std; int main() { int a,b,c; a = 10; b = 23; c = a + b; cout<<'a + b ="; cout< using namespace std; int main() { int a, b; a = b = 0; int c = a + b; cout<<”a + b =”<

9、输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,在进行编译,直到没有错误,然后进行连接和运行,分析运行结果。 修改后的程序如下: #include using namespace std; int add(int x,int y); int main() { int a = 0, b = 0; int c = add(a,b); cout<<" a + b ="<

面向对象程序设计基本概念

面向对象程序设计基本概念 面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 对象:对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。 类:类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。 消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。 面向对象主要特征: 封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。 继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。 多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。

相关文档
相关文档 最新文档