《面向对象程序设计(C++)》课程实验指导书安阳工学院计算机科学与信息工程学院软件工程教研室2018.9编号:课程总学时: 64 实验学时: 32课程总学分: 3.5 实验学分:先修课程:C语言程序设计适用专业:计算机科学与技术,网络工程,软件工程一、本课程实验的主要目的与任务《面向对象程序设计(C++)》是计算机专业学生的一门专业基础课。
C++是一种高效而又实用的程序设计语言,它既可以进行过程化程序设计,也可以进行面向对象程序设计,因此成为了编程人员最广泛使用的工具。
主要任务是介绍C++语言中的数据类型,运算,语句结构及其程序设计的基本方法。
使学生掌握一门高级程序设计语言,了解面向对象程序设计的基本概念与方法,进而学会利用C++语言学会解决一般应用问题,从而掌握面向对象程序设计的基本知识和基本技能。
并为后续的专业课程奠定程序设计基础。
实验1 C++基础一、实验目的1.加强学生掌握C++的基本知识点;2.加强学生掌握I/O流;3 加强学生进一步理解函数的用法;4 理解引用的概念及应用。
三、实验内容1.用函数返回值实现统计A类学生和B类学生个数,平均分大于等于80的为A类,其余为B类。
四. 实验指导1.参考程序:#include<iostream.h>int main(){cout<<”My name is Jone\n”。
cout<<”the ID is”。
cout<<2。
cout<<endl。
}2.参考程序:#include <iostream.h>#include <iomanip.h> //要用到格式控制符void main(){double amount = 22.0/7。
cout <<amount <<endl。
cout <<setprecision(0) <<amount <<endl<<setprecision(1) <<amount <<endl<<setprecision(2) <<amount <<endl<<setprecision(3) <<amount <<endl<<setprecision(4) <<amount <<endl。
cout <<setiosflags(ios::fixed)。
cout <<setprecision(8) <<amount <<endl。
cout <<setiosflags(ios::scientific) <<amount <<endl。
cout <<setprecision(6)。
//重新设置成原默认设置}3.参考程序:#include <iostream.h>#include <iomanip.h>int main(){int number=1001。
cout <<"Decimal:" <<dec <<number <<endl<<"Hexadecimal:" <<hex <<number <<endl<<"Octal:" <<oct <<number <<endl。
return 0。
}4.参考程序:#include <iostream.h>#include <iomanip.h>int main(){cout <<setfill('*')<<setw(2) <<21 <<endl<<setw(3) <<21 <<endl<<setw(4) <<21 <<endl。
cout <<setfill(' ')。
// 恢复默认设置return 0。
}5.参考程序:#include <iostream.h>#include <iomanip.h>void main(){cout <<setiosflags(ios::right)<<setw(5) <<1<<setw(5) <<2<<setw(5) <<3 <<endl。
cout <<setiosflags(ios::left)<<setw(5) <<1<<setw(5) <<2<<setw(5) <<3 <<endl。
}6.参考程序:#include <iostream.h>void main(){const float PI=3.1415926f。
float r。
float z,s。
cout<<"请输入圆的半径r="。
cin>>r。
z=2*PI*r。
s=PI*r*r。
cout<<"圆的周长为: "<<z<<endl。
cout<<"圆的面积为: "<<s<<endl。
}7.参考程序:#include <iostream>using namespace std。
int array[6][4]={{60,80,90,75},{75,85,65,77},{80,88,90,98},{89,100,78,81},{62,68,69,75},{85,85,77,91}}。
int& level(int grade[], int size, int& tA, int& tB)。
int main(){int typeA=0,typeB=0。
int student=6。
int gradesize=4。
for(int i=0。
i<student。
i++) //处理所有的学生level(array[i], gradesize, typeA, typeB)++。
//函数调用作为左值 cout <<"number of type A is " <<typeA <<endl。
cout <<"number of type B is " <<typeB <<endl。
//system("PAUSE")。
return 0。
}int& level(int grade[], int size,int& tA, int& tB){int sum=0。
for(int i=0。
i<size。
i++) //成绩总分sum+=grade[i]。
sum/=size。
//平均分if(sum>=80)return tA。
//type A studentelsereturn tB。
//type B student}运行结果:实验2 类和对象1、实验目的:掌握类的定义,根据具体需求设计类;深入理解C++中类的封装性;会根据类创建各种对象;掌握对象的各种成员的使用方法。
2、实验内容定义一个满足如下要求的Date类。
(1)用下面的格式输出日期:日/月/年;(2)可运行在日前上加一天操作;(3)设置日期。
参考代码:#include <iostream.h>class Datepublic:void Display()。
void AddOneDay()。
void SetDay(int y,int m,int d)。
protected:bool Legal(int y, int m, int d)。
bool IsLeapYear(int y)。
int year。
int month。
int day。
}。
void Date::Display(){cout <<day <<"/" <<month <<"/" <<year <<endl。
}void Date::AddOneDay(){if(Legal(year,month,day+1))day++。
else if(Legal(year,month+1,1))month++,day=1。
else if(Legal(year+1,1,1))day=1,month=1,year++。
}void Date::SetDay(int y, int m, int d){if(Legal(y,m,d))day=d, month=m, year=y。
}bool Date::Legal(int y, int m, int d){if(y>9999||y<1||d<1||m<1||m>12)return false。
int dayLimit=31。
switch(m) case 4: case 6: case 9: case 11: dayLimit--。
if(m==2) dayLimit = IsLeapYear(y) ? 29 : 28。
return (d>dayLimit)? false : true。
bool Date::IsLeapYear(int y){return !(y%4)&&(y%100)||!(y%400)。
}int main(){Date d。
d.SetDay(2018,2,28)。
d.Display()。
d.AddOneDay()。
d.Display()。
system("PAUSE")。
}运行结果:实验3 继承与派生1、实验目的:理解继承的概念,学习如何使用基类成员,了解基类成员在派生类中的访问控制;理解类的派生对代码复用的作用。
2、实验内容:设计一个人员类person和一个日期类date,由人员类派生出学生类Student和教师类professor,学生类和教师类的数据成员birthday为日期类。