编程训练题:第几天?
方法1:
#include<stdio.h>
int main()
{
// a为年份;b为月份;c为多少号;day为天数
int a,b,c,day;
// 输入多组日期
while(scanf("%d/%d/%d\n",&a,&b,&c)!=EOF)
{
// 判断该年份是否为闰年
if(a%4==0&&a%100!=0||a%400==0)
{
if(b==1){day=c;printf("%d\n",day);}
if(b==2){day=c+31;printf("%d\n",day);}
if(b==3){day=c+60;printf("%d\n",day);}
if(b==4){day=c+91;printf("%d\n",day);}
if(b==5){day=c+121;printf("%d\n",day);}
if(b==6){day=c+152;printf("%d\n",day);}
if(b==7){day=c+182;printf("%d\n",day);}
if(b==8){day=c+213;printf("%d\n",day);}
if(b==9){day=c+244;printf("%d\n",day);}
if(b==10){day=c+274;printf("%d\n",day);}
if(b==11){day=c+305;printf("%d\n",day);}
if(b==12){day=c+335;printf("%d\n",day);}
}
else
{
if(b==1){day=c;printf("%d\n",day);}
if(b==2){day=c+31;printf("%d\n",day);}
if(b==3){day=c+59;printf("%d\n",day);}
if(b==4){day=c+90;printf("%d\n",day);}
if(b==5){day=c+120;printf("%d\n",day);}
if(b==6){day=c+151;printf("%d\n",day);}
if(b==7){day=c+181;printf("%d\n",day);}
if(b==8){day=c+212;printf("%d\n",day);}
if(b==9){day=c+243;printf("%d\n",day);}
if(b==10){day=c+273;printf("%d\n",day);}
if(b==11){day=c+304;printf("%d\n",day);}
if(b==12){day=c+334;printf("%d\n",day);}
}
}
return 0;
}
方法2:
#include<stdio.h>
int main()
{
// 定义年、月、日
int year,month,day;
printf("请输入日期,格式为YYYY/MM/DD\n");
// 输入多组日期
while(scanf("%d/%d/%d\n",&year,&month,&day)!=EOF)
{
// 定义平年的每月天数
int a[]={0,31,28,31,30,31,30,31,31,30,31,30};
// 放置一个空的求和容器
int sum=0;
// 判断该年是否为闰年,若是则将2月天数替换为29
if((year%400==0)||(year%4==0)&&(year%100!=0))
a[2]=29;
// 先求月的天数和
for(int i=0;i<month;i++)
sum=sum+a[i];
// 再加上日的天数
sum=sum+day;
printf("是第%d天\n",sum);
}
return 0;
}
运行结果:
在得到第一个结果之后,要输入“ctrl”+“z”,然后回车,即可得到第二个结果。