编程之美2015资格赛之2.29

一名普通大学生在老师的推荐下参加了微软的编程之美挑战赛,并完成了第一题。本文分享了该学生用C语言实现的代码,用于计算两个日期间包含的闰年数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先说明本人是个普通大学里面的普通大学生,这是我的第一篇博文,写点生活中的小事琐事,当成日记了哈哈。编程之美2015资格赛之2.29开始写博文是因为想在老了的时候能够有回忆的资本,起码还能够想起那些年,在一起做的努力。编程之美2015资格赛之2.29,,,在老师和教练的推荐下参加了微软的编程之美挑战赛,今晚刚好做完第一题,因为接触编程的时间也不是很久,所以分享的代码有可能通不过大数据的考验,也请大神们多多指教.代码敬上:

#include<stdio.h>
#include<string.h>
int mo(char month[])//将月份从字符串换成整型变量
{
    int x;
         if(!strcmp(month,"January"))   x=1 ;
    else if(!strcmp(month,"February"))  x=2 ;
    else if(!strcmp(month,"March"))    x=3 ;
    else if(!strcmp(month,"April"))     x=4 ;
    else if(!strcmp(month,"May"))       x=5 ;
    else if(!strcmp(month,"June"))      x=6 ;
    else if(!strcmp(month,"July"))      x=7 ;
    else if(!strcmp(month,"August"))    x=8 ;
    else if(!strcmp(month,"September")) x=9 ;
    else if(!strcmp(month,"October"))   x=10;
    else if(!strcmp(month,"November"))  x=11;
    else if(!strcmp(month,"December"))  x=12;
    return x;
}
int main(void)
{
    char a[20];
    int m1,m2,d1,d2,y1,y2,T,z,i=1;//y为年,m为月,d为日,加序号是区别第一年和第二年
    scanf("%d",&T);
    while(i<=T){
        scanf("%s%d,%d",&a,&d1,&y1);
        m1=mo(a);
        scanf("%s%d,%d",&a,&d2,&y2);
        m2=mo(a);
        z=0;

        if( (y1%4==0 && y1%100!=0) || y1%400==0 )

                if( (m1<2 || (m1==2 && d1<=29)) )
                    if( y2>y1 ||(y1==y2 && (m2>2 || (m2==2 && d2==29)) ) )
                            z++;
        y1++;
        while(y1<y2){
            if( (y1%4==0 && y1%100!=0) || y1%400==0 )
                z++;
            y1++;
        }
        if(y1==y2)
            if( (y2%4==0 && y2%100!=0) || y2%400==0 )
                if(m2>2 || (m2==2 && d2==29))
                    z++;
        printf("Case #%d: %d\n",i++,z);
    }
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值