plapapyjh 2022-03-27 15:06 采纳率: 43.5%
浏览 41
已结题

C++初学者,关于动态内存分配的问题

img

img


我是刚接触C++,碰到动态内存分配的一个题,第一个是要求,第二个是我自己写了一半写不下去的,麻烦看一下,能给个完整代码,要是能有详细一点的注释就太感谢了

  • 写回答

1条回答 默认 最新

  • 关注

    需要二维动态数组解决,用户交互自己做吧。

    #include <iostream>
    
    int main()
    {
        int cntClass = 0; //班级数量
    
        std::cin >> cntClass;
    
        if (cntClass <= 0) //班级数量小于零,退出
        {
            return 0;
        }
    
        int **scoresPtr = new int *[cntClass](); //建立二维数组用于存放成绩
        int *peopleCnt = new int[cntClass]();    //建立数组,存放每个班级人数
    
        for (int cnt = 0; cnt != cntClass; ++cnt)
        {
            int peopleNum = 0; //初始化班级人数
            std::cin >> peopleNum;
            if (peopleNum <= 0) //人数少于0,清理内存,退出
            {
                for (int cnt = 0; cnt != cntClass; ++cnt)
                {
                    delete[] scoresPtr[cnt];
                }
                delete[] scoresPtr;
                delete[] peopleCnt;
                return 0;
            }
            peopleCnt[cnt] = peopleNum;          //设定某班的人数
            scoresPtr[cnt] = new int[peopleNum]; //初始化某班的成绩数组
            for (int i = 0; i != peopleNum; ++i)
            {
                std::cin >> scoresPtr[cnt][i];
            }
        }
    
        int x = 0;
        int y = 0;
        std::cin >> x >> y;
        //若输入的x,y不在合理区间,退出
        if ((x >= 0 && x < cntClass) && (y >= 0 && y < peopleCnt[x]))
        {
            std::cout << scoresPtr[x][y] << std::endl;
        }
    
        //清理内存
        for (int cnt = 0; cnt != cntClass; ++cnt)
        {
            delete[] scoresPtr[cnt];
        }
        delete[] scoresPtr;
        delete[] peopleCnt;
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月4日
  • 已采纳回答 3月27日
  • 创建了问题 3月27日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效