第三周报告2-1::
实验目的:找出程序错误,并改正。
实验内容:运行时正确输入时分秒。
* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2012烟台大学计算机学院学生
* All rights reserved.
* 文件名称: array.cpp
* 作 者: 刘镇
* 完成日期: 2012 年 3 月 4 日
* 版 本 号: 1.029
* 对任务及求解方法的描述部分
* 输入描述:时、分、秒
* 问题描述:将程序通读一遍,找出语法错误,理解程序的目的,根据理解改正并运行。
* 程序输出:时、分、秒
运行结果:
实验目的:找出程序错误,并改正。
实验内容:运行时正确输入时分秒。
* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2012烟台大学计算机学院学生
* All rights reserved.
* 文件名称: array.cpp
* 作 者: 刘镇
* 完成日期: 2012 年 3 月 4 日
* 版 本 号: 1.029
* 对任务及求解方法的描述部分
* 输入描述:时、分、秒
* 问题描述:将程序通读一遍,找出语法错误,理解程序的目的,根据理解改正并运行。
* 程序输出:时、分、秒
* 程序头部的注释结束
原程序:
#include <iostream>
using namespace std;
class Time
{
void set_time(void) ;
void show_time(void);
int hour;
int minute;
int sec;
}; //谨慎地将数据成员声明为公有,必要时只为本类内使用的成员函数作为私有类型
Time t; //从语法角度,也无任何问题。但是任何时候,使用全局变量(对象)
/*坏点!改造程序时将t的定义放入main()函数中,作局部变量(对象)使用。
本题只在于创建一个时间对象并显示,这样做是合适的*/
int main()
{
set_time(); //因为set_time()在后面并未被定义为成员函数;
//另外,若真不将set_time()作为成员函数对待的话,先调用、后定义也不妥。
show_time();
return 0;
}
int set_time(void)
{
cin >> t.hour;
cin >> t.minute;
cin >> t.sec;
}
int show_time(void)
{
cout << t.hour << ":"<< t.minute << ":" << t.sec << endl;
}
修改后:
#include<iostream>
using namespace std;
class Time
{
public: // 此处加上公共数据的限定,原先未说明,默认是私有的数据。
void set_time(void);
void show_time(void);
private: // 加上私有数据限定,表明仅能通过公共数据中成员函数调用。
int hour;
int minute;
int sec;
};
Time t;
int main()
{
t.set_time(); //访问对象中成员的一般形式:对象名.成员名
t.show_time(); //同上改动
return 0;
}
void Time::set_time(void) //返回值类型在类的声明时已经确定是空类型void,此处将int该做void.
{
cin >> hour; //既然是成员函数就可以调用私有数据,且不必用访问对象成员的形式
cin >> minute; //同上改动
cin >> sec; //同上改动
}
void Time::show_time(void)
{
cout << hour << ":" << minute << ":" << sec << endl; //同上改动
}
运行结果:
经验积累:
1、还是考验对class的熟练,和读程序的能力。
2、struct中是默认为公共数据,class默认为私有数据,类外的引用公共成员函数类型。
上级感言:
对于类来说,如果你比较熟结构体,那么class就水到渠成,真的不难。只不过是某些方面有点不同。读错误的提示也是对程序的理解深化哟。