C语言编写days函数 计算该日是该年的第几天

如题所述

#include<stdio.h>

int days(int y,int m,int d)

{int i,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

 if(y<1||m<1||d<1||d>a[m]+(y%4==0&&y%100>0||y%400==0))

 {printf("%d-%d-%d不是一个有效的日期!\n",y,m,d);

  return -1;

 }

 for(i=1;i<m;i++)

d+=a[i];

 return d;

}

int main()

{int year,month,day,answer;

 printf("请输入一个日期yyyy-mm-dd\n");

 scanf("%d-%d-%d",&year,&month,&day);

 answer=days(year,month,day);

 if(answer>0)

printf("%d-%d-%d 是该年的第 %d 天.\n",year,month,day,answer);

 getch();

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-23
/*临时写的*/
#include <stdio.h>
int days(int year, int month, int day) ;/*声明函数原型*/
int main()
{
int year, month, day ; /*year,month,day分别表示年、月、日*/
int total = 0 ; /*total表示该年的第几天*/
printf("输入年/月/日(如2012/1/1)\n") ;
scanf("%d/%d/%d", &year, &month, &day) ;
total = days(year, month, day) ;
printf("%d年%d月%d日是该年的第%d天\n", year, month, day, total) ;
return 0 ;
}

int days(int year, int month, int day)
{
/*
**days函数用来计算year年month月day日是该年份的第几天
*/

/*days数组表示一年的12个月份每个月的总天数,其中第二个月暂定为28天, 稍后判断是否为闰年,如果是闰年多加1天*/
int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31} ;
int i ;
int total = 0 ; /*total用来计算改日是该年的第几天*/

for(i = 0; i < month - 1; i++)
total += days[i] ;/*把该年份前几个月的总天数计算出来*/

total += day ;/*再加上当前Month月份的总天数*/
/*判断是否为闰年*/
if((year % 4 == 0 && year % 100 !=0) || year % 400 == 0)
{
/*判断月份month是否大于3月*/
if(month > 3)
total ++ ; /*如果概念是闰年并且月份大于3月,
那么就要二月就不是上面定义的28天,
而是29天,因此多加1天*/
}

return total ;
}
第2个回答  2012-09-23
看看这个程序吧,很简单,希望对你有帮助。
#include <stdio.h>
int main()
{
int n,r,y,i=0,sum=0;
int z[13]={31,0,31,30,31,30,31,31,30,31,30,31};
printf( "input date (yyyy/mm/dd):" );
scanf("%d/%d/%d",&n,&y,&r);
if ( (n%4==0&&n%100!=0) || n%400==0 )
z[1]=29 ;
else
z[1]=28;
for( i=0;i<y-1;i++ )
sum += z[i] ;
sum += r ;
printf( "%d/%d/%d is %dth day!",n,y,r,sum );
return 0;
}本回答被网友采纳
第3个回答  推荐于2016-05-20
#include"stdio.h"
main()
{
int y,m,d;
printf("Enter y,m,d:\n");
scanf("%d%d%d",&y,&m,&d);

printf("days=%d",days(y,m,d));
}
days(int y,int m,int d)
{

int i,sum=d;
for(i=1;i<m;i++)
{
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:sum+=31;break;

case 4:
case 6:
case 9:
case 11:sum+=30;break;

case 2:if(y%400==0||y%4==0&&y%100%100!=0)
sum+=29;
else sum+=28;
break;
}
}
return sum;

}本回答被提问者采纳
第4个回答  2012-09-23
main()
{
intday,month,year,sum,leap;
printf("\npleaseinputyear,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)/*先计算某月以前月份的总天数*/
{
 case1:sum=0;break;
 case2:sum=31;break;
 case3:sum=59;break;
 case4:sum=90;break;
 case5:sum=120;break;
 case6:sum=151;break;
 case7:sum=181;break;
 case8:sum=212;break;
 case9:sum=243;break;
 case10:sum=273;break;
 case11:sum=304;break;
 case12:sum=334;break;
 default:printf("dataerror");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("Itisthe%dthday.",sum);
}
相似回答