读书人

一个简单的题目出错了帮忙来看看,该

发布时间: 2012-03-04 11:13:34 作者: rapoo

一个简单的题目出错了,帮忙来看看
输入某年某月某日,判断这一天是这一年的第几天。
提示: 1,以3月5日为列,应该先把前两个月的天数加起来,然后再加上5天即为本年的第几天。
2,需要考虑闰年的特殊情况,如果输入的年份是闰年且输入的月份大于3时,需要考虑多加一天。

这是我自己做的,但是错了,哥哥姐姐门帮忙改一下``x是指最后结果

switch(month)
{
case 12:
day += 31;
case 11:
day += 30;
case 10:
day += 31;
case 9:
day += 30;
case 8:
day += 31;
case 7:
day += 31;
case 6:
day += 30;
case 5:
day += 31;
case 4:
day += 30;
case 3:
day += 31;

case 2:
/*判断是否是闰年,如果是,2月就加29天,如果不是就加28天*/
if((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0))
day += 29;
else
day += 28;
case 1:
day += 31;

}

x = month - 1 + day;
printf( "\n%d ", x);


[解决办法]
大致写了一下,发现,原来case 12 可以省略的

#include <stdio.h>

int main()
{

int year, month, dat;
int day = 0;
printf( "Please input year, month and date: ");
scanf( "%d %d %d ", &year, &month, &dat);

switch(month-1)
{
case 11:
day += 30;
case 10:
day += 31;
case 9:
day += 30;
case 8:
day += 31;
case 7:
day += 31;
case 6:
day += 30;
case 5:
day += 31;
case 4:
day += 30;
case 3:
day += 31;

case 2:
/*判断是否是闰年,如果是,2月就加29天,如果不是就加28天*/
if((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0))
day += 29;
else
day += 28;
case 1:
day += 31;

}

dat += day;
printf( "\n%d ", dat);

return 0;
}

读书人网 >C++

热点推荐