鹿见青山 2024-01-09 14:23 采纳率: 97.9%
浏览 7
已结题

pta上日期哪里写错了吗照不出来哪里出错

输出后天日期
run(int year)
{
if((year%4==0&&year%100!=0)||year%400==0)
    return 1;
    else 
        return 0;//是闰年的返回1,平年返回0
}
#include <stdio.h>
int main()
{
int year,month,day;
    scanf("%d-%d-%d",&year,&month,&day);
    int ret=run(year);
    if(month==1||3||5||7||8||10)
    {
if(day<=29&&day>=1)
{
printf("%d.%.2d.%.2d",year,month,day+2);
}
        if(day==30)
            printf("%d.%.2d.01",year,month+1);
           if(day==31)
            printf("%d.%.2d.02",year,month+1);
    }
     if(month==4||6||9||11)
     {
         if(day<=28&&day>=1)
printf("%d.%.2d.%.2d",year,month,day+2);
if(day==29)
    printf("%d.&.2d.01",year,month+1);
                 if(day==30)
            printf("%d.%.2d.02",year,month+1);
     }
    if(month==2)
    {
if(ret==1) //闰年
{
if(day>=1&&day<=27)
    printf("%d.%.2d.%.2d",year,month,day+2);
    if(day==28)
        printf("%d.03.01",year);
    if(day==29)
        printf("%d.03.02",year);
}
        if(ret==0) //平年
        {
if(day<=26)
    printf("%d.%.2d.%.2d",year,month,day+2);
    if(day==27)
        printf("%d.03.01",year);
    if(day==28)
        printf("%d.03.02",year);
        }
    }
    if(month==12)
    {
if(day<=29&&day>=1)
    printf("%d.%.2d.%.2d",year,month,day+2);
       else  if(day==30)
            printf("%d.01.01",year+1);
       else if(day==31)
            printf("%d.01.02",year+1);
    }
    return 0;
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-09 16:24
    关注

    【以下回答由 GPT 生成】

    首先,你可以使用C语言标准库中的time.h头文件和其相关函数来处理日期和时间。可以使用time函数获取当前日期和时间,然后通过计算得出明天的日期。

    以下是解决该问题的代码示例:

    #include <stdio.h>
    #include <time.h>
    
    // 函数原型
    void getTomorrowDate();
    
    int main() {
       // 调用函数获取明天的日期
       getTomorrowDate();
    
       return 0;
    }
    
    void getTomorrowDate() {
       time_t t = time(NULL);  // 获取当前时间的时间戳
       struct tm tm = *localtime(&t);  // 时间戳转换为当地时间
    
       // 获取当前日期
       int day = tm.tm_mday;  // 当月的第几天
       int month = tm.tm_mon + 1;  // 月份,需要+1
       int year = tm.tm_year + 1900;  // 年份,需要+1900
    
       // 判断是否是闰年
       int isLeapYear = 0;  // 默认不是闰年
    
       if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
          isLeapYear = 1;  // 是闰年
       }
    
       // 判断月份天数
       int daysInMonth;
    
       switch (month) {
          case 2:
             if (isLeapYear) {
                daysInMonth = 29;
             } else {
                daysInMonth = 28;
             }
             break;
          case 4:
          case 6:
          case 9:
          case 11:
             daysInMonth = 30;
             break;
          default:
             daysInMonth = 31;
             break;
       }
    
       // 计算明天的日期
       day++;
    
       if (day > daysInMonth) {
          day = 1;
          month++;
    
          if (month > 12) {
             month = 1;
             year++;
          }
       }
    
       // 输出明天的日期
       printf("明天的日期是:%d-%02d-%02d\n", year, month, day);
    }
    

    通过以上代码,我们首先获取当前日期和时间的时间戳,然后将时间戳转换为当地时间,得到当前日期的年、月、日。接下来,我们根据闰年的判断和不同月份的判断,计算出明天的日期。最后,将年、月、日通过printf函数输出。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 创建了问题 1月9日

悬赏问题

  • ¥15 Qt4代码实现下面的界面
  • ¥15 prism提示我reinstall prism 如何解决
  • ¥15 asp.core 权限控制怎么做,需要控制到每个方法
  • ¥20 while循环中OLED显示中断中的数据不正确
  • ¥15 这个视频里的stm32f4代码是怎么写的
  • ¥15 JNA调用DLL报堆栈溢出错误(0xC00000FD)
  • ¥15 请教SGeMs软件的使用
  • ¥15 自己用vb.net编写了一个dll文件,如何只给授权的用户使用这个dll文件进行打包编译,未授权用户不能进行打包编译操作?
  • ¥50 深度学习运行代码直接中断
  • ¥20 需要完整的共散射点成像代码