基于C语言实现输入年、月、日来判断输入的是该年份的第几天(算法)_☆*往事随風*☆的博客

输入年、月、日来判断输入的是该年份的第几天

实现方法

主要是通过数组来实现对天数的遍历,首先将每个月的天数存放到一维数组里边,然后根据输入的年、月、日来推算所输入日期是第几天,其中需要注意的就是瑞年的情况,当出现瑞年的时候,三月以及之后的月份都要多加上一天.

运行结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实现代码

/*头文件*/
#include<stdio.h>
#include<windows.h>
/*函数声明*/
void demo();

/*主函数、程序的入口*/
int main()
{	
	system("color 6");
	while(1){
		printf("\t\t\t\t《给出年月日,计算该日是该年的第几天》\n\n");
		demo();
		system("pause");
		system("cls");
	}
	return 0;
}
/*计算天数*/
void demo()
{
	int i,sum=0,day_s;
	int year,mon,day;
	int mus[]={31,28,31,30,31,30,31,31,30,31,30,31};
	printf("请输入日期:");
	scanf("%d%d%d",&year,&mon,&day);
	while(1){
		if((mon<13&&mon>0)&&(day<32&&day>0)){
		       break;
		}
		/*判断输入的年、月、日是否正确*/
	    if((mon>=13||mon<=0)&&day>=32||day<=0){
		  printf("你输入的月份和日期有误!请重新输入年、月、日:");
		  scanf("%d%d%d",&year,&mon,&day);continue;   
		}
		else if(mon>=13||mon<=0){
		   printf("你输入的月份有误!请重新输入年、月、日:");
		   scanf("%d%d%d",&year,&mon,&day);continue;
		}
		else if(day>=32||day<=0){
		   printf("你输入的日期有误!请重新新输入年、月、日:");
		   scanf("%d%d%d",&year,&mon,&day);continue;
		}
		else break;
	}
	for(i=0;i<mon-1;i++){
		sum+=mus[i];	//前mon-1个月的天数相加。
	}
	day_s=sum+day;     //前mon-1个月的天数加上第mon月的天数==所求天数
	if(((year%4==0&&year%100!=0)||(year%400==0))&&mon>=3){
		printf("%d年是瑞年\n",year); //判断是否是瑞年,如果是瑞年则三  月后的天数加一。
		day_s+=1;  
	}
	else printf("%d年不是瑞年\n",year);
	     printf("%d年%d月%d日是%d年的第%d天\n",year,mon,day,year,day_s);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

☆*往事随風*☆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值