怎么计算某日为该年的第几天
如何计算某日为该年的第几天?
如何计算某日为该年的第几天?这题应该怎么想?不用写程序!说说算法!
------解决方案--------------------
daysofmonth[] = {31,28,...}
x月就把前x-1个加起来再加y日,闰年2月以后再加1
------解决方案--------------------
算法:
1,先判断是否是润年:公式都已经普的很普及了
2,如果是润年,则2月是29天,不是28天
3,列表:int days[12]= {31,28,31,30,31,30,31,31,30,31,30,31}
列表:润年:int days2[12]= {31,29,31,30,31,30,31,31,30,31,30,31}
4, m月 d 号:
m==1, n=d;
m>1
n= days[0]+days[1]+...days[m-2] +d
n 表示改年第几天
------解决方案--------------------
# include "stdio.h"
void main ()
{
int leap (int);
int year,month,day,i,n=0;
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf ("请输入日期(形如:2007/4/19)");
scanf ("%d/%d/%d",&year,&month,&day);
if(leap(year))
a[1]=29;
if(month!=1)
for(i=0;i<=month-2;i++)
n+=a[i];
n+=day;
printf ("这是%d年的第%d天",year,n);
}
int leap(int year)
{
int z;
z=(year%400==0)||(year%4==0&&year%100!=0);
return z;
}
------解决方案--------------------
原帖:
http://topic.csdn.net/u/20100310/19/685e161c-d246-45af-a5e8-12d8d518095c.html
如何计算某日为该年的第几天?这题应该怎么想?不用写程序!说说算法!
------解决方案--------------------
daysofmonth[] = {31,28,...}
x月就把前x-1个加起来再加y日,闰年2月以后再加1
------解决方案--------------------
算法:
1,先判断是否是润年:公式都已经普的很普及了
2,如果是润年,则2月是29天,不是28天
3,列表:int days[12]= {31,28,31,30,31,30,31,31,30,31,30,31}
列表:润年:int days2[12]= {31,29,31,30,31,30,31,31,30,31,30,31}
4, m月 d 号:
m==1, n=d;
m>1
n= days[0]+days[1]+...days[m-2] +d
n 表示改年第几天
------解决方案--------------------
# include "stdio.h"
void main ()
{
int leap (int);
int year,month,day,i,n=0;
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf ("请输入日期(形如:2007/4/19)");
scanf ("%d/%d/%d",&year,&month,&day);
if(leap(year))
a[1]=29;
if(month!=1)
for(i=0;i<=month-2;i++)
n+=a[i];
n+=day;
printf ("这是%d年的第%d天",year,n);
}
int leap(int year)
{
int z;
z=(year%400==0)||(year%4==0&&year%100!=0);
return z;
}
------解决方案--------------------
原帖:
http://topic.csdn.net/u/20100310/19/685e161c-d246-45af-a5e8-12d8d518095c.html
- C/C++ code
#include <stdio.h> struct date { int year; int month; int day; }; int is_leap_year(int year) { return year % 4 == 0 && year % 100 != 0 || year % 400 == 0; } int day_of_year(struct date *d) { static int data[2][12] = {{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}}; int i, j; int result = d->day; j = is_leap_year(d->year); for (i = 0; i < d->month-1; ++i) { result += data[j][i]; } return result; } int main() { struct date d; /* d.year = 2010; d.month = 3; d.day = 10; */ printf("请输入年月日(yyyy-mm-dd): "); scanf("%d-%d-%d", &d.year, &d.month, &d.day); printf("%d年%d月%d日是该年中的第%d天.\n", d.year, d.month, d.day, day_of_year(&d)); return 0; }
------解决方案--------------------
题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:
main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)/*先计算某月以前月份的总天数*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day; /*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("It is the %dth day.",sum);}
从这抄的:http://tieba.baidu.com/f?kz=8618367
------解决方案--------------------