定时炸弹

原题描述:
给定炸弹放置的起始时间,和定时天数,输出炸弹的爆炸时间。
我自创的代码如下:

#include<stdio.h>
int *o,*p,*q;
int runyear(int y)
{
 if(y%10==0)
 {
  if(y%400==0)
  {
   return 1;
  }
  else return 0;
 }
 else 
 {
  if(y%4==0&&y%100!=0)
  {
   return 1;
  }
  else return 0;
 }
}
int runmonth(int y,int m)
{
 int s;
 if(runyear(y))
 {
  if(m<=7) 
  {
   if(m==2) s=29;
   else if(m%2!=0) s=31;
      else s=30;
  }
  else if(m>7)
     {
      if(m%2==0) s=31;
      else s=30;
     }
 }
 else if(!runyear(y))
 {
  if(m<=7)
  {
   if(m==2) s=28;
   else if(m%2!=0) s=31;
      else s=30;
  }
  else if(m>7)
     {
      if(m%2==0) s=31;
      else s=30;
     }
 }
 return s;
}
int zadan(int y,int m,int d,int b)
{
 int i;
 for(i=1;i<=b;i++)
 {
  d++;
  if(d>runmonth(y,m))
  {
   d=1;
   m++;
   if(m>12)
   {
    m=1;
    y++;
   }
  }
 }
 o=&y;p=&m;q=&d;
 if(m>=10)
 {
  if(d>=10)
  {
   printf("%d年%d月%d日 ",y,m,d);
  }
  else
  {
   printf("%d年%d月0%d日 ",y,m,d);
  }
 }
 else
 {
  if(d>=10)
  {
   printf("%d年0%d月%d日 ",y,m,d);
  }
  else
  {
   printf("%d年0%d月0%d日 ",y,m,d);
  }
 } 
}
int xinqi(int y,int m,int d)
{
 int y0,m0,d0,xq=4;
 y0=1998;m0=1;d0=1;
 while(1)
 {
  d0++;
  xq++;
  if(xq>7)
  {
   xq=1;
  }
  if(d0>runmonth(y0,m0))
  {
   d0=1;
   m0++;
   if(m0>12)
   {
    m0=1;
    y0++; 
   }
  }
  if(y0==y&&m0==m)
  {
   if(d0==d)
   {
    if(xq==1)
    {
        printf("星期一\n");
       }
           else if(xq==2)
       {
        printf("星期二\n");
       }
           else if(xq==3)
       {
        printf("星期三\n");
       }
           else if(xq==4)
       {
        printf("星期四\n");
       }
           else if(xq==5)
       {
        printf("星期五\n");
       }
           else if(xq==6)
       {
        printf("星期六\n");
       }
           else if(xq==7)
       {
        printf("星期日\n");
       }
       break;
   }
  }
 }
}
main()
{
 char a[100][100];int n,b[100],y[100],m[100],d[100],i;
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
  scanf("%s %d",a[i],&b[i]);
 }
 for(i=0;i<n;i++)
 {
  y[i]=(a[i][0]-'0')*1000+(a[i][1]-'0')*100+(a[i][2]-'0')*10+(a[i][3]-'0');
  if(a[i][6]=='-')
  {
   m[i]=(a[i][5]-'0');
   if(a[i][8]=='\0')
   {
    d[i]=(a[i][7]-'0');
   }
   else 
   {
    d[i]=(a[i][7]-'0')*10+(a[i][8]-'0');
   }
  }  
  else
  {
   m[i]=(a[i][5]-'0')*10+(a[i][6]-'0');
   if(a[i][9]=='\0')
   {
    d[i]=(a[i][8]-'0');
   }
   else
   {
    d[i]=(a[i][8]-'0')*10+(a[i][9]-'0');
   }
  }
 }
 for(i=0;i<n;i++)
 {
  zadan(y[i],m[i],d[i],b[i]);
  xinqi(*o,*p,*q);
 }
}

还是需要用到一个前提:1998年1月1日是星期四,这很重要,然后注意主题思想就是区分闰年和闰月。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值