大佬帮忙看看哪里错了
请使用switch语句和if...else语句,计算2008年8月8日这一天,是该年中的第几天。
程序分析:
以5月1日为例,应该先把前4个月的天数加起来,然后再加上1天即本年的第几天。
特殊情况:
在计算闰年的时候,2月是29天
#include <stdio.h>
int main()
{
// 定义需要计算的日期
int year = 2008;
int month = 8;
int day = 8;
int big month=31;//1,3,5,7,8,10,12月
int small month=30;//4,6,9,11月
//天数
int mun;
//检测是否为闰年的状态位
int flag;
switch(month){
//1月
case 1:
mun=big month;
break;
case 2:
//1,2月
mun=big month+28;
break;
case 3:
//1,2,3
mun=(big month*2)+28;
break;
case 4:
//1,2,3,4月
mun=(big month*2)+28+small month;
break;
case 5:
//1,2,3,4,5月
mun=(big month*3)+28+small month;
break;
case 6:
//1,2,3,4,5,6月
mun=(big month*3)+28+(small month*2);
break;
case 7:
//1,2,3,4,5,6,7月
mun=(big month*4)+28+(small month*2);
break;
case 8:
//1,2,3,4,5,6,7,8月
mun=(big month*5)+28+(small month*2);
break;
case 9:
//1,2,3,4,5,6,7,8,9月
mun=(big month*5)+28+(small month*3);
break;
case 10:
//1,2,3,4,5,6,7,8,9,10月
mun=(big month*6)+2month+(small month*3);
break;
case 11:
//1,2,3,4,5,6,7,8,9,10,11月
mun=(big month*6)+28+(small month*4);
break;
case 12:
//1,2,3,4,5,6,7,8,9,10,11,12月
mun=(big month*7)+28+(small month*4);
break;
default:
printf("一年当中只有12个月");
break;
}
//计算天数
mun+=day;
//当改年为闰年时,将状态位设置成1,否则为0
if(year%400==0||(year%4==0 && year%100!=0))
flag=1;
else
flag=0;
//即改年为闰年,2月为29天
if(flag==1&&month>2)
mun+=1;
printf("%d年%d月%d日是改年的第%d天",year,month,day,mun);
return 0;
}