输入年、月、日来判断输入的是该年份的第几天
实现方法
主要是通过数组来实现对天数的遍历,首先将每个月的天数存放到一维数组里边,然后根据输入的年、月、日来推算所输入日期是第几天,其中需要注意的就是瑞年的情况,当出现瑞年的时候,三月以及之后的月份都要多加上一天.
运行结果
实现代码
/*头文件*/
#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);
}