当前位置:文档之家› C++实验代码

C++实验代码

实验项目一 C++程序设计初步题目在Visual Studio 2008平台上,用C++语言创建一个控制台应用程序,当其运行时在屏幕上显示“Hello,World!”(参考P15)实验项目二类与对象(1)有以下程序:#include <iostream>using namespace std;class Time //定义Time类{public: //数据成员为公用的int hour;int minute;int sec;};int main( ){ Time t1; //定义t1为Time类对象cin>>t1.hour; //输入设定的时间cin>>t1.minute;cin>>t1.sec;cout<<t1.hour<<“:”<<t1.minute<< “:”<<t1.sec<<endl; //输出时间return 0;}改写程序,要求:①将数据成员改为私有的;②将输入和输出的功能改为由成员函数实现;③在类体定义成员函数。

然后编译和运行程序。

请分析什么成员应指定为公用的?什么成员应指定为私有的?什么函数最好放在类中定义?什么函数最好放在类外定义?代码:/ 实验_1.cpp : 定义控制台应用程序的入口点。

#include"stdafx.h"#include<iostream>using namespace std;class Time //定义Time类{private: //数据成员为私有的int hour;int minute;int sec;public:void Input(){cout<<"请输入时、分、秒:"<<endl;cin>>hour>>minute>>sec;}void print(){cout<<"时间为:"<<endl;cout<<hour<<":"<<minute<< ":"<<sec<<endl;}};int _tmain(int argc, _TCHAR* argv[]){Time t1;t1.Input ();t1.print ();return 0;}结果:(2)修改实验1中的学生成绩管理系统,建立类OurClass,实现班级学生信息的输入,排序和输出。

要求:添加构造函数,初始化班级名称,将成员函数定义在类外,类的定义单独放在头文件中。

代码:头文件:#define N 3struct Student{long lNum;char sName[12];float cGrade;float ccGrade;float fGrade;};class OurClass{private:char cName[20];Student stu[N];public:OurClass::OurClass();void Input();void print();void Sort();};.cpp:// 学生成绩管理.cpp : 定义控制台应用程序的入口点。

#include"stdafx.h"#include"iostream"using namespace std;#include"student.h"int main(){OurClass c1;c1.Input();c1.Sort ();cout<<endl<<"排序结果为:"<<endl<<endl;c1.print ();return 0;}OurClass::OurClass () //(char Nme[20]){cout<<"请输入班级名称:"<<endl;cin>>cName;}void OurClass::Input (){int i;cout<<"输入"<<N<<"个学生的学号、和成绩"<<endl;for(i=0;i<N;i++){cin>>stu[i].lNum>>stu[i].sName >>stu[i].cGrade >>stu[i].ccGrade ;stu[i].fGrade =stu[i].cGrade+stu[i].ccGrade;}}void OurClass::Sort(){int i,j;Student Temp;for(i=0;i<N;i++){for(j=i+1;j<N;j++){if (stu[i].fGrade<stu[j].fGrade ){Temp=stu[i];stu[i]=stu[j];stu[j]=Temp;}}}}void OurClass::print(){int i;cout<<"班级名称:";cout<<cName<<endl;cout<<"学号成绩"<<endl;for(i=0;i<N;i++)cout<<stu[i].lNum<<" "<<stu[i].sName <<" "<<stu[i].fGrade <<endl; }结果:(3)需要求3个长方柱的体积(用对象数组完成),请编一个基于对象的程序。

数据成员包括length(长)、width(宽)、height(高)。

要求用成员函数实现以下功能:①由键盘分别输入3个长方柱的长、宽、高;②计算长方柱的体积;③输出3个长方柱的体积。

请编程序,上机调试并运行。

完成后,将其中的数组名当常量指针用。

代码:头文件:class cube{private:double length;double width;double height;public:cube();void input();void print();double volume();};// 求长方柱的体积.cpp : 定义控制台应用程序的入口点。

#include"stdafx.h"#include"iostream"using namespace std;#include"cube.h"void cube::input(){double length;double width;double height;}cube::cube(){ cout<<"请输入长方柱的长、宽、高:"<<endl;cin>>length>>width>>height;}double cube::volume(){return length*width*height;}void cube::print(){cout<<"长方柱的体积为:"<<volume()<<endl;}int main(){cube c[3];for(int i=0;i<3;i++){c[i].input();(c+i)->print();}return 0;}结果:(4)友元函数(1)有以下程序:#include <iostream>using namespace std;class Date; //对Date类的提前引用声明class Time //定义Time类{public:Time(int,int,int);void display(Date &); //display是成员函数,形参是Date类对象的引用private:int hour;int minute;int sec;};class Date //声明Date类{public:Date(int,int,int);friend void Time∷display(Date &);//声明Time中的display函数为友元成员函数private:int month;int day;int year;};Time∷Time(int h,int m,int s) //类Time的构造函数{hour=h;minute=m;sec=s;}void Time∷display(Date &d) //display的作用是输出年、月、日和时、分、秒{cout<<d.month<<“/”<<d.day<<“/”<<d.year<<endl;//引用Date类对象中的私有数据cout<<hour<<“:”<<minute<<“:”<<sec<<endl; //引用本类对象中的私有数据}Date∷Date(int m,int d,int y) //类Date的构造函数{month=m;day=d;year=y;}int main( ){Time t1(10,13,56); //定义Time类对象t1Date d1(12,25,2004); //定义Date类对象d1t1.display(d1); //调用t1中的display函数,实参是Date类对象d1return 0;}请读者分析和运行此程序,注意友元函数Time::display的作用。

将程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time 和Date类中将display声明为友元函数。

在主函数中调用display函数,display 函数分别引用Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。

修改后上机调试和运行。

代码:// 实验_4.cpp : 定义控制台应用程序的入口点。

#include"stdafx.h"#include<iostream>using namespace std;class Date; //对Date类的提前引用声明class Time //定义Time类{friend void display(Date &,Time &);public:Time(int,int,int);//void display(Date &); //display是成员函数,形参是Date类对象的引用private:int hour;int minute;int sec;};class Date //声明Date类{public:Date(int,int,int);friend void display(Date &,Time &);public:int month;int day;int year;};Time::Time(int h,int m,int s) //类Time的构造函数{hour=h;minute=m;sec=s;}void display(Date &d,Time &t1) //display变为普通函数{cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;//引用Date类对象中的私有数据cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl;}Date::Date(int m,int d,int y) //类Date的构造函数{month=m;day=d;year=y;}int _tmain(int argc, _TCHAR* argv[]){Time t1(10,13,56); //定义Time类对象t1Date d1(12,25,2004); //定义Date类对象d1display(d1,t1);return 0;}结果:实验项目三函数重载(1)编写程序,实现普通函数重载练习。

相关主题