C++面向对象程序设计实验报告
面向对象程序设计实训报告书(实训一)
如有余力,可选择:
在以上要求的基础上,设计两个方法,分别根据身份证号确定性别和出生日期,设计一个计算n个学生中成绩最好者、最差者、总成绩和平均成绩。
相关课程
教师评语
教师姓名
赵清山
实训课时数
4
备注
基本算法(用自然语言、图、表的形式,描述实现的基本思路和确定的、有限的、可行的步骤):
实现界面及主要代码:
面向对象程序设计(
完成日期:
学号
姓名
成
实训目的
加深对面向对象方法基本理论的理解。了解类的继承、重载和多态的概念,掌握类的继承、重载和先绑定多态的实现方法。熟练掌握类、对象的定义、访问和访问控制的方法。并能在项目中设计、使用简单的类,初步获得用类解决实际问题的能力。
实训结论与总结:
实训内容
及要求
1、设计一个“人(身份证号,姓名)”类,姓名公开,身份证隐藏,包括3个构建函数,其一,为初始化,其二,只输入身份证号,其三,输入身份证号和姓名。
2、根据人类,派生学生类,学生类添加学号和成绩两个成员,分别添加构造函数获得相应成员。
3、在一般方法中,至少有一个实现重载。
4、设计一个控制台应用或窗体应用,测试两个类的实现并显示1、2两项的信息(身份证号、姓名、学号、成绩)。
面向对象程序设计实训报告总结
面向对象程序设计实训报告总结面向对象程序设计是计算机科学与技术领域中重要的编程范式之一。
通过面向对象的思想,我们可以将问题分解为若干个对象,并通过对象之间的交互来解决问题。
在本次面向对象程序设计实训中,我学到了许多关于面向对象编程的知识和技能。
首先,我学会了如何定义类和创建对象。
在面向对象编程中,类是一种抽象的数据类型,用于定义对象的属性和行为。
通过定义类,我们可以创建多个对象,每个对象都有自己的属性值和方法。
在实训中,我通过定义各种类,如学生类、教师类等,来模拟一个学校管理系统。
这样,我可以根据需要实例化多个学生对象或教师对象,并对其进行操作。
其次,我学会了如何使用继承和多态。
继承是面向对象编程中的一种重要机制,通过继承,一个类可以从另一个类继承属性和方法。
在实训中,我通过创建一个基础的人类,然后从人类派生出学生类和教师类。
这样,学生类和教师类可以继承人类的属性和方法,并可以添加自己特有的属性和方法。
多态是指同一类对象在不同情况下会表现出不同的行为。
在实训中,我通过多态的方法来实现不同对象的相同方法,但具体执行的代码不同。
此外,我还学会了如何使用封装和抽象。
封装是指将对象的属性和方法封装在一起,只暴露必要的接口给外部使用。
通过封装,我们可以隐藏对象的内部细节,提高代码的安全性和可维护性。
在实训中,我使用了私有属性和公有方法来实现封装。
抽象是指将具有相同属性和行为的对象进行归类,提取出共同的特征,形成一个抽象的类。
在实训中,我通过抽象出人类作为基类,来实现学生类和教师类的继承。
总的来说,通过本次面向对象程序设计实训,我对面向对象编程有了更深入的理解。
我学会了如何定义类和创建对象,使用继承和多态,以及如何使用封装和抽象。
这些知识和技能将对我未来的编程工作有很大帮助。
我相信通过不断的实践和学习,我可以进一步提高自己的面向对象编程能力。
C++面向对象程序设计》实验报告
《C++面向对象程序设计》实验内容实验1 C++程序设计初步1.实验目的(1)了解在C++编译系统(Visual C++6.0)上如何编辑、编译、连接和运行一个C++程序。
(2)通过运行简单的C++程序, 初步了解C++源程序的结构和特点。
(3)掌握简单C++程序的编写和调试方法。
(4)掌握重载函数的定义方法。
(5)能正确使用引用型变量。
2.实验内容和步骤(1)在Visual C++环境下编译和运行C++程序①先进入Visual C++6.0环境。
②在自己指定的子目录中建立一个名为test.cpp的新文件。
③从键盘输入以下程序int main(){int a,b;c=a+b;cout>> “a+b=”>>a+b;}选择Build→Compile test.cpp命令, 对此源程序进行编译。
观察和分析编译信息。
⑤根据编译信息指出的错误, 修改程序。
再进行编译, 如果还有错, 再重复此过程, 直到编译不出错为止。
⑥选择Build→Build test.exe命令, 对程序进行连接, 如果不出错, 就会生成可执行程序test.exe。
⑦选择Build→Execute test.exe命令, 执行可执行程序test.exe。
观察屏幕的变化。
在输出窗口应显示程序运行结果。
⑧分析结果是否正确, 如果不正确或认为输出格式不理想, 可以修改程序, 然后重新执行以上④和⑧步骤。
改过后的程序:#include<iostream>using namespace std;int add(int x,int y){int z;z=x+y;return(z);}int main(){int a,b,c;cin>>a>>b;c=add(a,b);cout<<"a+b="<<c<<endl;return 0;}实验2 C++对C的扩充(2)编一个程序, 用来求2个或3个正整数中的最大数。
面向对象程序设计实验一及实验报告样式
《面向对象程序设计》实验一实验报告1 实验目的:(1)了解在VC++、C-free中如何编辑、编译、连接和运行一个C++程序;(2)掌握声明类的方法,类和类的成员的概念以及定义对象的方法(3)了解多文件的C++程序结构2 实验任务(1)输入两个整数,将它们按由大到小的顺序输出。
要求使用变量的引用;(2)编写一个程序,将两个字符串连接起来,结果取代第一个字符串;(3)声明Animal 类,数据成员有age,成员函数有SetAge()等。
首先把数据成员声明为公有的,在main()函数中访问,再把它改为私有的,指出在main()函数中访问会出现怎样的情况,如何避免?该程序需要在同一个文件中分别给出类的声明、类的实现、类的演示每部分的代码。
(4)声明日期类,数据成员有year、month、day,成员函数有输出日期、加一天等。
练习使用多文件结构来组织程序。
3 程序清单实验一:#include"iostream"using namespace std;int main(){int i,j;cout<<"input two number"<<endl;cin>>i>>j;swap(i,j);cout<<i<<","<<j<<endl;return 0;}void swap(int &a,int &b){int temp;temp=a;a=b;b=temp;}实验二:#include"iostream"#include"string"using namespace std;int main(){string string1,string2;cout<<"please input two string:";cin>>string1>>string2;string1=string1+string2;cout<<string1<<endl;return 0;}实验三:4 运行结果图1.1 任务一运行结果图2.1任务二运行结果5 总结或感悟(对运行结果所作的分析以及本次调试程序所取得的经验。
面向对象程序设计》C实验报告
面向对象程序设计》C实验报告《面向对象程序设计》实验报告学院:专业:班级学号:姓名:学期:教师:实验一 C++基础练习院(系):课程名称:面向对象程序设计教师签名:实验目的和要求1.掌握C++程序的基本格式与规范,学会编写简单的C++程序。
2.理解C++程序结构的特点。
3.熟悉C++程序基本的输入和输出操作。
4.掌握C++数据类型常量和变量以及修饰符的使用方法。
5.掌握函数定义、函数调用和函数说明的方法。
6.熟悉作用域运算符的功能和基本使用方法。
7.掌握C++内存的动态分配与释放方法。
8.理解引用的概念,掌握引用的使用方法。
实验内容和步骤1. 调试如下的代码并回答问题。
#include <iostream.h>void main(){//First c++ programchar name[10];cout<<"please input your name:";cin>>name;cout<<"welcome "<<name<<endl;}(1)C++的注释和C有何不同?答:C语言的注释有一种,用/*……….*/作为注释分界符号C++除保留了这种注释方式之外,还提供了一种更有效的注释方式,该注释以“//”开始,到行尾结束。
(2)C++的输入和输出所使用的函数及其相应头文件与C有何不同?答:在C中进行输入输出操作时,常使用函数scanf和printf。
C++除了可以照常使用这两个函数进行输入输出外,还增加了标准输入流对象cin和标准输出流对象cout来进行输入和输出。
Iostream是C++系统定义的一个头文件,在这个文件中声明了程序所需要的输入和输出操作的有关信息。
在C语言中头文件中用“.h”作为后缀,如stdio.h、math.h等。
2. 单步调试如下的代码并回答问题。
#include <iostream.h>inline int f(int x){ return 2*x*x+4*x+5; }inline double f(double x){ return 2*x*x+4*x+5; }void main(){ int x=5;double y=5.2;cout<<f(x)<<endl;cout<<f(y)<<endl;}(1)inline的含义和作用是什么?答:含义:在函数说明前冠以关键字“inline”,该函数就被声明为内联函数,每当程序中出现对该函数的调用时C++编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参取代形参。
面向对象c 实验报告
面向对象c 实验报告实验报告:面向对象C程序设计一、实验目的本次实验旨在通过设计一个面向对象的C程序,来加深对面向对象程序设计的理解,并实践C语言中面向对象的编程思想。
二、实验过程1. 设计类和对象:在C语言中,没有类的概念,但可以通过以下方式模拟类和对象。
- 定义一个结构体来表示一个类,结构体中包含该类的成员变量和成员函数指针。
- 定义一些函数来模拟类的成员函数,函数的第一个参数是结构体类型的指针,该指针指向当前对象。
2. 创建对象:定义一个结构体变量,该变量称为对象,通过调用构造函数来初始化对象的成员变量,将对象传递给成员函数。
3. 调用成员函数:使用对象调用该对象的成员函数,通过函数指针实现多态性。
4. 析构对象:在不再使用对象时,调用析构函数来释放对象占用的资源,避免内存泄漏。
5. 运行程序:编译并运行C程序,观察程序的输出结果。
三、实验结果在C语言中实现面向对象的程序设计,可以提供一种思路和方式来实现面向对象的编程思想。
通过将相关的数据和函数封装在一个表示类的数据结构中,并通过该数据结构的函数指针来调用成员函数,可以模拟出面向对象的效果。
四、实验总结通过本次实验,我对于C语言中如何实现面向对象编程有了进一步的理解。
尽管C语言本身没有类的概念,但通过结构体和函数指针的方式,我们可以模拟出类和对象的概念,并实现封装、继承和多态等面向对象的特性。
C语言中面向对象的编程思想可以使程序更加模块化、灵活和易于维护。
通过将相关的数据和函数封装在一个结构体中,我们可以将代码组织得更加清晰,降低代码的耦合度,提高代码的重用性。
此外,通过函数指针的方式来调用成员函数,可以实现多态性,使得代码更加灵活和可扩展。
当然,C语言中实现面向对象编程也存在一些限制和不足。
相比于面向对象编程语言,如C++和Java,C语言中的面向对象编程需要手动管理对象的生命周期,容易出现内存泄漏的问题。
此外,C语言中没有提供访问控制的特性,不同成员函数之间的访问权限不能进行限制。
面向对象程序设计》C实验报告-32页精选文档
《面向对象程序设计》实验报告学院:专业:班级学号:姓名:学期:教师:实验一 C++基础练习实验目的和要求1.掌握C++程序的基本格式与规范,学会编写简单的C++程序。
2.理解C++程序结构的特点。
3.熟悉C++程序基本的输入和输出操作。
4.掌握C++数据类型常量和变量以及修饰符的使用方法。
5.掌握函数定义、函数调用和函数说明的方法。
6.熟悉作用域运算符的功能和基本使用方法。
7.掌握C++内存的动态分配与释放方法。
8.理解引用的概念,掌握引用的使用方法。
实验内容和步骤1. 调试如下的代码并回答问题。
#include <iostream.h>void main()//First c++ programchar name[10];cout<<"please input your name:";cin>>name;cout<<"welcome "<<name<<endl;(1)C++的注释和C有何不同?答:C语言的注释有一种,用/*……….*/作为注释分界符号C++除保留了这种注释方式之外,还提供了一种更有效的注释方式,该注释以“//”开始,到行尾结束。
(2)C++的输入和输出所使用的函数及其相应头文件与C有何不同?答:在C中进行输入输出操作时,常使用函数scanf和printf。
C++除了可以照常使用这两个函数进行输入输出外,还增加了标准输入流对象cin和标准输出流对象cout来进行输入和输出。
Iostream是C++系统定义的一个头文件,在这个文件中声明了程序所需要的输入和输出操作的有关信息。
在C语言中头文件中用“.h”作为后缀,如stdio.h、math.h等。
2. 单步调试如下的代码并回答问题。
#include <iostream.h>inline int f(int x){ return 2*x*x+4*x+5; }inline double f(double x){ return 2*x*x+4*x+5; }void main(){ int x=5;double y=5.2;cout<<f(x)<<endl;cout<<f(y)<<endl;(1)inline的含义和作用是什么?答:含义:在函数说明前冠以关键字“inline”,该函数就被声明为内联函数,每当程序中出现对该函数的调用时C++编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参取代形参。
面向对象程序设计实验报告1
printf("c1=%d,c2=%d,c3=%d,c4=%d\n",c1,c2,c3,c4);
/*看看这些字符的10进制ASCII码,哦,ASCII码一样,同一种字符*/
/*字符型数据参与算术运算*/
c=c1+32; /*字符怎么参加了数学运算,哦,是字符对应的ASCII码-整数
if(a[j] < a[j + 1])
{
int tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
int result = 0;
int cou = 100;
for(i = 0;i < 3;i++)
{
result += a[i] * cou;
cou /= 10;
}
cout<<"the result is :"<<result<<endl;
main()
{
int x=010,y=10,z=0x10; /*整型数据表示*/
char c1='M',c2='\x4d',c3='\115',c4=77,c; /*字符型数据表示*/
/*整型数据的输出*/
printf("x=%o,y=%d,z=%x\n",x,y,z);
/*数据以原进制输出,注意是否有前导0或0x */
c++;
else
if(score>=60)
d++;
else e++;
面向对象程序设计实验报告
面向对象程序设计实验报告实验报告(1)2015.6【实验作者】学号:姓名:班级:教学站:【实验名称】实验一:熟悉C++程序的风格和C++程序的上机全过程【实验目的】1.熟悉C++程序的风格,熟悉实验环境。
2.练习C++程序的输入、修改、编译、连接与运行的全过程。
3.本实验有4个程序【实验内容】1. 习题2.2下面是一个C程序,改写它,使它采用C++风格的I/O语句。
(1)该程序做什么工作?输入两个整数,求两个整数的大于1 的最小公约数[(另外请教下毛老师:如果最小公约数与最小数相等时,我觉得也有可能这个数是两个数的大于1 的最小公约数)即7与14的公约数为1,7按题意的话,要大于1,那么7也是这两个数的最小公约数,但程序不认为它们具有公约数]。
(2)该程序中那几个数是由键盘输入的?那几个数是输出的?那几个数是临时变量?a与b 由键盘输入;d 是输出的;a,b,d,min 都是临时变量。
(3)用C++风格的I/O语句是什么?#include <iostream.h> cout<<与cin>>(4)写出该程序的算法(用流程图表示)框图1:(5)该程序你有否上机编译、连接、运行通过。
有上机编译连接并运行通过,但有些疑问!2. 习题 2.20分析下面程序的输出结果:(1)该程序做什么工作?利用引用函数改变一个变量的值。
(2)该程序有几个函数?其中f函数是什么函数?其功能是什么?一个函数,F函数是一个引用返回值的函数,并且该函数参数也为一个引用,函数功能是送入一个对变量引用,将变量+10后送回。
成为对返回值的引用。
(3)写出该程序的算法(用流程图表示)框图2:(4)该程序你有否上机编译、连接、运行通过。
该程序有上机编译并连接运行通过。
3. 习题2.23 建立一个被称为sroot( )的函数,返回其参数的二次根。
重载sroot( )三次,让它分别返回整数、长整数与双精度数的二次根(为了实际计算二次根,可以使用标准库函数sqrt( ))。
面向对象程序设计实训报告总结
面向对象程序设计实训报告总结
面向对象程序设计实训是我在大学期间参与的一门实践课程,通过这门课程的学习和实践,我对面向对象程序设计的理论和实践有了更深入的了解和掌握。
在实践过程中,我首先学习了面向对象程序设计的基本概念和原则,掌握了类、对象、继承、多态等重要概念和特性。
我了解到面向对象程序设计是一种将现实世界的事物抽象为类和对象的编程范式,可以更好地理解和模拟现实世界的复杂系统。
接着,我学习了面向对象程序设计的基本语法和语义,包括类的定义、对象的创建和使用、方法的定义和调用等。
我通过编写简单的程序来实践这些概念和语法,加深了对面向对象程序设计的理解。
在实践过程中,我还学习了面向对象程序设计的设计原则和模式。
我了解到设计原则是指导面向对象程序设计的准则,如开闭原则、单一职责原则、迪米特法则等。
这些原则可以帮助我们设计出高质量、可扩展和易维护的程序。
同时,我也学习了一些常用的设计模式,如工厂模式、单例模式、观察者模式等,这些模式可以帮助我们解决特定的设计问题。
通过实践,我发现面向对象程序设计可以提高代码的可读性、可维护性和可重用性。
通过将复杂系统拆分为多个类和对象,可以更好地组织和管理代码。
面向对象程序设计的设计原则和模式可以帮助我们设计出更好的系统架构和代码结构。
总的来说,面向对象程序设计实训是一门非常有价值的课程,通过这门课程的学习和实践,我对面向对象程序设计有了更深入的了解和掌握。
这门课程不仅提高了我的编程能力,还培养了我的系统设计和分析能力。
我相信这门课程对我未来的职业发展也有很大的帮助。
面向对象程序设计实验报告
面向对象程序设计实验报告面向对象程序设计实验报告一、引言面向对象程序设计(Object-Oriented Programming,简称OOP)是一种广泛应用于软件开发的编程范式。
本实验旨在通过实践,加深对面向对象程序设计的理解,并掌握其基本概念和技巧。
二、实验目的1. 理解面向对象程序设计的基本概念和思想;2. 掌握类、对象、继承、封装、多态等面向对象的核心概念;3. 运用面向对象的思想设计和实现一个简单的程序。
三、实验过程1. 设计类和对象在本次实验中,我们选择实现一个简单的学生管理系统。
首先,我们需要设计一个学生类(Student),包括学生的姓名、年龄、学号等属性,并定义相关的方法,如获取学生信息、修改学生信息等。
然后,我们创建多个学生对象,模拟学生管理系统中的多个学生。
2. 继承和多态为了进一步理解继承和多态的概念,我们可以设计一个教师类(Teacher),继承自学生类。
教师类除了继承学生类的属性和方法外,还可以定义自己特有的属性和方法。
通过创建教师对象,我们可以看到继承和多态的效果。
3. 封装和访问控制在面向对象程序设计中,封装是一个重要的概念。
我们可以将学生类的属性设置为私有(private),并通过公有(public)的方法来访问和修改属性。
这样做的好处是可以保护属性的安全性,同时提供统一的接口供外部使用。
四、实验结果通过实验,我们成功地实现了一个简单的学生管理系统。
我们可以创建学生对象,并通过调用相关方法来获取和修改学生的信息。
同时,我们还实现了教师类,通过继承和多态的特性,我们可以灵活地使用学生和教师对象。
五、实验总结通过本次实验,我们深入了解了面向对象程序设计的基本概念和思想。
通过设计和实现一个简单的程序,我们掌握了类、对象、继承、封装、多态等核心概念,并学会了如何运用这些概念来设计和实现面向对象的程序。
面向对象程序设计具有很多优点,如代码的可重用性、可维护性、可扩展性等。
通过合理地设计类和对象,我们可以更好地组织和管理代码,提高开发效率和代码质量。
面向对象程序设计课程实验报告
课程实验报告课程名称:面向对象程序设计院系:专业班级:学号:姓名:指导教师:目录实验一.面向过程的整型栈编程 (1)1.需求分析 (1)1.1题目要求 (1)1.2需求分析 (2)2.系统设计 (2)2.1概要设计 (2)2.2详细设计 (3)4.软件测试 (5)5.特点与不足 (6)5.1技术特点 (6)5.2不足和改进的建议 (6)6.过程和体会 (6)6.1遇到的主要问题和解决方法 (6)6.2课程设计的体会 (7)7.源码和说明 (7)7.1文件清单及其功能说明 (7)7.2用户使用说明书 (7)7.3源代码 (7)实验二.面向对象的整型栈编程 (17)1.1题目要求 (17)1.2需求分析 (18)2.系统设计 (18)2.1概要设计 (18)2.2详细设计 (18)3.软件开发 (20)4.软件测试 (20)5.特点与不足 (20)5.1技术特点 (20)5.2不足和改进的建议 (21)6.过程和体会 (21)6.1遇到的主要问题和解决方法 (21)6.2课程设计的体会 (21)7.源码和说明 (21)7.1文件清单及其功能说明 (21)7.2用户使用说明书 (21)7.3源代码 (21)实验三.基于算符重载的整型栈编程 (27)1.需求分析 (27)1.2需求分析 (28)2.系统设计 (28)2.1概要设计 (28)2.2详细设计 (28)3.软件开发 (29)4.软件测试 (29)5.特点与不足 (29)5.1技术特点 (29)5.2不足和改进的建议 (29)6.过程和体会 (30)6.1遇到的主要问题和解决方法 (30)6.2课程设计的体会 (30)7.源码和说明 (30)7.1文件清单及其功能说明 (30)7.2用户使用说明书 (30)7.3源代码 (30)实验四. 面向对象的整型队列编程 (35)1.需求分析 (35)1.1题目要求 (35)2.系统设计 (36)3.软件开发 (36)4.软件测试 (36)5.特点与不足 (37)5.1技术特点 (37)5.2不足和改进的建议 (37)6.过程和体会 (37)6.1遇到的主要问题和解决方法 (37)6.2课程设计的体会 (37)7.源码和说明 (37)7.1文件清单及其功能说明 (37)7.2用户使用说明书 (38)7.3源代码 (38)实验五. 基于组合的整型队列编程 (43)1.需求分析 (43)1.1题目要求 (43)1.2需求分析 (44)2.系统设计 (44)4.软件测试 (44)5.特点与不足 (45)5.1技术特点 (45)5.2不足和改进的建议 (45)6.过程和体会 (45)6.1遇到的主要问题和解决方法 (45)6.2课程设计的体会 (45)7.源码和说明 (45)7.1文件清单及其功能说明 (45)7.2用户使用说明书 (45)7.3源代码 (46)实验六. 基于继承的整型队列编程 (52)1.需求分析 (52)1.1题目要求 (52)1.2需求分析 (53)2.系统设计 (53)3.软件开发 (53)4.软件测试 (53)5.1技术特点 (54)5.2不足和改进的建议 (54)6.过程和体会 (54)6.1遇到的主要问题和解决方法 (54)6.2课程设计的体会 (54)7.源码和说明 (55)7.1文件清单及其功能说明 (55)7.2用户使用说明书 (55)7.3源代码 (55)实验一.面向过程的整型栈编程1.需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。
面向对象程序设计实验报告
namespace _1
{
class Program
{
static void Main(string[] args)
{
int[][] jagArray=new int[2][]{new int[5],new int[3]};
for (int i = 0; i < jagArray.GetLength(0); i++)
(2)在代码编辑窗口内的Main()方法中添加如下代码:
using System;
namess HelloWorld
{
public static void Main()
{
Console.WriteLine("Hello world!");
}
}
}
(1)选择“调试” “启动调试”命令,或按【F5】键,或单击工具栏上的 按钮,运行程序,查看运行结果。
}
for (int i = 0; i < 5; i++)
{
for (int j = 0; j <= i;j++ )
Console.WriteLine("{0}\t", a[i, j]);
Console.WriteLine();
}
Console.Read();
}
}
}
(10)分析程序,写出程序的运行结果,并上机进行验证。
Console.Write("{0,-3}",jagArray[k][m]);
Console.WriteLine();
}
Console.Read();
}
面向对象程序设计C++实验报告书1
//取得计数器值 //给原值加 1 //给原值减 1
//显示计数
int main() {
Counter c; cout<<"number="; c.getvalue(); c.increment(); cout<<"increment="; c.print(); c.decrement(); cout<<"decrement="; c.print(); return 0; }
cout<<"给定的日期不正确,将以默认值初始化!"<<endl; setDate(1900,1,1); return ; } year=yr; month=mo; day=dy; } int Date::getDay(){ return day; } int Date::getMonth(){ return month; } int Date::getYear(){ return year; } void Date::print(){ cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl; } bool Date::isLeapYear(){ if((year%4==0&&year%100!=0)||(year%400==0))return true; else return false; } int Date::monthDays(){
date.print(); //system("pause"); return 0; } 四、上机结果及分析 1、
计算机科学与技术-C++程序设计-实验面向对象程序设计实验报告-面向对象的整型栈编程实验报告
程实验报一、需求分析1. 题目要求整型栈是一种先先出地存储结构,对其行地操作通常包含:向栈顶压入一个整型元素,从栈顶弹出一个整型元素。
整型栈类STACK采用之前定义地两个QUEUE类模拟一个栈,其操作函数采用面向对象地C++语言定义,请将完成上述操作地所有如下函数采用C++语言编程, 然后写一个main函数对栈地所有操作函数行测试,请不要自己添加定义任何新地函数成员与数据成员。
class STACK : public QUEUE {QUEUE q;public:STACK(int m); //初始化栈:最多存放二m-二个元素STACK(const STACK& s); //用栈s深拷贝初始化栈STACK(STACK&& s)noexcept; //用栈s移动拷贝初始化栈int size()const noexcept; //返回栈地容量即二moperator int() const noexcept; //返回栈地实际元素个数STACK& operator<<(int e); //将e入栈,并返回当前栈STACK& operator>>(int& e); //出栈到e,并返回当前栈STACK& operator=(const STACK& s); //深拷贝赋值并返回被赋值栈STACK& operator=(STACK&& s)noexcept;//移动赋值并返回被赋值栈char * print(char *b)const noexcept; //从栈底到栈顶打印栈元素~STACK()noexcept; //销毁栈};编程时应采用VS二零一九开发,并将其编译模式设置为X八六模式,其它需求注意地事项说明如下:(一)在用STACK(int m)对栈初始化时, 为其基类与成员q地elems分配m个整型元素内存,并初始化基类与成员q地max为m,以与初始化对应地head=tail=零。
计算机科学与技术-C++程序设计-实验面向对象程序设计实验报告-面向对象的矩阵运算编程实验报告
const int r, c;
//矩阵的行 r 和列 c 大小
public:
MAT(int r, int c);
//矩阵定义
MAT(const MAT& a);
//深拷贝构造
MAT(MAT&& a)noexcept;
//移动构造
virtual ~MAT()noexcept;
virtual T* const operator[ ](int r);//取矩阵 r 行的第一个元素地址,r 越界抛异常
a.print(t);
//初始化矩阵后输出该矩阵
b[0][0] = 3; b[0][1] = 4; //调用 T* const operator[ ](int r)初始化数组元素
-1-
面向对象程序设计实验报告
b[1][0] = 5; b[1][1] = 6; b.print(t); c = a * b; c.print(t); (a + c).print(t); c = c - a; c.print(t); c += a; c.print(t); c = ~a; c.print(t); return 0; }
virtual MAT operator+(const MAT& a)const; //矩阵加法,不能加抛异常
virtual MAT operator-(const MAT& a)const; //矩阵减法,不能减抛异常
virtual MAT operator*(const MAT& a)const; //矩阵乘法,不能乘抛异常
课程实验报告
课程名称:面向对象程序设计 实验名称:面向对象的矩阵运算编程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int fn(int n) {
int s=1; for(int i=1;i<=n;i++) {
s=s*i; } cout<<"n!="<<s<<endl; return s; }
int Cnr(int n,int r) {
cout<<"Please input two numbers:"<<endl; for(;;) { cin>>n>>r; if(n==0&&r==0) {
[实验步骤] 1. 用数组实现程序要求
说明:用一个长度为10的数组存放待排序的数据,数组的定义为 int iArray[10]; 数组排序函数的原型为:
void sort(int num, int iArray[]); 其中num表示数组元素的个数,iArray是数组。
2. 用动态申请空间的方式实现程序要求。 说明:使用指针来实现前面数组的功能 int *piArray; piArray = new int(num);
double area(double x) {
return X=3.14*x*x; } friend double circumference(double x); private: double X; };
double circumference(double x) { double Y; return Y=2*3.14*x; }
int main() {
Cnr(0,0); return 0; } 程序输出: (1)
(2) (3)
2、
1、add、dec 的函数体定义在类的内部
3、GetNum 的函数体定义在类的外部内联函数的使用:定义一个 TestInline
类,该类拥有两个私有整型变量 i,j,为该类添加 3 个内联函数 int add()返回两数之
程序输出: 300 450 500 600 700 [实现要求]:
1. 用一个数组存放各个整数; 2. 在主函数main()中实现数据的输入和输出操作,并用一个函数实现对数组元
素的排序操作。 3. 排序函数调用另一个函数swap()实现两个数组元素的交换。可以使用指针、引用两种方 式实现函数参数的传递:
实验四 复杂数据类型 实验目的 学习数组的定义、初始化、赋值和使用的方法 学习给函数传递数组的方法 学习指针和引用的定义和使用方法 学习字符串的使用方法 学习用指针和引用给函数传递参数 实验内容
1. 数组排序
从键盘读入若干整数,将它们按由低到高排序输出。 [测试数据]: 程序先输出: Please input array number: 用户输入: 5 程序再输出: Please input all the integer: 用户输入: 300 700 600 450 500
Student() {
number=0; name[10]='\0'; age=0; }
Student(int x,char *y,int z); ~Student();
private: int number; char name[10]; int age;
};
Student::Student(int x,char *y,int z) {
实验三 类的定义和使用
一、实验目的 掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性; 掌握类对象的定义; 理解类的成员的访问控制的含义,公有、私有和保护成员的区别; 掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构 造函数。能够根据给定的要求定义类并实现类的成员函数; 掌握友元函数的含义,友元函数和成员函数的区别。 二、实验内容 1、定义一个圆类,计算圆的面积和周长。 要求:分别用成员函数和友元函数来求圆的面积和周长。 2、定义一个学生类,其中有 3 个数据成员有学号、姓名、年龄,以及若干成员函数。同时 编写主函数使用这个类,实现对学生数据的赋值和输出。 要求: 1、使用成员函数实现对输出的输入、输出; 2、使用构造函数和析构函数实现对数据的输入、输出。 3、定义日期类型 Date。要求有以下面成员: 可以设置日期; 日期加一天操作;
程序二: 定义一个学生类,其中有 3 个数据成员有学号、姓名、年龄,以及若干成员函数。 同时编写主函数使用这个类,实现对学生数据的赋值和输出。 程序代码: #include<iostream.h> #include<string.h>
class Student { public:
input1(int xuehao,char xingming[10],int nianling) {
把它和倒数第二个元素交换为止。 如要按选择排序法对数组30 50 21 39 20排序,则各趟排序后的结果如下所示(带下划线的 数表示参加交换的数): 开始: 30 50 21 39 20 第一趟排序:U20U 50 21 39 U30U 第二趟排序:20 U21U U50U 39 30 第三趟排序:20 21 U30U 39 U50U 第四趟排序:20 21 30 39 50
输入函数,输入格式为“XXXX 年 XX 月 XX 日”。 三、实验要求 写出程序,并调试程序,经验和体会。 完成实验日志和上交程序。
程序一:定义一个圆类,计算圆的面积和周长。 程序代码: #include<iostream.h>
class circle { public:
其中数组的大小num需要由用户预先输入。 [思考问题]
1. 上面两种实现方式对程序的改动大吗? 2. 尝试用不同的方式访问数组中的元素 iArray[i], *(iArray+i), piArray[i], *(piArray+i), 3. iArray和piArray有何共同点?
程序代码: #include<iostream.h> void swap(int *a,int *b) {int c; c=*a; *a=*b; *b=c; } void paixu(int *a,int n) {int i,j; for(j=0;j<n-1;j++)
number=x; strcpy(name,y); age=z; }
Student::~Student() {
cout<<"Number:"<<number<<endl; cout<<"Name:"<<name<<endl; cout<<"Age:"<<age<<endl; }
void main() {
程序输出:
2. 字符排序
修改上面的程序,将数组的操作改为对字符串操作,即从键盘输入一串字符,将它们存放在 字符数组中(形成一个字符串),然后对字符数组中的各个字符排序。 [测试数据]: 输入内容:kapdobc 输出内容:abcdkop [实现要求]:
1. 用字符数组代替上一个实验的整数数组; 2. 不要先输入字符串的长度,在程序中自动计算出字符串的长度。
return i+j; } int dec() {
return i-j; } int GetNum(); private: int i; int j; };
inline int TestInline::GetNum() {
return j; }
#include<iostream.h> int main() {
int a,b; cout<<"Please input two numbers:"<<endl; cin>>a>>b; TestInline T(a,b); cout<<"ADD="<<T.add()<<endl; cout<<"DEC="<<T.dec()<<endl; cout<<"j="<<T.GetNum()<<endl; return 0; } 程序输出:
int x; char y[10]; int z; Student T; T.input1(x,y,z); T.output1(); cout<<"Please input student's number, name and age."<<endl; cin>>x; cin>>y; cin>>z; Student(x,y,z); } 程序输出:
int main() {
double r; double a; double c; cout<<"Please input r."<<endl; cin>>r; circle T; a=T.area(r); cout<<"area="<<a<<endl; c=circumference(r); cout<<"circumference="<<c<<endl; return 0; } 程序输出:
for(i=j;i<n-1;i++) {if(*(a+j) > *(a+i+1)) swap(a+j,a+i+1); }}
void main() {int i,n; cout<<"请输入需排序的整数个数:"; cin>>n; cout<<endl; int *a; a=new int(n); cout<<"请依次输入这些数:"<<endl; for(i=0;i<n;i++) {cin>> *(a+i);} paixu(a,n); cout<<"排序后的顺序为:"; for(i=0;i<n;i++) {cout<<*(a+i)<<" ";} }