You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++提交myprogramminglab报非法修改内存错误该如何修复

问题修正方案

核心错误点

  • 违反作业要求自定义了date类:作业明确要求仅调用7.1a中预定义的Date类,自定义类不仅不符合要求,还可能和平台提供的Date类实现冲突
  • 缺少<string>头文件引用:代码中使用了std::string类型但未引入对应头文件,会引发未定义行为
  • 数组越界风险:未对输入的月份值做合法性校验,当输入月份小于1或大于12时,访问monthName[month-1]会触发数组越界,也就是平台提示的非法内存修改问题

修改后代码

#include <iostream>
#include <string>
// 若平台要求引入7.1a的Date类头文件,此处添加 #include "Date.h" 即可
using namespace std;

int main()
{
    int month;
    int day;
    int year;
    
    const string monthName[12] = {"January","February","March","April","May","June","July",
    "August","September","October","November","December"};

    cout << "date information: ";
    cin >> day >> month >> year;
    
    // 月份合法性校验,避免数组越界
    if (month < 1 || month > 12) {
        // 可根据作业要求调整错误处理逻辑,此处默认设为1避免崩溃
        month = 1;
    }
    
    Date newDate(month, day, year);
    newDate.showDate();
    cout << monthName[month-1]<< " " << day << ", " << year << endl;
    cout << day << " " << monthName[month-1] << " " << year << endl;
    
    return 0;
}

注意事项

  • 若平台预定义的Date类构造函数参数顺序不是月/日/年,可根据7.1a的类定义调整传入参数的顺序
  • 若作业要求必须用Date类的成员函数实现后两种格式输出,可删除自行实现的monthName相关逻辑,调用Date类对应的方法输出即可

内容的提问来源于stack exchange,提问作者Learning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 05:54:04