#include <stdio.h>
int main()
{
/* 定义需要计算的日期 */
int year = 2008;
int month = 8;
int day = 8;
/*
* 请使用switch语句,if...else语句完成本题
* 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
* 小编还是希望大家独立完成哦~
*/
int date = 0;
switch(month)
{
case 1 :
date += 8;
case 2 :
if(year%400==0||(year%4==0&&year%100!=0))
{
date += 29;
}
else
{
date += 28;
}
case 3 :
date += 31;
case 4 :
date += 30;
case 5 :
date += 31;
case 6 :
date += 30;
case 7 :
date += 31;
case 8 :
date += 31;
case 9 :
date += 30;
case 10 :
date += 31;
case 11 :
date += 30;
case 12 :
date += 31;
break;
}
printf("%d年%d月%d日是该年的第%d天",year,month,day,date);
return 0;
}
你执行的是case(8)后面一直到break的语句吧?要加也应该是加前面几个月的天数。其次,2月8的话,和2月的天数没关系,和1月的天数有关系。
#include <stdio.h>
int main()
{
/* 定义需要计算的日期 */
int year = 2008;
int month = 1;
int day = 2;
int date = 0;
int i=month;
while(--i)
switch(i)
{
case 1 :
date += 31;
break;
case 2 :
if(year%400==0||(year%4==0&&year%100!=0)) date += 28;
else date += 29;
break;
case 3 :
date += 31;break;
break;
case 4 :
date += 30;break;
break;
case 5 :
date += 31;break;
case 6 :
date += 30;break;
case 7 :
date += 31;break;
case 8 :
date += 31;break;
case 9 :
date += 30;break;
case 10 :
date += 31;break;
case 11 :
date += 30;break;
case 12 :
date += 31;break;
}
printf("%d年%d月%d日是该年的第%d天",year,month,day,date+day);
return 0;
}