一个简单的日期转换程序

来源:互联网 发布:策略交易软件 编辑:程序博客网 时间:2024/05/22 10:23

编程解决日期转换问题具体要求如下:

  1. 任意给定某年某月某日,打印出他是这一年的第几天。
  2. 已知某年的第几天,计算他是这一年的第几月第几日
#include <stdio.h>#include <stdlib.h>static int dayTab[][13] = {{0,31,28,31,30,31,31,30,3130,31},{0,31,29,31,30,31,31,30,3130,31}};/*函数功能:对给定的某年某月某日计算出他在这一年的第几天函数参数:整型变量year,month,day,分别代表年,月,日函数返回值:这一年的第几天*/int DayofYear(int year,int month,int day){int i,leap;/*若year为闰年,则leap值为1,就用第二行元素dayTab[1][i]计算,否则leap值为0,用第一行dayofTab[0][i],则dayofTab[leap][i]计算*/leap = (((year%4 == 0)&&(year%100 !=0))||(year%400 == 0));for(i=1;i<month;i++){day = day + dayTab[leap][i];}return day;}/*函数功能:对给定的某一年的第几天,计算出他是这一年的第几月第几日函数入口参数:整形变量year,存储年;整形变量 yearDay存储这一年的第几天函数出口参数:整形指针pMonth,指向存储这一年第几月的整形变量整形指针pDay指向存储第几日的整形变量函数返回值:无*/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;/*将计算出的月份值赋给pMonth所指向的变量*/*pDay = yearDay;/*将计算出的日号赋值给pDay所指向的变量*/}/*函数功能:显示菜单函数参数:无函数返回值:无*/void Menu(void){printf("1.year/month/day->yearDay\n");printf("2.yearDay->year/month/day\n");printf("Exit\n");printf("Please enter your choice:");}/*主函数*/void main(){int year,month,day,yearDay;char c;Menu();/*调用函数Menu()显示一个固定式菜单*/c = getchar();/*请输入选择*/switch(c){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 the year,yearDay:");scanf("%d,%d",&year,&yearDay);MonthDay(year,yearDay,&month,&day);printf("month=%d,day=%d",&month,&day);break;case '3':exit(0);break;default:printf("Input error!");}}