1960 - 日期计算

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

如题,输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。

题目输入

第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每行的输入数据都是一个按题目要求格式输入的日期。

题目输出

每组输入数据的输出占一行,输出判断出的天数n

输入/输出样例

输入格式

3
2000 4 5
2001 5 4
2010 10 24

输出格式

96
124
297

C语言解答

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

C++解答

#include<bits/stdc++.h>
using namespace std;
int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int y)
{
	if(y%4==0&&y%100!=0||y%400==0)
	{
		return true;
	}
	return false;
}
int main()
{
	int n;
	cin>>n;
	while(n--)
	{
		int y,m,d;
		cin>>y>>m>>d;
		int cnt=0;
		for(int i=1;i<m;i++)
		{
			cnt+=a[i];
		}
		cnt+=d;
		if(m>2&&check(y)) cnt++;
		cout<<cnt<<endl;
	}
}