《C++面向对象程序设计》第一次实验

实验一 类与结构

1、实验目的

·了解和使用 VC++的集成开发环境。

·熟悉 VC++集成开发环境的基本编辑命令及功能键 , 学会常规窗口操作。熟悉常用功能菜单命令。

·学习完整的 C++ 程序开发过程 ( 编辑、编译、连接、调试、运行及查看结果 ).理解简单的 C++ 程序结构。

·通过实验理解类与结构的区别,掌握类的定义,了解用户自定义数据类型。

·理解标准库函数,学习基本流输入输出(cout,cin)的用法。

·理解表达式的优先级、组合方式及语句及语句块。

2、实验内容

应用VC++6.0的编辑环境构造一个类Date,该类主要实现日期的基本操作,例如初始化(非构造函数)、求当前日期为星期几、当前年份是否为闰年、该日为该年第几天、输出等,具体说明如下:

该类拥有三个私有(或保护)成员变量yearmonthday,分别代表日期中的年、月、日,成员函数有初始化函数、判断该年份是否为闰年函数、求当前日期为星期几函数、该日为该年第几天,结果输出函数等。

其中:

1. 判断某一年是否为闰年的算法:

该年份数字能被4整除但不能被100整除,或者能被4整除同时可被400整除,则为闰年

2.求当前日期为星期几的算法:

    1000111日为星期一,可以计算从该天到当前日期的天数,然后除7求余,如余1则为星期一 

    2if(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");

}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值