【#第一文档网# 导语】以下是®第一文档网的小编为您整理的《编写一个函数,给出年、月、日,计算该日是本年第几天。》,欢迎阅读!
#include <stdio.h>
int date(int a,int b,int c);
void main()
{
int days,x,y,z;
printf("year:\n");
scanf("%d",&x);
printf("month:\n");
scanf("%d",&y);
printf("day:\n");
scanf("%d",&z);
days=date(x,y,z);
if (days==0)
printf("error!\n");
else
printf("%d\n",days);
}
int date(int a,int b,int c)
{
int sum,n;
if (a%100!=0&&a%4==0||a%400==0)
n=-1;
else
n=-2;
if (b<0||12<b)
sum=0;
else
sum=30*(b-1);
switch (b)
{
case 1:
case 2:
sum=sum+b/2;
break;
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
sum=sum+b/2+n;
break;
case 9:
case 10:
case 11:
case 12:
sum=sum+(b-1)/2+n;
break;
}
if (0<=b||b<=12)
{
if (b%2!=0)
{
if(c<=0||c>31)
sum=0;
else
sum=sum+c;
}
else
{
if(b==2)
{
switch (n)
{
case -1:
if (c<=0||c>29)
sum=0;
else
sum=sum+c;
break;
case -2:
if (c<=0||c>28)
sum=0;
else
sum=sum+c;
break;
}
}
else if (c<=0||c>30)
sum=0;
else
sum=sum+c;
}
}
return sum;
}