蓝桥杯~跑步锻炼

小蓝每天都锻炼身体。

正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。

小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int cnt=0,a=6,i,j,k;
  for(i=2000;i<=2019;i++){//模拟年
    for(j=1;j<=12;j++){//模拟月
      if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){//闰月时
        for(k=1;k<=31;k++){
          if(a%7==1){
            cnt+=2;
          }
          else{
          	if(k==1){
          	  cnt+=2;
          	}
          	else cnt+=1;
          }
          a++;
        }
      }
      else if(j==4||j==6||j==9||j==11){//平月时
        for(k=1;k<=30;k++){
          if(a%7==1){
            cnt+=2;
          }
          else{
          	if(k==1){
          	  cnt+=2;
          	}
          	else cnt+=1;
          }
          a++;
        }
      }
      else{
        if(i%400==0||(i%4==0&&i%100!=0)){
          for(k=1;k<=29;k++){
            if(a%7==1){
              cnt+=2;
            }
            else{
          	  if(k==1){
          	    cnt+=2;
          	  }
          	  else cnt+=1;
            }
            a++;
          }
        }
        else{
          for(k=1;k<=28;k++){
            if(a%7==1){
              cnt+=2;
            }
             else{
          	  if(k==1){
          	    cnt+=2;
          	  }
          	  else cnt+=1;
            }
            a++;
          }
        }
      }
    }
  }
  for(j=1;j<=9;j++){
      if(j==1||j==3||j==5||j==7||j==8){//闰月时
        for(k=1;k<=31;k++){
          if(a%7==1){
            cnt+=2;
          }
          else{
          	if(k==1){
          	  cnt+=2;
          	}
          	else cnt+=1;
          }
          a++;
        }
      }
      else if(j==4||j==6||j==9){//平月时
        for(k=1;k<=30;k++){
          if(a%7==1){
            cnt+=2;
          }
          else{
          	if(k==1){
          	  cnt+=2;
          	}
          	else cnt+=1;
          }
          a++;
        }
      }
      else{
        for(k=1;k<=29;k++){
          if(a%7==1){
            cnt+=2;
          }
          else{
          	if(k==1){
          	  cnt+=2;
          	}
          	else cnt+=1;
          }
          a++;	
        }
      }
  }
  cnt+=2; //最后加上10月1日的2千米
  printf("%d",cnt);
  return 0;
}

就是一个简单的模拟日历的过程,思路简单模拟稍有些麻烦,总体来说还蛮有意思的

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值