本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
整个活,弄一个switch语句不带break:)
话不多说,直接上代码。
#include<stdio.h>
int main(){
int year,month,day;
int sum = 0;
scanf("%d/%d/%d",&year,&month,&day);
switch(month-1)
{ case 11: sum+=30;
case 10: sum+=31;
case 9: sum+=30;
case 8: sum+=31;
case 7: sum+=31;
case 6: sum+=30;
case 5: sum+=31;
case 4: sum+=30;
case 3: sum+=31;
case 2:
if(year%4==0&&year%100!=0||year%400==0) sum+=29;
else sum+=28;
break;
case 1: sum+=31; case 0: sum==0; }
sum+=day;
if(year%4==0&&year%100!=0||year%400==0)
{
if (month>2)
sum++;
}
printf("%d",sum);
return 0; }
其实最后一步可以再简略一些的,只是PTA有识别点,检测不出来。
本来想做完这个九点回家,结果卡这一分卡了十分钟,才发觉是识别点的问题。
简化思路如下,很简单,把month>2 一起放到大的条件句里面,这样就不用套括号了。但pta平台谨慎使用!