时间加一秒

#include<stdio.h>

typedef struct carryMem
{
 int *pCarry;
 int carry;
 int mybit;
 int date[6];
}CARRY;

CARRY isCarry(CARRY car);
int isLeapYear(int year);
int calcDays(CARRY car);

int main(void)
{
 int i = 0;
 int j = 0;
 int date[6];
 CARRY mainCar;
 printf("\t请输入年,月,日,时,分,秒。\n");
 printf("\t年份范围1990~2050。\n");
 for(i = 0; i < 6;i++)
 {
  scanf("%d",&date[i]);
 }
 for(i = 3; i < 6;i++)
 {
  if (date[i]<0||date[i]>60)
   printf("日期格式不对,请重新输入。\n");
 }
 if (date[0]>2050 || date[0]<1990 || date[1]>12 || date[1]<1 || date[2]<1 || date[2]>31)
  printf("日期格式不对,请重新输入。\n");
 else if ((isLeapYear(date[0]) && (date[1] == 2) && (date[3] > 29)) || (!isLeapYear(date[0]) && (date[1] == 2) && (date[3] > 28)))
  printf("日期格式不对,请重新输入。\n");
 else
 {
  mainCar.pCarry = date;
  mainCar.carry = 0;
  mainCar.mybit = 5;
  for(i = 0; i < 6;i++)
  {
   mainCar.date[i] = date[i];
  }
  mainCar = isCarry(mainCar);
  for(j = 0;j < 6;j++)
  printf("%d ",mainCar.date[j]);
  //todo
  }
 
}
//进位处理。 
CARRY isCarry(CARRY car)
{
 int comp = 0;
 switch(car.mybit)
 {
  case 5: comp = 60;break;
  case 4: comp = 60;break;
  case 3: comp = 24;break;
  case 2: comp = calcDays(car);break;
  case 1: comp = 12;break;
  case 0: comp = 2050;break;
 }
 if((car.date[car.mybit] + car.carry + 1) < comp)
 {
  car.date[car.mybit]++;
  return car;
 }
 else
 {
  while(((car.date[car.mybit] + car.carry + 1) == comp) && car.mybit > 0)
  {
   car.date[car.mybit] = 0;
   car.carry = 1;
   car.mybit--;
   isCarry(car);
  }
  return car;
 }
}
//判断year是否是闰年。
int isLeapYear(int year)
{
 if ((year/400 == 0))
  return 1;
 else if ((year/100 != 0) && (year/4 == 0))
  return 1;
 else return 0;
}
//计算对应月份的天数
int calcDays(CARRY car)

 if (isLeapYear(car.date[0]) && car.date[1] == 2)
  return 29;
 else if (!isLeapYear(car.date[0]) && car.date[1] == 2)
  return 28;
 switch(car.date[1])
 {
  case 11 :
  case 9:
  case 6:
  case 4: return 30;
   break;
  default: return 31;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值