一个简单的日期转换程序

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

  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!");

	}
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值