脚本宝典收集整理的这篇文章主要介绍了跑步锻炼(蓝桥杯),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
这道题我一天写了两次,第一次只想快点写出来,一个字,干,
结果用switch写出来一个大块头
代码如下
#include<stdio.h>
int run(int i)
{
if((i%400==0||(i%4==0&&i%100!=0))) return 1;
else return 0;
}
int main()
{
int weeknum=0,monthnum=0,i,j,day=0,weekmonth=0;
for(i=2000;i<2020;i++)
for(j=1;j<=12;j++)
{
switch(j)
{
case 1:if((day-2)%7==0) weekmonth+=1;day+=31;monthnum+=1;break;
case 2:if((day-2)%7==0) weekmonth+=1;if(run(i)) day+=29; else day+=28;monthnum+=1;break;
case 3:if((day-2)%7==0) weekmonth+=1;day+=31;monthnum+=1;break;
case 4:if((day-2)%7==0) weekmonth+=1;day+=30;monthnum+=1;break;
case 5:if((day-2)%7==0) weekmonth+=1;day+=31;monthnum+=1;break;
case 6:if((day-2)%7==0) weekmonth+=1;day+=30;monthnum+=1;break;
case 7:if((day-2)%7==0) weekmonth+=1;day+=31;monthnum+=1;break;
case 8:if((day-2)%7==0) weekmonth+=1;day+=31;monthnum+=1;break;
case 9:if((day-2)%7==0) weekmonth+=1;day+=30;monthnum+=1;break;
case 10:if((day-2)%7==0) weekmonth+=1;day+=31;monthnum+=1;break;
case 11:if((day-2)%7==0) weekmonth+=1;day+=30;monthnum+=1;break;
case 12:if((day-2)%7==0) weekmonth+=1;day+=31;monthnum+=1;break;
}
}
for(j=1;j<10;j++)
{
switch(j)
{
case 1:if((day-2)%7==0) weekmonth+=1;day+=31;monthnum+=1;break;
case 2:if((day-2)%7==0) weekmonth+=1;if(run(i)) day+=29; else day+=28;monthnum+=1;break;
case 3:if((day-2)%7==0) weekmonth+=1;day+=31;monthnum+=1;break;
case 4:if((day-2)%7==0) weekmonth+=1;day+=30;monthnum+=1;break;
case 5:if((day-2)%7==0) weekmonth+=1;day+=31;monthnum+=1;break;
case 6:if((day-2)%7==0) weekmonth+=1;day+=30;monthnum+=1;break;
case 7:if((day-2)%7==0) weekmonth+=1;day+=31;monthnum+=1;break;
case 8:if((day-2)%7==0) weekmonth+=1;day+=31;monthnum+=1;break;
case 9:if((day-2)%7==0) weekmonth+=1;day+=30;monthnum+=1;break;
}
}
day+=1;monthnum+=1;
weeknum=(day-3)/7+1;
int all=day+weeknum+monthnum-weekmonth;
printf("%d",all);
return 0;
}
代码的啰嗦程度不敢恭维,
还好结果对了
没办法,程序太丑,自己都嫌弃,所以我马上又写了一次,
这次先理了理思路再写的,看着就简洁多了。
第二次的代码如下
#include<stdio.h>
int run(int i)
{
if((i%400==0||(i%4==0&&i%100!=0))) return 1;
else return 0;
}
int main()
{
int month[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
int i,j,day=0,monthnum=0,weeknum=0,weekmonth=0;
for(i=2000;i<=2020;i++)
{
if(run(i)) month[2]=29;
else month[2]=28;
for(j=1;j<=12;j++)
{
if(i==2020&&j==10) break;
if((day-2)%7==0) weekmonth+=1;
monthnum+=1; day+=month[j];
}
}
weeknum=(day-3)/7+1;
int all=day+1+weeknum+monthnum+1-weekmonth;
printf("%d",all);
return 0;
}
代码直接少了一半多,不错不错。
答案也没问题
改 ~~真理啊!
以上是脚本宝典为你收集整理的跑步锻炼(蓝桥杯)全部内容,希望文章能够帮你解决跑步锻炼(蓝桥杯)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。