4、一年第几天问题
时间:2010-03-30 来源:280552108
【程序4】
题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
int d, m, y, sum, leap;
printf("请按(例如2010,03,30)格式输入年,月,日\n");
scanf("%d,%d,%d", &y, &m, &d);
switch(m){
case 1:
sum = 0;
break;
case 2:
sum = 0 + 31;
break;
case 3:
sum = 0 + 31 + 28;
break;
case 4:
sum = 0 + 31 + 28 + 31;
case 5:
sum = 0 + 31 + 28 + 31 + 30;
break;
case 6:
sum = 0 + 31 + 28 + 31 + 30 + 31;
break;
case 7:
sum = 0 + 31 + 28 + 31 + 30 + 31 + 30;
break;
case 8:
sum = 0 + 31 + 28 + 31 + 30 + 31 + 30 + 31;
break;
case 9:
sum = 0 + 31 + 28 + 31 + 30 + 31 + 30 + 31+ 31;
break;
case 10:
sum = 0 + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
break;
case 11:
sum = 0 + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
break;
case 12:
sum = 0 + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
break;
default:
printf("你好像看错月份了吧。\n");
exit(1);
break;
}
sum += d;
if(y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))
leap = 1;
else
leap = 0;
if(leap == 1 && m > 2)
sum ++;
printf("今天是今年的第%d天。\n", sum);
return 0;
}
3.输出结果:
andy@andy-laptop:~/work/study/c/100$ ./4
请按(例如2010,03,30)格式输入年,月,日
2010,03,30
今天是今年的第89天。
andy@andy-laptop:~/work/study/c/100$ ./4
请按(例如2010,03,30)格式输入年,月,日
2010,13,31
你好像看错月份了吧。
题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
int d, m, y, sum, leap;
printf("请按(例如2010,03,30)格式输入年,月,日\n");
scanf("%d,%d,%d", &y, &m, &d);
switch(m){
case 1:
sum = 0;
break;
case 2:
sum = 0 + 31;
break;
case 3:
sum = 0 + 31 + 28;
break;
case 4:
sum = 0 + 31 + 28 + 31;
case 5:
sum = 0 + 31 + 28 + 31 + 30;
break;
case 6:
sum = 0 + 31 + 28 + 31 + 30 + 31;
break;
case 7:
sum = 0 + 31 + 28 + 31 + 30 + 31 + 30;
break;
case 8:
sum = 0 + 31 + 28 + 31 + 30 + 31 + 30 + 31;
break;
case 9:
sum = 0 + 31 + 28 + 31 + 30 + 31 + 30 + 31+ 31;
break;
case 10:
sum = 0 + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
break;
case 11:
sum = 0 + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
break;
case 12:
sum = 0 + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
break;
default:
printf("你好像看错月份了吧。\n");
exit(1);
break;
}
sum += d;
if(y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))
leap = 1;
else
leap = 0;
if(leap == 1 && m > 2)
sum ++;
printf("今天是今年的第%d天。\n", sum);
return 0;
}
3.输出结果:
andy@andy-laptop:~/work/study/c/100$ ./4
请按(例如2010,03,30)格式输入年,月,日
2010,03,30
今天是今年的第89天。
andy@andy-laptop:~/work/study/c/100$ ./4
请按(例如2010,03,30)格式输入年,月,日
2010,13,31
你好像看错月份了吧。
相关阅读 更多 +