今年第几天?

今年第几天?

时间: 1ms        内存:128M

描述:

定义一个函数,其参数为年、月、日的值,返回这一天为该年的第几天。要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果。

输入:

年、月、日3个整数(不考虑非正常的年月日)

输出:

这一天为这一年的第几天

示例输入:

1980 4 18

示例输出:

109

提示:

参考答案(内存最优[920]):

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a1,b,c,s=0,i;
    int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    scanf("%d%d%d",&a1,&i,&c);
    if(a1%4==0&&a1%100!=0||a1%400==0)a[1]=29;else a[1]=28;
    for(b=0;b<i-1;b++)
        s+=a[b];
    s+=c;
    printf("%d\n",s);
    return 0;
}

参考答案(时间最优[0]):

#include<iostream>
using namespace std;
int days(int y,int m,int d)
{
	int a=0,b=0;
	switch (m-1)
	{
		case 1:a=1;break;
		case 2:a=-1;break;
		case 3:a=0;break;
		case 4:a=0;break;
		case 5:a=1;break;
		case 6:a=1;break;
		case 7:a=2;break;
		case 8:a=3;break;
		case 9:a=3;break;
		case 10:a=4;break;
		case 11:a=4;break;
		case 12:a=5;break;
	}
	if (m>=2)
	        if ((y%4==0&&y%100!=0)||(y%400==0))
	        b=1;
	        else b=0;
	      cout<<(d=(30*(m-1)+d+a+b));
	        return d;
}

int main ()
{
	int year,month,day;
	cin>>year>>month>>day;
	days(year,month,day);
	return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注