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

合集下载

面向对象程序设计实训报告书(实训一)

面向对象程序设计实训报告书(实训一)
实训拓展
如有余力,可选择:
在以上要求的基础上,设计两个方法,分别根据身份证号确定性别和出生日期,设计一个计算n个学生中成绩最好者、最差者、总成绩和平均成绩。
相关课程
教师评语
教师姓名
赵清山
实训课时数
4
备注
基本算法(用自然语言、图、表的形式,描述实现的基本思路和确定的、有限的、可行的步骤):
实现界面及主要代码:
面向对象程序设计(
完成日期:
学号
姓名

实训目的
加深对面向对象方法基本理论的理解。了解类的继承、重载和多态的概念,掌握类的继承、重载和先绑定多态的实现方法。熟练掌握类、对象的定义、访问和访问控制的方法。并能在项目中设计、使用简单的类,初步获得用类解决实际问题的能力。
实训结论与总结:
实训内容
及要求
1、设计一个“人(身份证号,姓名)”类,姓名公开,身份证隐藏,包括3个构建函数,其一,为初始化,其二,只输入身份证号,其三,输入身份证号和姓名。
2、根据人类,派生学生类,学生类添加学号和成绩两个成员,分别添加构造函数获得相应成员。
3、在一般方法中,至少有一个实现重载。
4、设计一个控制台应用或窗体应用,测试两个类的实现并显示1、2两项的信息(身份证号、姓名、学号、成绩)。

面向对象程序设计实训报告总结

面向对象程序设计实训报告总结

面向对象程序设计实训报告总结面向对象程序设计是计算机科学与技术领域中重要的编程范式之一。

通过面向对象的思想,我们可以将问题分解为若干个对象,并通过对象之间的交互来解决问题。

在本次面向对象程序设计实训中,我学到了许多关于面向对象编程的知识和技能。

首先,我学会了如何定义类和创建对象。

在面向对象编程中,类是一种抽象的数据类型,用于定义对象的属性和行为。

通过定义类,我们可以创建多个对象,每个对象都有自己的属性值和方法。

在实训中,我通过定义各种类,如学生类、教师类等,来模拟一个学校管理系统。

这样,我可以根据需要实例化多个学生对象或教师对象,并对其进行操作。

其次,我学会了如何使用继承和多态。

继承是面向对象编程中的一种重要机制,通过继承,一个类可以从另一个类继承属性和方法。

在实训中,我通过创建一个基础的人类,然后从人类派生出学生类和教师类。

这样,学生类和教师类可以继承人类的属性和方法,并可以添加自己特有的属性和方法。

多态是指同一类对象在不同情况下会表现出不同的行为。

在实训中,我通过多态的方法来实现不同对象的相同方法,但具体执行的代码不同。

此外,我还学会了如何使用封装和抽象。

封装是指将对象的属性和方法封装在一起,只暴露必要的接口给外部使用。

通过封装,我们可以隐藏对象的内部细节,提高代码的安全性和可维护性。

在实训中,我使用了私有属性和公有方法来实现封装。

抽象是指将具有相同属性和行为的对象进行归类,提取出共同的特征,形成一个抽象的类。

在实训中,我通过抽象出人类作为基类,来实现学生类和教师类的继承。

总的来说,通过本次面向对象程序设计实训,我对面向对象编程有了更深入的理解。

我学会了如何定义类和创建对象,使用继承和多态,以及如何使用封装和抽象。

这些知识和技能将对我未来的编程工作有很大帮助。

我相信通过不断的实践和学习,我可以进一步提高自己的面向对象编程能力。

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

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实验报告《面向对象程序设计》实验报告学院:专业:班级学号:姓名:学期:教师:实验一 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程序,来加深对面向对象程序设计的理解,并实践C语言中面向对象的编程思想。

二、实验过程1. 设计类和对象:在C语言中,没有类的概念,但可以通过以下方式模拟类和对象。

- 定义一个结构体来表示一个类,结构体中包含该类的成员变量和成员函数指针。

- 定义一些函数来模拟类的成员函数,函数的第一个参数是结构体类型的指针,该指针指向当前对象。

2. 创建对象:定义一个结构体变量,该变量称为对象,通过调用构造函数来初始化对象的成员变量,将对象传递给成员函数。

3. 调用成员函数:使用对象调用该对象的成员函数,通过函数指针实现多态性。

4. 析构对象:在不再使用对象时,调用析构函数来释放对象占用的资源,避免内存泄漏。

5. 运行程序:编译并运行C程序,观察程序的输出结果。

三、实验结果在C语言中实现面向对象的程序设计,可以提供一种思路和方式来实现面向对象的编程思想。

通过将相关的数据和函数封装在一个表示类的数据结构中,并通过该数据结构的函数指针来调用成员函数,可以模拟出面向对象的效果。

四、实验总结通过本次实验,我对于C语言中如何实现面向对象编程有了进一步的理解。

尽管C语言本身没有类的概念,但通过结构体和函数指针的方式,我们可以模拟出类和对象的概念,并实现封装、继承和多态等面向对象的特性。

C语言中面向对象的编程思想可以使程序更加模块化、灵活和易于维护。

通过将相关的数据和函数封装在一个结构体中,我们可以将代码组织得更加清晰,降低代码的耦合度,提高代码的重用性。

此外,通过函数指针的方式来调用成员函数,可以实现多态性,使得代码更加灵活和可扩展。

当然,C语言中实现面向对象编程也存在一些限制和不足。

相比于面向对象编程语言,如C++和Java,C语言中的面向对象编程需要手动管理对象的生命周期,容易出现内存泄漏的问题。

此外,C语言中没有提供访问控制的特性,不同成员函数之间的访问权限不能进行限制。

面向对象程序设计》C实验报告-32页精选文档

面向对象程序设计》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

面向对象程序设计实验报告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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序代码: #include<iostream.h>
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)<<" ";} }
相关文档
最新文档