实验一 类与结构
1、实验目的
·了解和使用 VC++的集成开发环境。
·熟悉 VC++集成开发环境的基本编辑命令及功能键 , 学会常规窗口操作。熟悉常用功能菜单命令。
·学习完整的 C++ 程序开发过程 ( 编辑、编译、连接、调试、运行及查看结果 ).理解简单的 C++ 程序结构。
·通过实验理解类与结构的区别,掌握类的定义,了解用户自定义数据类型。
·理解标准库函数,学习基本流输入输出(cout,cin)的用法。
·理解表达式的优先级、组合方式及语句及语句块。
2、实验内容
应用VC++6.0的编辑环境构造一个类Date,该类主要实现日期的基本操作,例如初始化(非构造函数)、求当前日期为星期几、当前年份是否为闰年、该日为该年第几天、输出等,具体说明如下:
该类拥有三个私有(或保护)成员变量year、month、day,分别代表日期中的年、月、日,成员函数有初始化函数、判断该年份是否为闰年函数、求当前日期为星期几函数、该日为该年第几天,结果输出函数等。
其中:
1. 判断某一年是否为闰年的算法:
该年份数字能被4整除但不能被100整除,或者能被4整除同时可被400整除,则为闰年
2.求当前日期为星期几的算法:
(1)0001年1月1日为星期一,可以计算从该天到当前日期的天数,然后除7求余,如余1则为星期一
(2)if(month==1||month==2) { year -=1; month +=12; }
return (day+1+2*month+3*(month+1)/5+year+(year/4)-year/100+year/400)%7;
3.求该日为该年第几天:
可以用循环实现,注意闰年的情况。
Code:
#include<iostream.h>
#include<stdlib.h>
class Date{
private:
int year;
int month;
int day;
public:
void set(int y, int m, int d);
void show();
int leap();
int week();
int days();
};
void Date::set(int y, int m, int d)
{
year=y;
month=m;
day=d;
}
void Date::show()
{
cout<<"The date was set as "<<year<<'.'<<month<<'.'<<day<<endl;
}
int Date::leap()
{
if((year%4==0&&year%100!=0)||year%400==0)
return 1;
else
return 0;
}
int Date::week()
{
long temp;
int n;
temp=(year-1)*365+year/4-year/100+year/400+Date::days();
n=temp%7;
return n;
}
int Date::days()
{
int temp;
switch(month)
{
case 1:temp=day;break;
case 2:temp=31+day;break;
case 3:temp=59+day;break;
case 4:temp=90+day;break;
case 5:temp=120+day;break;
case 6:temp=151+day;break;
case 7:temp=181+day;break;
case 8:temp=212+day;break;
case 9:temp=243+day;break;
case 10:temp=273+day;break;
case 11:temp=304+day;break;
case 12:temp=334+day;break;
default:;
}
if(month>2&&Date::leap()==1)
temp=temp+1;
return temp;
}
void main()
{
Date date;
int y,m,d;
cout<<"Please enter the date..."<<endl;
cout<<"Year :";
cin>>y;
cout<<"Month :";
cin>>m;
cout<<"Day :";
cin>>d;
date.set(y,m,d);
date.show();
if(date.leap())
cout<<"This year is leap year!"<<endl;
else
cout<<"This year is not leap year!"<<endl;
switch(date.week())
{
case 0:cout<<"Today is Sunday!"<<endl;break;
case 1:cout<<"Today is Monday!"<<endl;break;
case 2:cout<<"Today is Tuesday!"<<endl;break;
case 3:cout<<"Today is Wednesday!"<<endl;break;
case 4:cout<<"Today is Thursday!"<<endl;break;
case 5:cout<<"Today is Friday!"<<endl;break;
case 6:cout<<"Today is Saturday!"<<endl;break;
default:;
}
cout<<"Today is the "<<date.days()<<"th day of this year!"<<endl;
system("pause");
}