数学问题——日期

2019-03-08  本文已影响0人  欢城深喟

知识点

因为每个月的天数是固定的(2 月单独讨论),可以用一个数组预先存储好每个月累加的天数,需要访问第 n 个月的天数时直接从数组中取出前 n-1 个月的天数,避免计算机重复计算耗费大量时间。

scanf() 注意 & 符号不要忘了

代码

#include<stdio.h>

int days[13] = {0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; 

bool isLeapYear(int y){ //判断是否是闰年
    
    if(y%100 == 0){ //整百年 
        
        if(y%400 == 0)  return true;
        else            return false;
    }
    else{ //非整百年 
        
        if(y%4 == 0)    return true;
        else        return false;
    }
}

int main(){
    
    int y, m, d;
    int T;
    scanf("%d", &T);
    
    
    while(T--){
    
        int ans;
        scanf("%d:%d:%d",&y,&m,&d);
        
        if(isLeapYear(y)){
            
            if(m <= 2){
                
                ans = days[m] + d;
            }
            else{
                
                ans = days[m] + d + 1; 
            }
        }
        else{
            ans = days[m] + d;
        }
        
        printf("%d\n", ans);    
    }
} 
上一篇下一篇

猜你喜欢

热点阅读