| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 845 人关注过本帖
标题:一个输入日期并显示自增一天日期的代码。
只看楼主 加入收藏
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
结帖率:100%
收藏
 问题点数:0 回复次数:5 
一个输入日期并显示自增一天日期的代码。
好久没发帖子了。发一个上课时候的练习。
程序代码:
// 显示日期.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<iomanip>
using namespace std;

class Date
{
    int year,month,day;
public:
    void set(int y,int m,int d);
    bool add();
    bool isLeapYear();
    void print();
};

void Date::set(int y,int m,int d)
{
    year=y;
    month=m;
    day=d;
}

bool Date::isLeapYear()
{
    return (year%4==0 && year%100!=0)||(year%400==0);
}
bool Date::add()
{
    ++day;
    int max_1,max_2,max_3,max_4,max_5,max_6,max_7,max_8,max_9,max_10,max_11,max_12,max_day;
    if(isLeapYear())
    {max_1=31;
     max_2=29;
     max_3=31;
     max_4=30;
     max_5=31;
     max_6=30;
     max_7=31;
     max_8=31;
     max_9=30;
     max_10=31;
     max_11=30;
     max_12=31;
    }
    else
    {
     max_1=31;
     max_2=28;
     max_3=31;
     max_4=30;
     max_5=31;
     max_6=30;
     max_7=31;
     max_8=31;
     max_9=30;
     max_10=31;
     max_11=30;
     max_12=31;
    }
    switch(month)
        {case 1:

            max_day=max_1;
            break;
        case 2:

            max_day=max_2;
            break;
        case 3:

            max_day=max_3;
            break;
        case 4:

            max_day=max_4;
            break;
        case 5:

            max_day=max_5;
            break;
        case 6:

            max_day=max_6;
            break;
        case 7:

            max_day=max_7;
            break;
        case 8:

            max_day=max_8;
            break;
        case 9:

            max_day=max_9;
            break;
        case 10:

            max_day=max_10;
            break;
        case 11:

            max_day=max_11;
            break;
        case 12:

            max_day=max_12;
            break;
        //default cout<<"错误";//
    }
    if(day>max_day)
    {
        day=1;
        ++month;
        if(month>12)
        {
            ++year;
            month=1;
        }
    }

    return 0;
}
   

void Date::print()
{
    cout<<setfill('0');
    cout<<setw(4)<<year<<'/'<<setw(2)<<month<<'/'<<setw(2)<<day<<'\n';
    cout<<setfill(' ');
}

int main()
{
    Date d;
    cout<<"请输入一个四位的阿拉伯数字表示的年,一个两位阿拉伯数字表示的月,一个两位的阿拉伯数字表示的日,并用回车分别输入"<<'\n';
    int s_y,s_m,s_d;
    cin>>setw(4)>>s_y>>setw(2)>>s_m>>setw(2)>>s_d;
    d.set(s_y,s_m,s_d);
    d.add();
    d.print();
    system("pause");
}
搜索更多相关主题的帖子: 应用程序 控制台 
2011-04-07 12:57
Lyone
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:99
专家分:195
注 册:2010-12-7
收藏
得分:0 
CTimeSpan这个类也不错
2011-04-08 14:14
creep林
Rank: 1
等 级:新手上路
帖 子:14
专家分:4
注 册:2011-4-9
收藏
得分:0 
很好!!!上下衔接我觉得很值得学习!!
2011-04-09 16:20
wolonga123
Rank: 2
等 级:论坛游民
帖 子:25
专家分:35
注 册:2010-9-16
收藏
得分:0 
适合新手学习
2011-04-13 21:29
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
add() 的代码太长了。像这种很明显就应该用数组,不然不管是写起来还是看起来都很费劲。

像那个 swithc,本来一个 max_day = max[month] 这样一个语句就能完成的任务,不用数组就会变成他的那个样子。
而且是不是闰年的区别,就是二月,没有必要写两回。只写一次,加个类似 if (isLeapYear()) ++max[2]; 的语句就行了。
2011-04-14 17:20
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:0 
回复 5楼 pangding
受教。谢谢指导。
2011-04-14 19:35
快速回复:一个输入日期并显示自增一天日期的代码。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019924 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved