实 验 报 告 专业:计算机科学与技术 班级: 学号: 姓名: 课程名称:C++面向对象程序设计教程 201 -201 学年度 第 学期 课程类别:必修 实验时间:2 年 月 日 实验名称:实验三 类的定义及使用实验目的和要求: 目的: (1) 熟悉类的定义格式与类中成员的访问; (2) 熟悉成员函数的定义及调用; (3) 掌握对象的定义及使用。 (4) 理解public、private和protected这三种属性成员的访问方式。 要求: (1) 程序格式规范,程序运行正确; (2) 算法要求缜密、严谨、复杂度小等; (3) 认真书写实验报告,如实填写各项实验内容,尤其是调试信息; (4) 完成任务后,继续验证其他程序(书或资料上的)。 实验软硬件要求: (1) 计算机一台 (2) VC++6.0开发环境 实验内容、实验过程、所遇问题及其解决方法 (1) 定义一个类,要求:能完成计算三角形的面积和结果输出的操作; (2) 定义一个类,分别统计一串字符的大写字母、小写字母、空格、数字和其他字符的个数。 (3) 定义一个类,要求:能计算一个n×n数据方阵的两条对角线元素之和。 (4) 定义一个描述学生基本情况的类,数据成员包括姓名,学号,操作系统、计算机网络和数据库原理等课程成绩。成员函数包括设置姓名、学号和三门课程的成绩、输出数据、以及求每个学生的平均成绩。 (5) 定义一个日期类,要求:能设置日期;能以“年/月/日”格式输出日期;能对某日期进行加一天的操作;能对某日期进行减一天的操作。(选做) 实验总结及心得体会: 通过本次实验,我熟悉了类的定义格式与类中成员的访问以及学会了成员函数的定义及调用,并且掌握了对象的定义及使用、理解了public、private和protected这三种属性成员的访问方式。 评定成绩: 批阅教师: 年 月 日
附录:实验源程序及实验结果
(1) 定义一个类,要求:能完成计算三角形的面积和结果输出的操作;
#include
using namespace std; double a,b,c; class Triangle { public: double Area() { double s=(a+b+c)/2; return sqrt(s*(s-a)*(s-b)*(s-c)); }; void Input() { cin>>a>>b>>c; }}; void main()
{ Triangle t1; t1.Input(); if(a+b<=c||b+c<=a||a+c<=b)
cout<<\不能构成三角形\else cout< (2) 定义一个类,分别统计一串字符的大写字母、小写字母、空格、数字和其他字符的个数。 #include void CountCharByType(const char *s);}; void CStrCount::CountCharByType(const char *s) { int i=0; int ch=0,CH=0,num=0,blank=0,other=0; while(s[i]!='\\0') { if('0'<=s[i] &&s[i]<='9') { num++; i++; continue; } if('b'<=s[i] && s[i]<='z') {ch++; i++; continue; } if('A'<=s[i] && s[i]<='Z') { CH++; i++; continue; } if(s[i]==' ') { blank++; i++; continue; } other++; i++; } cout<<\数字个数:\ cout<<\小写字母个数:\ cout<<\大写字母个数:\ cout<<\空格个数:\ cout<<\其它字符个数:\} int main() { CStrCount st; char s[100]; cout << \请输入一组ASCII字符串:\ gets(s); st.CountCharByType(s); return 0; } (3) 定义一个类,要求:能计算一个n×n数据方阵的两条对角线元素之和。#include private: int n,sum; public: int set(int n); }; int juzheng::set(int n) { int a[100][100]; int z; z=n*n; cout<<\请输入矩阵的\个元素:\ int i,j,sum=0; for(i=0;i cout<<\输出这个方阵\for(i=0;i if(i==j||i+j==n-1) sum=a[i][j]+sum;} for(i=0;i if(i==j&&i+j==n-1) sum=sum+a[i][j]; } return sum; } int main(){ int n,sum=0; cout<<\请输入矩阵的阶:\cin>>n; juzheng a; sum=a.set(n); cout<<\该方阵的两条对角线的元素之和为:\cout< (4) 定义一个描述学生基本情况的类,数据成员包括姓名,学号,操作系统、计算机网络和数据库原理等课程成绩。成员函数包括设置姓名、学号和三门课程的成绩、输出数据、以及求每个学生的平均成绩。 #include char name[20]; char numb[20]; int OS,network,database; double aver; public: void get_student() { cout<<\请输入姓名:\ cin>>name; cout<<\请输入学号:\ cin>>numb; cout<<\请依次输入操作系统、计算机网络和数据库原理三门课成绩:\ cin>>OS>>network>>database; cout< aver=(double)(OS+network+database)/3; } void show_student() { cout<<\姓名:\ cout<<\学号:\ cout<<\操作系统成绩:\ cout<<\计算机网络成绩:\ cout<<\数据库原理成绩:\ cout<<\平均分:\ cout< { student A; A.get_student(); A.show_student(); return 0; } (5) 定义一个日期类,要求:能设置日期;能以“年/月/日”格式输出日期;能对某日期进行加一天的操作;能对某日期进行减一天的操作。(选做) #include int set(int y,int m,int d); int add(int y,int m,int d); int jian(int y,int m,int d); }; int data::set(int y,int m,int d) {cout< int data::add(int y,int m,int d) { if(y%4==0&&y0!=0||y@0==0) { if(m==1||m==3||m==5||m==7||m==8||m==10) {if(d==31){ m=m+1; d=1;} else d=d+1; } else if(m==4||m==6||m==9||m==11) {if(d==30){ m=m+1; d=1;} else d=d+1;} else if(m==2) {if(d==29){ m=m+1; d=1;} else d=d+1; } else {if(d==31){ y=y+1; m=1; d=1;} else d=d+1; } } else { if(m==1||m==3||m==5||m==7||m==8||m==10) {if(d==31){ m=m+1; d=1;} else d=d+1; } else if(m==4||m==6||m==9||m==11) {if(d==30){ m=m+1; d=1;} else d=d+1; } else if(m==2) {if(d==28){ m=m+1; d=1;} else d=d+1; } else {if(d==31){ y=y+1; m=1; d=1;} else d=d+1; } } cout< int data::jian(int y,int m,int d) { if(y%4==0&&y0!=0||y@0==0) { if(m==2||m==4||m==6||m==8||m==9||m==11) {if(d==1){ m=m-1; d=31;} else d=d-1; } else if(m==5||m==7||m==10||m==12) {if(d==1){ m=m-1; d=30;} else d=d-1; } else if(m==3) {if(d==1){ m=m-1; d=29;} else d=d-1; } else {if(d==1){ y=y-1; m=12; d=31;} } } else { if(m==2||m==4||m==6||m==8||m==9||m==11) {if(d==1){ m=m-1; d=31;} else d=d-1; } else if(m==5||m==7||m==10||m==12) {if(d==1){ m=m-1; d=30;} else d=d-1; } else if(m==3) {if(d==1){ m=m-1;d=28;} else d=d-1; } else {if(d==1){ y=y-1; m=12; d=31;} } } cout< cout<<\请输入年y 月m 日d\ cin>>y>>m>>d; data t; t.set(y,m,d); for(i=1;i<=3;i++){ cout<<\进行加一天运算:\ cout<<\进行减一天运算:\ cout<<\ cout<<\请输入选择:\ cin>>choice; if(choice==0) break; switch(choice){ case 1:data v; v.add(y,m,d);break; case 2:data z; z.jian(y,m,d);break; } } return 0; }