/* 某月某日这种日期表示形式转换成某年中第几天的表示形式及相反的问题。 */
#include <stdio.h>
#include <stdlib.h>
int month_to_day(int year, int month, int day, int a[][13]);//某月某日转换成第几天
void date_to_month(int year, int date,int a[][13], int *month, int *day); //某年中的第几天转换成某月某日
int leap_year(int year);//判断是不是闰年,是返回1,不是返回0
int main(){
int a[][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}};
int dates;
int year, month, day;
int(*p)[13] = a;
printf("输入年月日:");
scanf("%d%d%d", &year,&month,&day);
dates = month_to_day(year, month, day, a);
printf("这是%d年的%d天.\n", year, dates);
printf("输入年份和天数:");
scanf("%d%d", &year,&dates);
date_to_month(year, dates, a, &month, &day);
printf("这是%d年的%d月%d日。\n",year,month,day);
return 0;
}
/* 判断是不是闰年 */
int leap_year(int year){
return (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) ? 1:0;
}
/* 将某年某月某日转换成一年中的第几天 */
int month_to_day(int year, int month, int day,int a[][13]){
int leap = leap_year(year);
int dates = 0;
int i = 0;
if(leap){//是闰年
for (i = 0; i < month;i++){
dates += a[leap][i];
}
dates += day;
return dates;
}
else {//不是闰年
for (i = 0; i < month;i++){
dates += a[leap][i];
}
dates += day;
return dates;
}
}
/* 将某年的第几天转换成某年的某月某日 */
void date_to_month(int year, int date,int a[][13],int *month ,int *day){
int i= 0;
int leap = leap_year(year);
*month = 0;
*day = 0;
if (leap){
for (*month = 0; date > a[leap][*month];(*month)++){
date = date - a[leap][*month];
}
*day = date;
}else{
for (*month = 0; date > a[leap][*month];(*month)++){
date = date - a[leap][*month];
}
*day = date;
}
}
某月某日这种日期表示形式转换成某年中第几天的表示形式及相反的问题。
最新推荐文章于 2023-01-07 00:43:58 发布