【NYOJ】[75]日期计算

这里写图片描述

又是一个涉及到闰年判断的题目
不过现在看 应该已经难不倒我了

#include<stdio.h>
int main() {
    int T;
    scanf("%d",&T);
    while(T--) {
        int month[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
        int y,m,d;
        scanf("%d %d %d",&y,&m,&d);
        if(y%400==0||(y%100&&y%4==0))
            month[1]++;
        int sum=0;
        for(int i=0; i<m-1; i++) {
            sum+=month[i];
        }
        printf("%d
",sum+d);
    }
    return 0;
}

标程的亮点是通过
switch运行到底的特性
(不遇到break;便会继续运行下一个case)
巧妙地区分了31天与30天的年份

#include<stdio.h>
int main() {
    int a,b=0,c,y,m,d,fib;
    scanf("%d",&a);
    while(a--) {
        scanf("%d %d %d",&y,&m,&d);
        if(y%400==0||y%100!=0&&y%4==0)
            fib=29;
        else fib=28;
        for(c=1; c<=m; c++)
            switch(c-1) {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                    b+=31;
                    break;
                case 2:
                    b+=fib;
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    b+=30;
                    break;
            }
        b+=d;
        printf("%d
",b);
        b=0;
    }
    return 0;
}

题目地址:【NYOJ】[75]日期计算

原文地址:https://www.cnblogs.com/BoilTask/p/12569871.html