标签:转换 int 31 month 问题 日期 year yearday day
编程解决如下日期转换问题:
1任意给定某年某月某日,打印出它是这一年的第几天。
2已知某一年的第几天,计算它是这一年的几月几日。
#include<stdio.h>
#include<stdlib.h>
static int daytab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
void menu();
void monthday(int year,int yearday,int *pmonth,int *pday);
int dayofyear(int year,int month,int day);
int main()
{
int year,month,day,yearday,choice;
menu();
scanf("%d",&choice);
switch(choice)
{
case 1:printf("please enter year,month,day:");
scanf("%d,%d,%d",&year,&month,&day);
yearday=dayofyear(year,month,day);
printf("yearday=%d\n",yearday);
break;
case 2:printf("please enter year,yearday");
scanf("%d,%d",&year,&yearday);
monthday(year,yearday,&month,&day);
printf("month=%d,day=%d\n",month,day);
break;
case 3:exit(0);
default:printf("input error!");
}
return 0;
}
void menu()
{
printf("1.year/month/day->yearday\n");
printf("2.yearday-->year/month/day\n");
printf("3.exit\n");
printf("please enter your choice:");
}
void monthday(int year,int yearday,int *pmonth,int *pday)
{
int i,leap;
leap=((year%4==0)&&(year%100!=0))||(year%400==0);
for(i=1;yearday>daytab[leap][i];i++)
{
yearday=yearday-daytab[leap][i];
}
*pmonth=i;
*pday=yearday;
}
int dayofyear(int year,int month,int day)
{
int i,leap;
leap=((year%4==0)&&(year%100!=0))||(year%400==0);
for(i=1;i<month;i++)
{
day=day+daytab[leap][i];
}
return day;
}
标签:转换,int,31,month,问题,日期,year,yearday,day 来源: https://blog.csdn.net/weixin_45721340/article/details/122602642
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。