输入一个时间,输出第二天的时间——面试编程题

题目如标题。

本题主要考察边界输入问题。 

#include<stdio.h>
#include<conio.h>
// 定义全局变量数组用于保存一年12个月分各月的天数
int _MONTH[]={{31},{28},{31},{30},{31},{30},{31},{31},{30},{31},{30},{31}};
void ShowDate(int,int,int);
 
void main(void)
{
   char ch='Y';
   int _y,_m,_d;
   _y=_m=_d=0;
    
   do 
   {
      printf("Enter year,month and days:\n");
      scanf("%d,%d,%d",&_y,&_m,&_d);
      if((_y%4==0)&&(_y%100!=0)||(_y%400==0))
          _MONTH[1]=29; // 当前输入的年份若为闰年,则将2月份置为29天
      else _MONTH[1]=28; // 反之为28天 
      ShowDate(_y,_m,_d);
      printf("Press any key to continue.(Press'E' to exit)\n");
      ch=getch();
      fflush(stdin); // 清空缓冲区,防止仅迭代一次。
   } while (ch!='E');
}
 
void ShowDate(int _year,int _month,int _days)
{
// 如果月份为12,且天数为31,所以要调整年、月、日(其它判断与此原理相同)
    if (_month==12&&_days>=31) 
    {
      ++_year;
      _month=_days=1;
      printf("%d,%d,%d\n",_year,_month,_days);
    }
    else if(_days==_MONTH[_month-1])
    {
      ++_month;
      _days=1;
      printf("%d,%d,%d\n",_year,_month,_days);
    }
    else{
        ++_days;
      printf("%d,%d,%d\n",_year,_month,_days);
    }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值