当前位置:编程学习 > C/C++ >>

(应用直接存取类线性表4.1.1)POJ 2080 Calendar(日期计算)

 
/* 
 * POJ_2080.cpp 
 * 
 *  Created on: 2013年10月25日 
 *      Author: Administrator 
 */  
#include <iostream>  
#include <cstdio>  
  
using namespace std;  
  
//将起始时间的星期数作为数组的第一个元素  
const char wstr[][20]={  
        "Saturday",  
        "Sunday",  
        "Monday",  
        "Tuesday",  
        "Wednesday",  
        "Thursday",  
        "Friday"  
};  
  
//计算year有多少天  
int days_of_year(int year){  
    if(year % 100 == 0){  
        return (year % 400 == 0) ? 366 : 365;  
    }  
  
    return (year % 4 == 0) ? 366 : 365;  
}  
  
//计算year的month月有多少天  
int days_of_month(int month,int year){  
    if(month == 2){  
        return days_of_year(year) == 366 ? 29 : 28;  
    }  
  
    int d;  
    switch(month){  
    case 1:  
    case 3:  
    case 5:  
    case 7:  
    case 8:  
    case 10:  
    case 12:  
        d = 31;  
    break;  
    default:  
        d = 30;  
    }  
  
    return d;  
}  
  
  
int main(){  
    int n;  
    while(scanf("%d",&n)!=EOF,n!=-1){  
        int year = 2000;  
        int month = 1;  
        int day = 1;  
        int weak = n % 7;  
  
        while(n){  
            if(n >= days_of_year(year)){  
                n -= days_of_year(year);  
                ++year;  
            }else if(n >= days_of_month(month,year)){  
                n -= days_of_month(month,year);  
                ++month;  
            }else{  
                day += n;  
                n = 0;  
            }  
        }  
  
        cout<<year<<"-"<<(month < 10 ? "0":"")<<month<<"-"<<(day < 10 ?"0":"")<<day<<" "<<wstr[weak]<<endl;  
    }  
  
    return 0;  
}  

 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,