今年第几天?
时间: 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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。
