判断某一天为一年中的哪一天
输入样例:
2012 3 17
输出样例:
2012的第77天
方法1:
代码入下:
#include"stdio.h"
void mt(int *a,int *b,int *c)
{
int sum,d;
switch (*b) //从1月份开始遍历寻找,遍历到对应月份结束并进行下一语句
{
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+*c;//加上对应月份的日期
if((*a%400==0)||(*a%4==0)&&(*a%100!=0))//判断是否为闰年,若为闰年则2月为29天须加1
d=1;
else
d=0;
sum++;
printf("%d年的第%d天\n",*a,sum);
}
int main()
{
int *a,*b,*c,m,n,p;
a=&m;b=&n;c=&p;
scanf("%d %d %d",&m,&n,&p);
mt(a,b,c);
return 0;
}
方法2:
代码如下:
#include "stdio.h"
struct Y_m_d
{
int year;
int month;
int day;
};
struct Y_m_d ymd;
void days(struct Y_m_d ymd)//定义函数的括号内为结构体变量,不能用成员名
{
int sum;
switch(ymd.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+ymd.day;
if(ymd.year%4==0 && ymd.year%100!=0 || ymd.year%400==0)
sum++;//若为闰年2月多1天,加上1
printf("%d年的第%d天",ymd.year,sum);
}
int main()
{
scanf("%d%d%d",&ymd.year,&ymd.month,&ymd.day);
days(ymd);
return 0;
}