📄 ex5_5.cpp
字号:
#include <stdio.h>
static int daytab[2][13] = { /*C中二维数组实质上是一维元素是数组的数组,*/
{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}};
/*day _of_year: set day of year from month & day */
int day_of_year(int year, int month, int day)
{
int i, leap;
int (*p)[13];
p=daytab;
if(year<0)
{
printf("year error\n");
return -1;
}
leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
if(month>=13 || month<=0)
{
printf("month error\n");
return -1;
}
if(day>*(*(p+leap)+month))
{
printf("day error\n");
return -1;
}
for (i = 1; i < month; i++)
day += *(*(p+leap)+i);
return day;
}
/*day _of_month: set month, day from day of year */
int month_day(int year, int yearday,int *pmonth, int *pday)
{
int i, leap;
int (*p)[13];
p=daytab;
if(year<0)
{
printf("year error\n");
return -1;
}
leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
if((leap==1 && yearday>366) || (leap==0 && yearday>365))
{
printf("yearday error\n");
return -1;
}
for (i = 1; yearday > *(*(p+leap)+i);i++)
yearday -= *(*(p+leap)+i);
*pmonth = i;
*pday = yearday;
return 1;
}
void main()
{
int year,month,day,yearday,res;
printf("please input year:");
scanf("%d",&year);
printf("please input month:");
scanf("%d",&month);
printf("please input day:");
scanf("%d",&day);
yearday=day_of_year(year,month,day);
if(yearday!=-1)
printf("the result of yearday is %d\n",yearday);
printf("please input year:");
scanf("%d",&year);
printf("please input yearday:");
scanf("%d",&yearday);
res=month_day(year,yearday,&month,&day);
if(res!=-1)
printf("%d year %d yearday == %d year %d month %d day",year,yearday,year,month,day);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -