int year = 2008;
int month = 8;
int day = 8;
int a;
switch(year%=4)//余数不为零即为平年
case 0:
if(month>1)//区分出包不包含二月
{
a=(month-2)*30+day+29;
//减2是因为:假设他是三月八号(假设是平年) 那么总天数a=(3-2)*30+28+8=64天 以此类推
}
case
{
a=day;
}
printf("第%d天",a);
break;
default:
if(month>1)
{
a=(month-2)*30+day+28;//减2是因为:假设他是三月八号(假设是平年) 那么总天数a=(3-2)*30+28+8=64天 以此类推
}
case
{
a=day;
}
printf("第%d天",a);
break;
先不谈语法结构还有中文符号之类的种种问题。
a=(month-2)*30+day+29;这个的话,一个月有31天30天 你这个算法是不成立的。从根本上就是错的。
你看看我的代码。
#include <stdio.h>
int main()
{
int year = 2008;
int month = 8;
int day = 8;
int r=0,days=0,yue=month;
if(((year%4==0&&year%100!=0)||year%400==0))
r=1;
while(yue>1)
{
switch(yue-1)
{
case 4:
case 6:
case 9:
case 11:days+=30;break;
case 2:days+=28+r;break;
default:days+=31;break;
}
yue--;
}
days+=day;
printf("%d年%d月%d日是该年的第%d天",year,month,day,days);
return 0;
}