/*
3.请分别输入年月日三个数值,计算出这是这一年的第几天?
(提示:要考虑闰年和2月的情况)
*/
#include <stdio.h>
void main()
{
int year,month,day,number;
printf("温悉提示!平年:一月31天; 二月28天; 三月31天; 四月30天; 五月31天; 六月30天; 七月31天; 八月31天; 九月30天; 十月31天; 十一月30天; 十二月31天;\n");
printf("温悉提示!闰年:一月31天; 二月29天; 三月31天; 四月30天; 五月31天; 六月30天; 七月31天; 八月31天; 九月30天; 十月31天; 十一月30天; 十二月31天;\n");
printf("请输入你要计算的年份(例:2014,请注意不要小于0!):");
scanf("%d",&year);
printf("请输入你要计算的月份(例:5,请注意月份输入为1-12!):");
scanf("%d",&month);
printf("请输入你要计算的天数(例:23,请注意天数输入为1-31!):");
scanf("%d",&day);
//判断年份、月份、天数输入是否正确,不得超出限制和输入负数;
if((year>1)&&(month>=1&&month<=12)&&(day>=1&&day<=31))
{
//判断是否为闰年;
if((year%4==0&&year/100!=0)||(year%400==0))
{
//根据月份来确定这是这一年的多少天;
switch(month)
{
case 1:
number=day;
break;
case 2:
if(day<=29)
{
number=31+day;
break;
}
else
{
printf("抱歉,你输入的该年份是闰年,闰年的2月最多只有29天!!!请重新运行程序尝试重新输入...");
}
case 3:
number=31+29+day;
break;
case 4:
if(day<=30)
{
number=31+29+31+day;
break;
}
else
{
printf("抱歉,四月份最多只有30天!!!请重新运行程序尝试重新输入...");
}
case 5:
number=31+29+31+30+day;
break;
case 6:
if(day<=30)
{
number=31+29+31+30+31+day;
break;
}
else
{
printf("抱歉,六月份最多只有30天!!!请重新运行程序尝试重新输入...");
}
case 7:
number=31+29+31+30+31+30+day;
break;
case 8:
number=31+29+31+30+31+30+31+day;
break;
case 9:
if(day<=30)
{
number=31+29+31+30+31+30+31+31+day;
break;
}
else
{
printf("抱歉,九月份最多只有30天!!!请重新运行程序尝试重新输入...");
}
case 10:
number=31+29+31+30+31+30+31+31+30+day;
break;
case 11:
if(day<=30)
{
number=31+29+31+30+31+30+31+31+30+31+day;
break;
}
else
{
printf("抱歉,十一月份最多只有30天!!!请重新运行程序尝试重新输入...");
}
case 12:
number=31+29+31+30+31+30+31+31+30+31+30+day;
break;
}
printf("根据您输入的可以断定是这一年的第 %-4d天",number);
}
else
{
//根据月份来确定这是这一年的多少天;
switch(month)
{
case 1:
number=day;
break;
case 2:
if(day<=28)
{
number=31+day;
break;
}
else
{
printf("抱歉,你输入的该年份是平年,闰年的2月最多只有28天!!!请重新运行程序尝试重新输入...");
}
case 3:
number=31+28+day;
break;
case 4:
if(day<=30)
{
number=31+28+31+day;
break;
}
else
{
printf("抱歉,四月份最多只有30天!!!请重新运行程序尝试重新输入...");
}
case 5:
number=31+28+31+30+day;
break;
case 6:
if(day<=30)
{
number=31+28+31+30+31+day;
break;
}
else
{
printf("抱歉,六月份最多只有30天!!!请重新运行程序尝试重新输入...");
}
case 7:
number=31+28+31+30+31+30+day;
break;
case 8:
number=31+28+31+30+31+30+31+day;
break;
case 9:
if(day<=30)
{
number=31+28+31+30+31+30+31+31+day;
break;
}
else
{
printf("抱歉,九月份最多只有30天!!!请重新运行程序尝试重新输入...");
}
case 10:
number=31+28+31+30+31+30+31+31+30+day;
break;
case 11:
if(day<=30)
{
number=31+28+31+30+31+30+31+31+30+31+day;
break;
}
else
{
printf("抱歉,十一月份最多只有30天!!!请重新运行程序尝试重新输入...");
}
case 12:
number=31+28+31+30+31+30+31+31+30+31+30+day;
break;
}
printf("根据您输入的可以断定是这一年的第 %-4d天",number);
}
}
else{
printf("抱歉,您输入的年份、月份、天数有误,请重新运行程序输入...");
}
}