yzzbianchen 2024-04-05 15:46 采纳率: 25%
浏览 2

小猴编程c++时间胶囊


#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
 
bool monthEnd(int year,int month,int day)
{
    if (day==31) return true;
    else if (day==30&&(month==4||month==6||month==9||month==11)) 
        return true;
    else if (day==29&&month==2)
        return true;
    else if (day==28&&month==2&&(!(year%4==0&&year%100!=0||year%400==0)))
        return true;
    else
         return false;
} 
 
int main()
{
    int year,month,day,m=0;
    scanf("%d-%d-%d",year,month,day);
    cin>>m; 
    for (int i=0;i<m;i++) 
    {
        if (monthEnd(year,month,day)) 
        {
            month++;day=1;
            if (month==13)
            {
                year++;month=1; 
            } 
        }
        else
            day++; 
    }
    printf("%d-%02d-%02d\n",year,month,day);     
    return 0; 
} 

问一下为什么会超时(小猴编程)

  • 写回答

2条回答 默认 最新

  • 关注

    下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    问题分析:

    该程序中出现超时的原因是因为格式输入与scanf函数的语法不符,致使程序陷入了死循环,无法停止。具体来说,scanf函数对于整数类型的变量需要传入指针(即&变量名),而该程序中只传入了变量名,导致输入错误,程序一直循环运行,出现超时。

    解决方案:

    • 将scanf函数的格式参数改为"%d-%d-%d",且对于第二行m的输入,应该使用cin进行输入。这样可以避免格式输入时出现错误。
    • 在调用scanf函数之前,应该对每个变量进行初始化,否则可能导致程序输出错误结果。

    修改后的代码如下:

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月5日

悬赏问题

  • ¥30 搭建面包板由NE555N和SN74LS90N组成的计时电路时出了问题
  • ¥15 无源定位系统的时差估计误差标准差
  • ¥15 请问这个代码哪里有问题啊
  • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
  • ¥15 通过GaussianView进行结构微调消除虚频
  • ¥15 调用transformers库
  • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
  • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
  • ¥15 openpcdet自制数据集评估bev精度和3d精度相同
  • ¥15 excel 上下按钮 显示行