C ++ 实验报告

2024-10-30

C ++ 实验报告(精选9篇)

C ++ 实验报告 篇1

姓名:XX 学院:XXX 班级:XXX 学号:XXX

i++;

} while(i<=10);cout<<“sum=”<

#include using namespace std;void main(){ int i(1),sum(0);

for(i;i<=10,i++)

{

sum+=i;

}

cout<<“sum=”< using namespace std;const float pi=3.1416;void main(){ int itype;

cout<<“不是合法的输入”< using namespace std;struct riqi { int year;int mon;int day;int hour;int minut;int second;};void main(){ riqi a;cout<<“输入时间日期”<>a.year;cout<<“输入月份”<

实验

三、函数的应用(2学时)

1、实验目的:

掌握函数的定义和调用方法。练习重载函数使用。练习函数模板的使用 练习使用系统函数。

在main()函数中提示输入两个整数x,y,使用cin语句得到x,y的值,调用pow(x,y)函数计算x的y次幂的结果,再显示出来。程序名:lab3_4.cpp。

编写递归函数int fib(int n),在主程序中输入n的值,调用fib函数计算Fibonacci级数。公式为fib(n)=fib(n-1)+fib(n-2),n>2;fib(1)=fib(2)=1。使用if语句判断函数的出口,在程序中用cout语句输出提示信息。程序名:lab3_5.cpp。

7)调试操作步骤如下:

选择菜单命令Build|Start Debug |Step In,系统进入单步执行状态,程序开始运行,并出现一个DOS窗口,此时光标停在main()函数的入口处。

把光标移到语句answer=fib(n)前,从Debug菜单单击Run To Cursor,在程序运行的DOS窗口中按提示输入数字10,这时回到可视界面中,光标停在第11行,观察一下n的值。

从Debug菜单中单击Step Into,程序进入fib函数,观察一下n的值,把光标移到语句return(fib(n-2)+fib(n-1))前,从Debug菜单单击Run to Cursor,再单击Step Into,程序递归调用fib函数,又进入fib函数,观察n的值。

继续执行程序,参照上述的方法,观察程序的执行顺序,加深对函数调用和递归调用的理解。

再试试Debug菜单栏中的别的菜单项,熟悉Debug的各种方法。

4、实验原理

C++中函数的重载使得同样的函数名下,只要参数类型、数目不同时,即可根据输入的数据进行相应的函数调用,使用起来简单方便。

5、思考与体会

C++中,函数的运用与之前学过的C语言既有相同之处,也有着不同的地方。相同的地方在于格式、用法等框架上的不变。但是C语言中对于同样的函数名是只能够申明一种函数的,倘若有相同的函数名出现系统即会报错,所以用起来有时是极为不便

0

//参数为两个双精度浮点形的函数 int max1(double a,double b){ a=a>b?a:b;return a;} //参数为三个双精度浮点形的函数 int max1(double a,double b,double c){ a=a>b?a:b;a=a>c?a:c;return a;} void main(void){ int a;double b;a=max1(1,2);cout<

Lab3_3: #include using namespace std;int max1(int a,int b){ a=a>b?a:b;return a;} int max1(int a,int b,int c){ a=a>b?a:b;a=a>c?a:c;return a;}

int main(){ int i,j,k;cout<<“请输入要比较的3个数:

”<

2131415

public: Rank rank;int frequency;float voltage;CPU(Rank r,int f,float v){

//构造函数

cout<<“构造了一个CPU”<

rank=r;

frequency=f;

voltage=v;} void run(){

cout<<“CPU开始运行”<

} void stop(){

cout<<“CPU停止运行”<

cout<<“RANK=”<

cout<<“frequency=”<

cout<<“voltage=”<

};

int main(){ CPU cpu(p5,500,2000);cpu.run();cpu.show();cpu.stop();return 0;}

Lab4_2 #include using namespace std;enum Rank{p1=1,p2,p3,p4,p5,p6,p7};//CPU类 class CPU{ public:

//析构函数-17

computer(Rank r,int f,float v){

CPU cpu(r,f,v);

//定义CPU对象

RAM ram(1);

//定义RAM对象

CDROM cdrom(1);

//定义CDROM对象

cpu.run();

cpu.show();

cpu.stop();} };int main(){ computer com(p4,300,3000);return 0;}

实验

七、继承与派生(一、二)4学时

1、实验目的:

学习定义和使用类的继承关系,定义派生类。熟悉不同继承方式下对基类成员的访问控制。学习利用虚基类解决二义性问题

2、实验任务 a)定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。b)定义一个基类BaseClass,有整型成员变量Number ,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。c)定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车类有高度(height)等属性,汽车类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。

3、实验步骤

编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示:

error C2248:’age’:cannot access private member declared in class ‘Animal’

error C2248:’age’:cannot access private member declared in class ‘Animal’

把age改为公有成员变量后重新编译就可以了。程序名为:lab7_1.cpp

0

确方便我们编程。

6、部分参考代码

Lab7_1 #include using namespace std;

class Animal{

public: int age;};

class dog:public Animal{ public: int SetAge(int n){

age=n;

return age;} };

void main(void){ int age;dog d;age=d.SetAge(3);cout<<“age=”<

Lab7_2 #include using namespace std;class BaseClass{ public: int Number;BaseClass(){

cout<<“这是父类的构造函数”<

cout<<“这是父类的析构函数”<

//Motorcycle继承bicycle和motorcar类

class motorcycle:public bicycle,public motorcar{ public: motorcycle(int seat,double H,double MS,double W){

SeatNum=seat;

height=H;

MaxSpeed=MS;

Weight=W;} void show(){

cout<<“seatnum=”<

cout<<“height=”<

cout<<“MaxSpeed=”<

cout<<“weight=”<

int main(){ motorcycle che(3,30.33,90.84,500);che.show();return 0;} 实验

八、多态性2学时

1、实验目的:

掌握运算符重载的方法

习使用虚函数实现动态多态性。

2、实验任务

a)定义Point类,有坐标x,y两个成员变量;对Point类重载“++”、“--”运算符,实现对坐标值的改变。

定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函的作用。

3、实验步骤

编写程序定义Point类,在类中定义整型的私有成员变量x,y,定义成员函数Point& operator++();Point operator++(int);以实现对Point类重载“++”运算符,定义成函数Point& operator –();Point operator

也就是函数的重载。

6、部分参考代码

Lab8_1 #include using namespace std;

class Point{ public: Point(double x=0.0,double y=0.0):xray(x),yray(y){} Point operator++(int);Point operator--(int);void show();private: double xray;double yray;};

Point Point::operator++(int){ return Point(xray++,yray++);}

Point Point::operator--(int){ return Point(xray--,yray--);}

void Point::show(){ cout<<“x坐标为”<

int main(){ Point p(4.5,6.5);cout<<“进行运算前的情况:”<

show(&v);return 0;}

C ++ 实验报告 篇2

1)学生不明确实验的目的,对实验内容没什么兴趣,不了解这门实验课程的意义,面对这个基础的计算机语言,学生总是着眼于当下流行计算机语言,忽视了这门课程的基础地位,对之不够重视。

2)有些学生虽然学得很认真,但是不能灵活地掌握和运用,对书本中的语法和程序死记硬背,和实际开发脱节,最终解决不了实际问题,在机房实验,不知从何入手,一片茫然,没有解决的思路学生上课时听得很明白了,但是在面对问题时还是素手无策,无从下手。

1 实验教学的探讨

实验教学应该注重对学生的分析问题、解决问题和自学能力的培养,引导学生突破传统的思维方式。在C++实验中,不仅要培养学生的读、写程序能力,还要加强他们调试程序的能力。

1.1 优化入门实验,提高学生的实验兴趣

在高校教学内容设置中,C++的课程在C语言课之后讲,学生会在C语言的基础上思考问题,比如说C语言中的输入用“scanf”输出用“printf”,而C++中用“cin”和“cout”,在实验内容中可以让学生对比记忆这两处的不用,这样会重拾学生的信心,激发学生的兴趣。除此之外,C语言是C++的子集,所以C语言的代码在C++中也可以运用。把这两种语言优化的学习起来,可以把这两门课都结合起来学习,做到融会贯通。这样可以设计成验证性的实验和简单定义的实验。例:定义一个类。这个类要分两大部分:说明部分和实现部分。说明部分来说明类中的成员的数据成员和成员函数即方法。定义了类的public(公有的)、private(私有的)和protected(保护的)访问权限。类的实现部分主要用来对一些在类体内只说明没定义的成员函数进行定义。程序结构代码如下:

1.2 设计针对性的实验

针对性较强的实验可以考察学生对程序的判断和校正的能力,对程序的测试和程序代码优化能力等方面的培养。实验上机从语句的输入输出定义开始,逐渐加深,为了更容易明白程序的逻辑结构可以先分析程序的结构和程序的流程。

1.3 实验内容精选典型题目

选择典型、有代表性的问题,增加学习的兴趣。教师尽可能的选择那些具有代表意义的题目,这样学生会记忆深刻,面对实际问题,也有了编程的思想。C++语言的特点就是多态性、重载性、继承和封装,这块是难点,也是重点。如能加深练习,对这学科的学习有非常重大的意义。

1.4 设计综合性的实验

在做完验证性等简单的实验练习之后,开设课程设计实验课,设计短期任务与长期任务相结合的实验内容,拿一个大题目作为长期任务,再把它分成各个功能模块,形成一个短期任务。学过一块知识点就完成一块的编程作业,每次的作业不是独力的,是相互联系的,是一个较大的复杂的程序组成部分,形成一种连贯性。在整个学科的学习中都有一个前驱动力,让学生一点点的完成每次编程。这个过程增强了学生的学习热情,提高了学生能力。

1.5 协作学习组织实验

协作学习由David W.和Roger R.Jonson教授提出。是通过小组或团队组织学生进行学习的一种形式,目前已经成为一种学习模式。协作学习通常协作小组、成员、辅导教师和协作学习环境四个要素组成。这种学习方法教师充当的作用是指导和协调学生的协作情况,充分发挥团队精神。这个对以后的工作环境,是个模拟的样本。同学们可以互相讨论,在互联网上共享、分享自己的学习心得和总结结论,发散思维,创新求证。

2 结束语

学生编程能力的培养是个渐渐积累的过程,在这个过程中,如果老师能掌握好因材施教,会起到事半功倍的效果。因此,在重视理论教学的同时,动手能力的培养不可忽视,这是日后其他课程学习的基石。对于实验课的教学,还有许多需要改进和值得思考的地方,有待于进一步提高和完善。

参考文献

[1]陈维兴,林小茶.C++面向对象程序设计及教程[M].北京:清华大学出版社,2000.

[2]郑莉,董渊,张瑞丰.C++语言程序设计(第三版)[M].北京:清华大学出版社,2001.

[3]王燕.面向对象的理论与C++实践[M].北京:清华大学出版社,1997.

[4]张海藩,牟永敏.面向对象程序设计实用教程[M].北京:清华大学出版社,2001.

[5]吕凤翥.C++语言程序设计[M].北京:清华大学出版社,2003.

[6]H.M.Deitel,P.J.Deitel.C++程序设计教程(第四版)[M].施平安译.北京:清华大学出版社,2004.

[7]谭浩强.C++程序设计[M].北京:清华大学出版社,2004.

C ++ 实验报告 篇3

关键词:C++实验课;现代高校;重要地位

中图分类号:G632.0文献标识码:A文章编号:1007-9599 (2010) 13-0000-01

The Important Position of C++ Experimental Course in the Modern University

Hu Bin,Fu Hui,Zhao Chunyu

(Information Engineering College of Huanghe S&T College,Zhengzhou450063,China)

Abstract:C++ experimental course is C++ Tutorial important part,to develop students creative thinking ability to develop independent learning interests and abilities,in the process of teaching can play a main body of students,and improve classroom teaching and learning efficiency,and therefore plays an important modern university teaching position.

Keywords:C++ experimental course;Modern university;Important role

社会发展对高校教育人才的要求发生了重大的改变,现代社会需要动手能力强、实践能力强的人才,复合应用型人才才能适应社会的发展。C++课程作为高校重要的课程,不仅要求学生要具备较强的理论知识,更要求学生具有更强的实际动手设计能力,而实踐能力的培养更多的需要实验课,因此C++实验课在现代高校教学中具有极其重要的地位。

一、C++实验课能培养学生的创造性思维能力

教育不仅仅是知识的传授,更重要的是学生全面素质的培养。现代社会的发展日新月异,知识的新陈代谢越来越快,因此我们教育学生的目的不能仅仅局限在教他们学会知识,更重要的是培养学生的创造性思维能力,让他们毕业以后在社会中能够更好的学习,适应社会的发展。教育学家裴斯泰洛齐曾指出:“思维能力是学生进行学习活动和科技创造性活动的最重要、最基本的心理素质,而创造性思维应该是这些活动的核心。”

C++实验课不仅能让学生掌握课堂学习的基本理论知识,更重要的是学生在实验课的过程中能够以所学习的理论知识为依据创造性的学习,能够培养学生的创造性思维能力。在实验课教学中,教师应当利用各种教学手段加强学生的C++实验课的实验技能训练,加强学生创造性思维能力的形成。第一,加强C++实验课操作技能的训练。操作技能是C++实验课的基本技巧,是基础。目前高校大学生操作技能基础较差,因此必须在大学生中有针对性的进行操作技能的训练。第二,加强C++实验课综合实验技能的训练。“分析”和“综合”是思维的过程最基本的元素,人们认识活动水平的提高,就是在不断地分析、综合等过程中螺旋上升。在C++实验课中,我们应当培养学生“分析”和“综合”的能力,使学生对知识的理解尽快从感性认识上升到理性认识,不断提高学生的创造性思维能力。

二、C++实验课能发挥学生的主体性作用

目前我国高校教学依然受传统的观念和思维方式的束缚,老师依然是教学的主导,学生依然是教学的配角,老师主动教学生被动的学依然是教学的主要特征。C++实验课作为上机操作课程,更强调学生的自主学习,能发挥学生的主体性作用。第一,创新C++实验课教学,注重发挥学生主体性作用。原先需要教师做的演示实验,可以尝试让学生分组进行对比实验,为学生创造更多的动手机会。在实验过程中如何利用常规的实验考试来发挥学生的主体性作用也是教师需要探讨的问题。在实验课程开放过程中我们应当增加探索性实验,减少验证性实验,现在学生作的实验大多数是验证性实验,不利于学生创造性思维的培养,增加一部分探索性实验,有利于提高学生在学习上的积极性和主动性,有助于培养学生学习兴趣,而且还可以培养学生的上机操作能力和研究探索能力,体现“以教师为主导,以学生为主体”的教学原则。第二,在C++实验课教学中坚持学生主体性的观念,创造民主的气氛,让学生成为自己学习的主人。

三、C++实验课能培养学生的自主学习的兴趣和能力

C++实验课的特征就是学生是实验的自主设计者和自主学习者,培养了学生的学习兴趣和能力。高校教学模式的改革强调以学生的自主学习为主导,因此在C++实验课教学中更应重视学生的主体性、主导性,更要关注学生自主学习的兴趣及创新能力的培养。C++实验课中学生自主学习的兴趣和能力的培养策略:第一,C++实验课中应加强学生信息能力的培养。所谓信息能力是指能够敏感地捕捉信息并进行有效地分析、判断、整理、归纳、评估、加工、传递和创新的能力。第二,C++实验课中应注重学生研究能力的培养。所谓研究能力是指学生综合分析事物的能力和自主解决实际问题的能力。第三,C++实验课中应注重学生合作能力的培养。“学会合作”是国际21世纪教育委员会提出的“学会认知、学会做事、学会合作、学会生存”的教育四大支柱之一。

四、小结

尽管C++实验课教学在高校教学中占有重要的地位,但传统的教学束缚了其重要性的发挥,因此必须对传统的教学模式进行改革,建立创新的教学模式。第一,教学理念的创新。传统观念认为实验课程仅是课堂理论教学的辅助环节,处于一个可有可无的境地。因此必须首先改变实验教学为副的陈旧观念,承认理论教学与实验教学是一个有机整体,重视实验教学;为实验教学配备高素质、高水平的实验教学人才。第二,重视教学方法的改革。传统的教学方法束缚了学生的学习的积极性和实验课的兴趣,在新的教学形式下,教师应当树立实验课的重要性,让学生在实验教学中充分发挥主体性,培养学生自主性学习的能力和兴趣。

参考文献:

[1]郑顺今,南福松.教学中激发学生学习兴趣的艺术[J].辽宁教育学院学报,2001,6:18-20

[2]封昌权.远程教育环境下学生自主学习能力的培养[J].中国电化教育,2003,3:64-65

[3]修明月,张宝歌.新世纪高等院校人才培养模式研究与实践[J].黑龙江高教研究,2003,4:138-142

[4]唐一科.高校人才培养模式的改革与实践创新[J].中国高教研究,2003,1:39-41

作者简介:

胡彬(1979-),男,河南郑州人,单位:黄河科技学院,研究方向:计算机应用技术,职称:助教。

信息系C++实验报告(练习) 篇4

实验学时 2 实验时间 2017 年 12 月 15 日

实验地点

指导教师

课程名称 C++程序设计 专

业班

成绩

实验项目 运算符重载、虚函数、纯虚函数、抽象类 实 验 目 的 1、理解运算符重载的作用; 2、掌握实现运算符重载的方法; 3、理解虚函数、纯虚函数、抽象类的特性 4、掌握利用虚函数实现动态多态性的方法 实 验 内 容 和 要 求 1、阅读“程序 1.txt”,分析程序运行结果,然后上机调试验证分析结果。

2、阅读“程序 2.txt”,分析程序运行结果,然后上机调试验证分析结果。

以上二题不用抄题也不用写分析结果

3、阅读“程序 3.txt”,然后回答以下问题:

1)行 A、行 B、行 E 的输出结果分别是、、,为什么是这样的输出结果

2)将行 A 改成 p->X::f();,其输出结果为:,为什么

3)将行 C 改成 A *p=&a;,行 A 调用类

的 f 函数,输出,行 B 调用类的 g 函数,输出

,行 E 调用类的k 函数,输出。

4)将行 C 改成 A *p=&a;,后,要想调用基类 X 的 g 函数,行 B 应改为

以上一题不用抄题,只需写答案在答题纸上。

4、定义一个类 matadd,其中数据成员为一个 M*N 的矩阵(即二维数组),其中 M 和 N 是两个预先定义的符号常数或常变量。通过重载运算符“+”和“=”,实现矩阵相加和赋值运算。例如定义矩阵A = [ 12 34 5 6 ]和 B = [2 2 23 3 3 ],通过运算 C=A+B,得到结果矩阵C = [ 34 57 8 9 ]。

具体要求如下:

(1)私有数据成员:int a[M][N],存放二维数组的值(2)公有成员函数:

matadd():缺省构造函数,初始化数据成员 a[M][N]为 0。

matadd(int x[M][N]):构造函数,用 x 初始化数据成员 a。

matadd operator +(matadd &A, matadd &B):重载加法运算符“+”,实现两个矩阵相加(要求为友元函数)

void operator =(matadd &B):重载赋值运算符“=”,实现两个矩阵赋值(要求为成员函数)

void show():按二维方式输出 a 数组。

(3)在主函数中完成对该类的测试。注意:在程序的开头,定义符号常数或常变量 M 和 N 的值分别为 2 和 3,表示二维数组的行数和列数。在主函数中定义整型数组 a[M][N]和 b[M][N],它们的初值可取上述示例值。定义三个matadd 类的对象 A、B 和 C,并用数组 a 和 b 初始化对象 A 和 B。将 A 加B 后赋值给 C。然后输出对象 C 的数据成员 a 矩阵的值。

实 验 过 程(算法、源代码以及注释)

实 验 结 果(记录程序执行的结果,分析结果)

C ++ 实验报告 篇5

学分:4

实验学时:16

实验个数: 6个实验学分:1分 课程性质:专业必修课适用专业:计算机类专业 教材及参考书:《C++语言程序设计(第四版)》,郑莉、董渊编著,北京:清华大学出版社,2011 大纲执笔人:杨军

大纲审定人:

一、实验课的性质与任务

本课程实验大纲是面向计算机专业学生开设的《C++程序设计》实验课计划指导大纲,是依据《面向对象程序设计》课程教学计划指导大纲编制。本课程主要讲述了利用C++进行程序设计的思想和方法,既有面向过程和面向对象的程序设计的理论知识,又包括极强的实践应用能力的培养。本实验大纲力求结合该课程教学计划大纲的相应内容,由浅入深的指导学生了解和掌握如何利用C++程序设计语言进行程序设计,提高学生的动手能力,做到理论和实践相结合,培养学生理解,分析程序,编写,调试程序的能力,使之能把程序设计应用到今后的专业学习中。

二、实验目的与要求 1.实验目的

通过本课程的学习,使学生掌握面向过程的程序设计思想和编程思路,初步掌握面向对象的程序设计思想,学会调试程序,能独立编写实用的小型程序。2.实验要求

学生应该自始至终贯彻课程中所介绍的程序设计风格,养成良好的编程习惯; 应独立完成所布置习题。为保证尽量在统一安排的上机时间内编译运行通过程序,学生应事先设计好程序。

三、实验项目及内容提要

面向对象程序设计实验课程(071016)

序号

实验编号

实验名称

学时

必做

选做

学分数 实验类型

内容提要

基本操作

验证

综合设计 1

类与对象

函数重载,类的设计与使用 2 2

C++程序的结构

作用域与生存期,静态成员

3

数组、指针与字符串 √

√ 三种常见编程元素的使用

4

继承与派生 √

派生类的设计与使用

5 多态性 √

运算符重载、动态多态

6

模板和文件 √

模板,异常处理机制的设计

四、实验内容安排: 实验一类与对象

(设计性实验

4学时)目的要求:

掌握类的定义和使用;掌握类对象的声明;练习具有不同访问属性的成员的访问方式;观察构造函数和析构函数的执行过程; 学习类组合使用方法;

使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。实验内容:

编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。

写一个函数,具有一个引用作为形参参数,在函数中改变引用变量的值,观察实参变量的变化。

定义一个CPU类,包含等级(Rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU__Rank,定义为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类,为以上的类编写构造和析构函数,观察组合类和内嵌类的构造函数和析构函数的调用顺序。

为题目2)的类编写复制构造函数,在主函数中利用复制构造的方式创建新的对象,观察对象的状态。

思考并回答以下概念:函数重载,引用,类,对象,数据成员,函数成员,访问属性,构造函数,析构函数,类的组合,内嵌对象,初始化列表,复制构造函数。主要仪器设备及软件:PC+Windows 2000+VC 6.0 实验二

C++程序的结构(设计性实验

2学时)目的要求:

观察程序运行中变量的作用域、生存期和可见性; 学习类的静态成员的使用;

学习多文件结构在C++程序中的使用。实验内容:

实现客户机(CLIENT)类。定义字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。

利用多文件结构实现题目1),在头文件client.h中定义类,在文件client.cpp中实现该类,在文件test.cpp 中测试这个类,观察相应的成员变量取值的变化情况,要求ClientNum能够实时记录客户机对象的数量。

思考并回答以下概念:类的静态数据成员,类的静态函数成员,多文件结构,文件包含。主要仪器设备及软件:Windows 2000+VC 6.0 实验三数组、指针与字符串实验(设计性实验

4学时)目的要求:

学习使用数组;学习字符串数据的组织和处理;学习标准C++库的使用; 掌握指针的使用方法;练习通过debug观察指针的内容及其所指的对象的内容;练习通过动态内存分配实现动态数组,并体会指针在其中的作用; 分别使用字符数组和标准C++库练习处理字符串的方法。实验内容:

编写一个类用于处理3×3矩阵转置,测试转置的效果,输出转置前后的矩阵。

定义一个具有构造函数和析构函数的类,如实验一的CPU类,定义一个CPU的对象数组,观察构造函数的析构函数的调用过程。利用动态内存分配的方式重新完成题目2)。

使用系统提供的string类定义字符串对象并初始化,实现从原始字符串中提取一个子串。选做:定义一个Point(二维点类)的对象数组,利用该数组实现直线的线性拟合。选做:定义一个动态数组类。

思考并回答:数组,指针,对象数组,动态内存分配,默认构造函数,标准类库,字符串类 string,线性拟合。

3.主要仪器设备及软件:Windows 2000+VC 6.0 实验四继承与派生

(设计性实验

2学时)目的要求:

学习定义和使用类的继承关系,定义派生类;熟悉不同继承方式下对基类成员的访问控制; 学习利用虚基类解决二义性问题。实验内容:

定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把 age改为公有成员变量,还会有问题吗?编程试试看。

定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,定义该派生类的对象,观察构造函数和析构函数的执行情况。

定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类,汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcycle)类有座位数(SeatNum)等属性。从bicycle和motorcycle派生出摩托车(Motorcar)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle 设置为虚基类,会有什么问?编程实验及分析原因。

思考并回答:继承,派生,子类对基类成员的访问权限,继承方式,继承时的构造函数和析构函数的调用顺序,虚基类

主要仪器设备及软件:PC+Windows 2000+VC 6.0 实验五多态和运算符重载(设计性实验

2学时)目的要求:

掌握运算符重载的方法;学习使用虚函数实现动态多态性。实验内容: 定义Point类,有坐标x,y两个私有成员变量;对Point类重载“+”(相加)、“-”(相减)和“==”(相等)运算符,实现对坐标的改变,要求用友元函数和成员函数两种方法实现。对Point类重载<<运算符,以使得代码 Point p;cout<

定义一个车(vehicle)基类,有虚函数Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,它们都有Run、Stop等成员函数。在主函数中用不同的方法调用Run、Stop成员函数,观察这些函数的执行结果,思考如何实现动态多态性,如果Run、Stop没有被定义为虚函数,执行结果会怎样,把结果和分析写入实验报告。选做,利用类完成求函数的积分(参考教材)。

思考并回答:多态,实现多态性的方法,虚函数,运算符重载,前++,后++,实现运算符重载的方式。

主要仪器设备及软件:PC+Windows 2000+VC 6.0 实验六模板和文件

(设计性实验

2学时)目的要求:

理解模板的作用和语法。

学习掌握C++文件处理类的基本用法。实验内容:

使用函数模板实现一个求3个数最大值的函数,并完成测试。

编写程序,用二进制方式打开指定的一个文件,在每一行前加行号。选做,练习使用STL中的vector模板类。选做,定义一个异常类CException,有成员函数Reason(),用来显示异常的类型。在子函数中触发异常,在主程序中处理异常,观察程序的执行过程。思考并回答:模板,函数模板,类模板,文件,文件读写,文件流类,文件操作方式,文件存储方式; STL,容器,异常处理。

3.主要仪器设备及软件:PC+Windows 2000+VC 6.0

五实验报告的格式(本部分要求各学院设计成表格作为教学大纲附件)

实验完毕,应用专门的实验报告本,根据预习和实验中的现象及数据记录等,及时而认真地写出实验报告。实验报告一般包括以下内容: 实验(序号)实验名称

(一)实验目的

(二)仪器工具及材料列出实验中所使用的主要仪器工具及材料。

(三)内容及程序应简明扼要地写出实验步骤流程。

(四)结果及分析应用文字、表格、图形等形式将数据表示出来。根据实验要求对数据进行分析和误差处理。

(五)问题讨论结合有关理论对实验中的现象、产生的误差等进行讨论和分析,以提高自己的分析问题、解决问题的能力,并提出应注意的事项,也为以后的科学研究打下一定的基础。

六、考核方式、方法及实验成绩评定方法

1、考核方式、方法:

面向对象程序设计实验课成绩占面向对象程序设计总成绩的15%,即共15分。考核方法为采用实验课随堂检查学生完成情况及现场提问让学生回答,根据学生完成情况及答辩情况给分次给出平时成绩,共5分。学生在完成实验后应将自己的实验过程,结果,经验写入实验报告并提交实验报告,实验报告成绩占10分,根据学生实验报告的书写质量及实验出勤情况打出。

2、实验成绩评定方法:

评定各级成绩时,可参考以下标准:

(一)优秀(很好)14-15 能正确理解实验的目的要求,能独立、顺利而正确地完成各项实验操作,会分析和处理实验中遇到的问题,能掌握所学的各项实验技能,能较好地完成实验报告及其它各项实验作业,有一定创造精神和能力。有良好的实验工作作风和习惯。

(二)良好(较好)13-14 能理解实验的目的和要求,能认真而正确地完成各项实验操作,能分析和处理实验中遇到的一些问题。能掌握所学实验技能的绝大部分,对难点较大的操作完成有困难。能一般完成实验报告和其它实验作业。有较好的实验习惯和工作作风。

(三)中等(一般)11-12 能粗浅理解实验目的要求,能认真努力进行各项实验操作,但技巧较差。能分析和处理实验中一些较容易的问题,掌握实验技能的大部分。有30%掌握得不好。能一般完成各项实验作业和报告。处理问题缺乏条理。工作作风较好。能认真遵守各项规章制度。学习努力。

(四)及格(较差)8-9 只能机械地了解实验内容,能一般性地按实验步骤完成实验操作,能完成60%所学的实验技能,有些虽作但不准确。遇到问题常常缺乏解决的办法,在别人启发下能作些简单处理,但效果不理想。能一般完成实验报告,能认真遵守实验室各项规章制度,工作中有小的习惯性毛病(如工作无计划,处理问题缺乏条理)。

(五)不及格(很差)0-7 盲目地操作,只掌握50%的所学实验技能。有些实验虽能作,但一般效果不好,操作不正确。工作忙乱无条理。一般能遵守实验室规章制度,但常有小的错误。实验报告较多的时候有结果,遇到问题时说不明原因,在教师指导下也较难完成各项实验作业。或有些小聪明但不努力,不求上进。

七、实验主要应配套仪器设备及台(套)数(以一个实验教学班40人为标准)序号

仪器设备名称

数量

备注

计算机

40台

C++开发工具软件

1套

网络版

八、主要教材及参考书

C ++ 实验报告 篇6

实验6—1

一、问题描述

定义一个字符串类String,其数据成员有指向字符串的指针elems,成员函数包括构造函数、析构函数、判断字符串是否为空的operator!()。编程测试类String的功能。

二、实验输出

如图所示:

三、实验思路以及方法

判断字符串是否为空即是对字符串进行非运算,即重载operator!()。逻辑非运算是单目运算符,按照运算符重载方针,应该重载为类的成员函数。由于逻辑非运算结果只有两种:真、假,因此operator!()的返回值类型为bool型。四心得体会

开始没有判断elems的空指针问题,遇到一点麻烦,改过之后就ok了,本实验让我们学习了“运算符重载类的成员函数”,对以后的学习C++有了很大了帮助。代码实现

#include #include using namespace std;class String { public: String(const char *e=NULL);~String();bool operator!()const;private: char *elems;};String::String(const char *e){ if(e==NULL){ elems=NULL;return;} else { elems=new char[strlen(e)];strcpy(elems,e);return;} } bool String::operator!()const { if(elems==NULL)return true;else return false;} String::~String(){ if(elems!=NULL)delete[]elems;} int main(){ String str;if(!str)cout<<“这是一个空字符串!”<

实验6-3

一、问题重述

对于具有相同行列数的矩阵进行加、减、乘、转置、赋值运算。

二、实验输出 结果如图所示:

三、实现思路及方法

定义矩阵类Matrix,他的数据成员有:行line、列col、指向矩阵元素的指针int*elems。他的成员函数有:构造函数、析构函数、复制构造函数、一组读取和修改属性的get、set方法、显示矩阵元素的方法print()。还需要对Matrix类的重载运算符:

Matrix operator+(const Matrix &a,const Matrix &b);Matrix operator-(const Matrix &a,const Matrix &b);Matrix operator*(const Matrix &a,const Matrix &b);Matrix operator=(const Matrix &m);

Matrix operator~()const;

四、心得体会

这次对友元的初次使用,感觉到很陌生,在对数组处理的时候有很大的错误,对空间的申请和判断是否为空上面存在很大的问题,但是也学到了很多东西,比如说:友元可以是一个全局函数,也可以是一个类的成员函数,还可以是一个类,如果友元是函数,则称为友元函数,如果友元是一个类,则称为友元类,友元的所有成员函数都是友元函数,可以访问被访问类的所有成员。代码实现

#include #include #include using namespace std;class Matrix;Matrix operator+(const Matrix &a,const Matrix &b);Matrix operator-(const Matrix &a,const Matrix &b);Matrix operator*(const Matrix &a,const Matrix &b);class Matrix { friend Matrix operator+(const Matrix &a,const Matrix &b);friend Matrix operator-(const Matrix &a,const Matrix &b);friend Matrix operator*(const Matrix &a,const Matrix &b);public: Matrix(int l,int c);Matrix(const Matrix &m);~Matrix();void setLine(int l);void setCol(int c);void setElems();int getLine()const;int getCol()const;void print()const;Matrix operator=(const Matrix &m);Matrix operator~()const;

private: int line;int col;int *elems;};Matrix operator+(const Matrix &a,const Matrix &b){ if(a.line!= b.line || a.col!= b.col){ cerr << “两矩阵的行列数不相同!” << endl;exit(EXIT_FAILURE);} Matrix temp(a.line,a.col);for(int i = 0;i < a.line * a.col;i++)temp.elems[i] = a.elems[i] + b.elems[i];return temp;}

Matrix operator-(const Matrix &a,const Matrix &b){ if(a.line!= b.line || a.col!= b.col){ cerr << “两矩阵的行列数不相同!” << endl;exit(EXIT_FAILURE);} Matrix temp(a.line,a.col);for(int i = 0;i < a.line * a.col;i++)temp.elems[i] = a.elems[i]-b.elems[i];return temp;}

Matrix operator*(const Matrix &a,const Matrix &b){ if(a.col!= b.line){ cerr << “第一个矩阵的列数和第二个矩阵的行数不相同!” << endl;exit(EXIT_FAILURE);}

int line = a.line,col = b.col;int i,j,k;Matrix temp(line,col);

for(i = 0;i < line * col;i++)temp.elems[i] = 0;

for(i = 0;i < line;i++)for(k = 0;k < col;k++)

for(j = 0;j < b.line;j++)

temp.elems[i * col + k] += a.elems[i * col + j] * b.elems[j * col + k];

return temp;} Matrix::Matrix(int l,int c){ setLine(l);setCol(c);elems = new int[line * col];if(elems == NULL){ cerr << “动态存储分配失败!” << endl;exit(EXIT_FAILURE);} }

Matrix::~Matrix(){ delete []elems;}

Matrix::Matrix(const Matrix &m){ setLine(m.line);setCol(m.col);elems = new int[line * col];if(elems == NULL){ cerr << “存储分配失败!” << endl;exit(EXIT_FAILURE);} for(int i = 0;i < line * col;i++)elems[i] = m.elems[i];}

void Matrix::setLine(int l){ line = l;}

void Matrix::setCol(int c){ col = c;}

void Matrix::setElems(){ for(int i = 0;i < line * col;i++)cin >> elems[i];}

int Matrix::getLine()const { return line;}

int Matrix::getCol()const { return col;}

void Matrix::print()const { for(int i = 0;i < line;i++){ for(int j = 0;j < col;j++)

cout << setw(4)<< elems[i * col + j];cout << endl;} }

Matrix Matrix::operator=(const Matrix &m){ if(this!= &m){ setLine(m.line);

setCol(m.col);delete []elems;elems = new int[line * col];if(elems == NULL){

cerr << “存储分配失败!” << endl;

exit(EXIT_FAILURE);} for(int i = 0;i < line * col;i++)

elems[i] = m.elems[i];} return *this;}

Matrix Matrix::operator~()const { Matrix temp(col,line);for(int i = 0;i < line;i++)for(int j = 0;j < col;j++)

temp.elems[j * line + i] = elems[i * col + j];return temp;} int main(){ Matrix a(3,3),b(3,3);cout<<“请输入第一个矩阵的元素:”<

cout<<“请输入第二个矩阵的元素:”<

b.setElems();

Matrix c(3,3);

cout<<“两矩阵的乘积为:”<

c=a*b;

c.print();

cout<<“n转置矩阵为:”<

C++学习心得 篇7

在计算机课程中,C++程序设计是计算机专业的一门必修基础课,该语言以其高效而又实用的特性:既可以进行过程化程序设计,又可进行面向对象的程序设计,是进行软件开发的直接工具。

学习语言是需要技巧的,无论是哪种语言,里面都是有规律的。对于计算机语言来说,我认为应该先理解,然后上机去实现它,实践是检验真理的唯一标准。

C++语言课程是一门实践性很强的课程,一定要动手多写设计、编写程序才能有所进步。在实践教学中必须做到循序渐进,对所学的每一部分内容都应该要求学生完成一定数量的实验内容。每部分的上机习题必须精心挑选,既要有基本的、较简单的题目,又要有一些具有挑战性的新颖有趣的题目。自己编写的程序一定要到机器上去实现,通过调试程序来修订语法错误,排除逻辑错误,进而提高编程能力,通过做一定量的习题,可以积累一定的经验,同时对程序设计的精髓会有所领悟,从而重视上机实验。

实践重要,老师的教学方法同样重要。要强调学以致用,展示学生能够理解而且又容易提起兴趣的用C++语言设计的软件以及往届学生的设计成果,给学生布置了几个专题,比如:设计班级成绩管理系统、简易的图书管理系统、简易的通讯录管理系统、小游戏等让学生利用课余时间去思考、收集资料,以教师为主导,以任务为主线,以学生为主体,过一段时间在课堂上组织学生发言和讨论一次,看看大家对这些问题的思考程度,提提建议,鼓励加引导,最后到完成。这种教学法不仅可以让学生获得许多课外知识,同时也促进教学内容的改革,而且也有利于充分挖掘学生的学习潜力。

c++课程设心得 篇8

短学期的课程设计是一次非常珍贵的机会,这是一次可以让我们所学的理论 与实际相结合的机会。我们选择了成绩统计系统这一题目。通过这次比较完整的一个程序的设计,我走出了纯理论的学习,从一种全新的角度去学习。并且在小团队实现的过程中,除去知识的大量更新,我学到了很多东西。

其实个人而言,我体会较深的一点是团队互相帮助学习的过程,自己看书学习的经验,以及从网上以及其他各种途径获得信息和知识的经验。理论与实际相结合的设计,锻炼了我综合运用所学的基础知识,解决实际问题的能力,同时也提高我查阅文献资料、对程序整体的把握等其他能力水平。而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,我的各方面经验都得到了极大的丰富。同组的同学有着很强的C++实力,在进行编程的过程中,我向她学到了c++的很多知识,交流中也总结出比书本上更精髓生动的语言。在自己琢磨c++各种陌生知识的时候,队友的耐心与任性,对于知识的渴求,对于工作的专注,极大程度上鼓舞了我。我们在交流中,迸发出了很多设计灵感,互相建议改进的过程中,我们分别从各个方面共同改进着,这个已经不能仅仅称作课程设计的作品。从知识获得方面来说,各种已经学习到的C++知识以及各种从网上搜索来的案例,我们都是随着设计的不断深入而不断熟悉的。和老师以及同学的沟通交流更使我对程序整体的规划与设计有了新的认识,也对自己提出了新的要求。

提高是有限的但提高也是全面的。正是这一次设计让我积累了许多实际经验。也必然会让我在未来的工作学习中表现出更高的耐力、理解力、实践力。顺利如期的完成本次课程设计给了我很大的信心,但是也为我指出很多不足的地方。学习其实就是一个不断完善的过程,正视自己的不足之处。在以后的工作和学习中不断的弥补这些不足之处,在以后的生活中也要保持同样的态度,不断地完善自己。

为期一周不到的MFC课程设计就要这样画上一个句号了。从这不长不短的四周中,我获得了知识,学到了研究的坚持与韧性,这一周不仅仅是交出了一份作业,还对自己有了新的认识。

C++课程设计心得体会

“课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。”在这次课程设计的过程中,我深深地体会到了理论与实践结合的过程,当实践成功时的成就感,从整个过程中我受益匪浅。

C++基础教程数组 篇9

1、启动 Geany

1)点菜单“应用程序-编程-Geany”启动 Geany ,新建一个 c++ 源程序;

2)点菜单“文件-另存为”命令,以“array”为文件名,保存文件到自己的文件夹;

2、输入程序代码

1)我们来定义一个存放学生成绩的数组,在主函数中输入;

int score[5] = {70,60,90,85,100};

for (int i=0; i<5; i++)

{

cout << score[i] << “ ”;

}

2)第一句是定义一个数组,用方括号表示数组大小,定义的时候可以赋值初始化,

用 for 语句来显示数组的内容,数组名 score ,局部变量 i 来表示各个数组元素,从 0 到 4;

3)我们再看一个字符串的,字符串最后有一个结束标记 �,所以只能存放 4 个字符;

cout << endl;

char ch[5] = “abcd”; //省略花括号

for (int i=0; i<5; i++)

{

cout << ch[i] << “ ”;

}

4)字符串在内存里是单个顺序存放的,也像数组一样,只是最后有一个 � 标志作为字符串结束标记;

a | b | c | d | �

5)因此,显示字符串数组,可以直接用 cout << ch; 语句,程序显示的时候,从 ch 开始,到 � 的自动结束;

#include

using namespace std;

int main(int argc, char** argv)

{

int score[5] = {70,60,90,85,100};

for (int i=0; i<5; i++)

{

cout << score[i] << “ ”;

}

cout << endl;

char ch[5] = “abcd”; //省略花括号

for (int i=0; i<5; i++)

{

cout << ch[i] << “ ”;

}

cout << endl;

cout << ch; //直接输出

return 0;

上一篇:关于缘分的经典语录下一篇:玉溪师范学院学生奖助学金申请审批表