32_变量的存储类别

//_32_变量的存储类别
//_32_main.cpp

//静态存储变量是程序整合运行时间都存在
//动态存储变量实在调用函数时临时分配单元

//给出年月日,计算改日是这一年的第几天

#include <stdio.h>
#include <stdlib.h>
int sum_day(int month,int day);
bool leap(int leap);
bool ifTrueDay(int year,int month,int day);
int main()
{
	int year,day,month;
	do{
	printf("请输入日期(年,月,日):\n");
	scanf("%d %d %d",&year,&month,&day);
	}//保证年份月份日期大于零,且日期要符合月份的限制
	while(year<0||day<0||month<0||month>12||!ifTrueDay(year,month,day));
	if(leap(year))
		printf("%d年是闰年\n",year);
	else
		printf("%d年不是闰年\n",year);
	printf("%d年%d月%d日",year,month,day);

	int days = sum_day(month,day);
	if(leap(year)&&month>=3)
		days = days + 1;
	printf("是该年的第%d天.\n",days);

	system("pause");
	return 0;
}

//定义静态存储变量并赋值
static int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

int sum_day(int month,int day)
{
	for(int i=0;i<month;i++)
		day= day+day_tab[i];
	return day;
}

bool leap(int year)
{
	if(year%4==0&&year%100!=0 || year%400==0)
		return true;
	return false;
}

//判断天数是否是正确的
bool ifTrueDay(int year,int month,int day)
{
	switch(month)
	{
	case 2:
		if(leap(year))
			if(day>29)
				return false;
			else
				return true;
		else
			if(day>28)
				return false;
			else
				return true;
		break;
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		if(day>31)
			return false;
		else
			return true;
		break;
	case 4:
	case 6:
	case 9:
	case 11:
		if(day>30)
			return false;
		else
			return true;
		break;
	default:
		exit(1);//非正常退出
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值